完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我对基于PIC18F8722的项目有问题,希望您能给我一些帮助。我使用SPI来与Master模式下的其他组件进行接口,但是发生了一些非常奇怪的事情。我设置好端口,发送第一字节,发送第二字节,发送第三字节……设备只时钟输出7位!从范围上可以看到,对于最后一个字节,只有7个时钟脉冲,然后代码进入一个永无止境的循环,等待BF设置,当然不会发生这种情况,因为传输没有完成(由于相同的原因,IF也没有触发)。可能,更不用说什么可能引起它。有什么建议吗?问候,DK
|
|
相关推荐
7个回答
|
|
如果你向我们展示你的代码,那就更容易评论了。
|
|
|
|
还是看门狗?也许吧。。。
|
|
|
|
谢谢你的回复,下面是相关的代码:
|
|
|
|
好的想法,WDT却被禁用了。
|
|
|
|
不知道为什么在你写完之后立即从缓冲区读取!交换不可能在两行连续的C代码之间完成。也不能确定为什么要费尽心思在汇编器中编写延迟代码,或者它为什么存在。处理SPI外围设备(使用阻塞代码)的一般方法要等到周期结束。heral可以接收另一个值(仅在交换可能已经在别处启动时才需要),写到缓冲区,等待BF标志从缓冲区设置为读取(当然还有错误处理代码)。lue,只写(忽略接收的值)或者一个完整的交换。已经说了所有这些,如果这个代码在8个字节中有7个字节工作,那么问题就不会来了。我们需要看看在调用该函数的代码中有哪些内容。您可以让测试状态寄存器中的各个位变得简单一些,而不必进行大量的“和”比较和比较。此外,您的设备在SPI外围设备上没有FIFO,因此您不需要“.”循环来测试BF标志——如果设置了,那么读取缓冲区将清除它,而无需重新测试。
|
|
|
|
在那个PIC的rev-A中,SPI外围设备有一些错误,我假设所有卷积的代码都试图解决这些错误。错误似乎只适用于BF标志,它们表明SSPIF标志工作正常。
|
|
|
|
遗憾的是,这是遗留的代码,提供给我的是“工作”,但它不是:(我已经取得了一些进展,并发现问题不在此代码中。我把这个和一个简单的调用例程复制到一个新的项目中,它工作100%。我猜想,一定是别的地方引起了这个问题。
|
|
|
|
只有小组成员才能发言,加入小组>>
5170 浏览 9 评论
2001 浏览 8 评论
1931 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3176 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2228 浏览 5 评论
736浏览 1评论
619浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
508浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
633浏览 0评论
530浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 13:58 , Processed in 1.419426 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号