完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,所有,我正在工作的代码为ASPICE33 EV256GM104,它是一个由15个从设备组成的SPI总线的主控器。DSPIC33具有4个GPIO输出线,连接到16输出多路复用器。多路复用器的15个输出被用作SPI从机的从机选择信号(第16个输出不连接到任何允许没有从机断言MISO的状态)。因为我控制GPIO输出,所以同步从机选择w的断言是我的责任。dsPIC33的SPI外围设备(即,我需要在时钟输出SPI数据之前充分地断言SS,在传输完成之后充分地解除断言SS)。问题是,当SPI移位寄存器完成传输时,我无法找到可靠的方法来获得SPI外围设备报告。应该检查SPITBF标志可以工作,但是在我写SPI1BUF和外围设备将SPI1SR复制到SPI1SR的时间之间只有1。在SPI1SR被移出之前,它返回到0。此后,我试图配置SPI1中断,以便在SPI1SR被完全移出时触发D输出(SPI1STATBES.SISEL=0B101),并使用它来断言SS线。(如果我也开始使用增强的缓冲模式(SPI1CON2BITSSPEBEN=1),这个中断似乎起作用。然而,我还没有决定如何让这个工作。当使用增强缓冲区时,我只接收第一个字节)。还有其他人尝试以类似的方式与多个SPI从属一起工作吗?你是如何做到这一点的?多谢,赖安
|
|
相关推荐
3个回答
|
|
你正在为SPI写SPI读吗?最后一次读取后,总线空闲。如果您不清空缓冲区,它可能会停止SPI外围设备。
|
|
|
|
不要看发送端-看看接收端。因为SPI是一个交换过程,所以您将收到您发送的每个值的值。正如您所发现的,发送端的大多数标志和中断将告诉您SPI双缓冲区(或增强模式的FIFO)何时能够接受下一个值,该值通常与SPI硬件开始发送当前值相同。获得完整的值,然后您将知道交换已经完成。无论是使用阻塞函数还是ISR,都无关紧要,因为您需要等到每个值交换完毕之后才能取消选择从机。如果您只向奴隶发送一个值,那么增强模式可能对您没有多大帮助。苏珊
|
|
|
|
非常感谢你的建议。查看接收端是我正在寻找的技巧。换句话说,与其等待SPITBF变为0,我应该等待SPIRBF变为1,以指示SPI周期已经完成。非常感谢!
|
|
|
|
只有小组成员才能发言,加入小组>>
4837 浏览 9 评论
1842 浏览 8 评论
1756 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
2966 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2070 浏览 5 评论
467浏览 1评论
1120浏览 1评论
299浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
371浏览 0评论
268浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-4 22:47 , Processed in 0.969233 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号