完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我使用PIC24FJ128GA202读取串行输出芯片7LS165通过SPI,这是SE作为主机。我已经用3线配置了这个接口:SDI,SCK&SS。我遇到的问题是什么时候告诉SPI模块将时钟发送到外围设备在SDI捕获数据?由于PIC24 SPI模块在主模式下不具有对SS的控制,因此我的简单代码如下:PORTBbits.RB2=0;//将并行数据加载到移位寄存器延迟(25);//数据设置时间;PORTBbits.RB2=1;//eable“SHIFT”哑数据=SPI2TBUFL;//clear SPI接收标志//SPI2BUFL=哑数据;//to触发SCK的SPI接收????当(SPI2STATLbits.SPIRBE==true){}rxData=SPI2BUFL;//捕获74LS165中的数据时,如果我没有将哑数据加载到SPI2BUFL,那么由于SPIRBF标志从未设置过,程序似乎将卡在.()上。有人能帮忙吗?谢斯顿
|
|
相关推荐
6个回答
|
|
你需要了解SPI协议是如何工作的。基本上,它是一个A*Exchange协议,它意味着当主机向主机发送一个值时,奴隶只向主机发送一个值。底线-如果你想从奴隶那里读取任何东西,你必须发送那个(哑)值。你还需要遵守黄金法则。从端口读取并写入LAT. Susan
|
|
|
|
嗨,列昂,我用SPI读出一个7LS165看起来太过火了!即使使用SPI,您仍然需要对负载和禁止输出进行细化。我认为进行循环、控制3个输出以及通过进位在数据中移位会更容易。
|
|
|
|
嗨,qhb,我刚刚查了查法内尔:人们还是可以买到的:-)而且你是对的,你可以用SPI来做这件事,把时钟留在硬件里,把客房搬进硬件里。唯一的缺点就是用这个逻辑块只有一个设备可以连接到总线上。用HC5891改变LS165应该解决这个问题。
|
|
|
|
你还没有说明你使用的是哪种模式,上升沿还是下降沿?你只需显示代码就可以节省很多时间。
|
|
|
|
我相信我已经通过修改以下代码找到了解决方案:LATBbits.LATB2=0;//将并行数据加载到移位寄存器dummydata=SPI2TBUFL;//clear SPI接收标志SPI2BUFL=dummydata;//触发SPI2“数据交换”LATBbits.LATB2=1;//启用“SHIFT”<==防止过早的shi。ft.(SPI2STATLbits.SPIRBE==true){}rxData=SPI2BUFL;//捕获74LS165中的数据。在将一个虚拟数据写入SPI2BUFL之后,立即断言ShiIFT(LATBbits.LATB2=1),它似乎阻止了早熟的移位。谢谢您的帮助。
|
|
|
|
嗨,列昂,QHB是莱特。解决方案位于设置中。我猜你需要玩CKP,CKE和SMP位。
|
|
|
|
只有小组成员才能发言,加入小组>>
5250 浏览 9 评论
2037 浏览 8 评论
1958 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3218 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2266 浏览 5 评论
788浏览 1评论
680浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
609浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
685浏览 0评论
582浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 03:40 , Processed in 1.511951 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号