Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
问题描述:Demo板没有接任何外设,SPI_Master_Demo程序运行后卡在while (STATUS_SUCCESS != SPI_DRV_MasterGetTransferStatus(4, NULL))状态判断里面
解决办法:SPI的SCK引脚不能有任何接地和接VDD的行为,因为SCK引脚在发波的过程中会检测其输入的信号,如果发现发出去的电平和读回来的电平不相等会一直处于等待状态;
SPI默认会用发出的SCK回读进行数据采样,如果SCK被意外Tie0或者1,或者没有分配对应的引脚,以及分配了多个引脚都会出现上述状态,这个属于硬件异常。
硬件异常,有没有什么好办法解决?这个问题是偶发问题,我司产品调试过程也出现了
具体问题是什么呢?
和这个帖子一样的,问题,一直卡这个while循环里面出不来,实际上SPI数据已经发出来了
检查硬件是没有问题,软件需要怎么解决
检查SPI 时钟线不要被外部硬件强拉低或者拉高
吴超群 检查了硬件没有问题,抓取了数据,实际SPI已经把这一个字节数据发送完成了,但是Busy一直不被清除掉;
可以在while里面加个超时判断,通过超时来报故障并且跳过死循环,这个是通用的一些做法。
yt0069 现在就是用的,这种办法,但是存在一种风险,根因需要明晰一下,是因为硬件上下拉问题或芯片IO驱动问题,还是通讯速率问题;出现错误有些情况是不能被接受的;
另外经过测试,连续发送数据的概率还是相对比较高的,约10%几的概率,出现
可以示波器看一下spi通讯的波形,看看硬件上是否有做阻抗匹配,特别是告诉通讯的时候。如果是通讯线被短路到电源或短路到地的话就得从其他方面上来避免短路问题。
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...