你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

spi中断接收模式,被干扰后数据会一直错位。

[复制链接]
any012 提问时间:2017-5-18 16:39 /
阅读主题, 点击返回1楼
收藏 2 评论22 发布时间:2017-5-18 16:39
22个回答
any012 回答时间:2017-5-20 09:00:01
ts2000 发表于 2017-5-20 08:24
把SPI的通信线都接上上拉,同时加上滤波电容。能增强干扰能力。

都有上拉的。当然实际使用未必会因为干扰造成这种结果。我是偶然发现SCLK上引入干扰后会造成这种接收数据持续错位的问题。
主要是想通过软件来解决干扰消失后依旧错位的问题。
寂寞,点燃一支烟 回答时间:2017-5-20 09:13:49
你的时钟线有干扰么,一般时钟我们都不测量的,用示波器,万用表不靠谱
zbber 回答时间:2017-5-20 09:37:47
把SPI的通信线都接上上拉,同时加上滤波电容
无薪税绵 回答时间:2017-5-20 10:10:39
楼主在使能SPI后,
有没有第一时间清除接收缓冲区中断标志?
any012 回答时间:2017-5-20 10:15:00
无薪税绵 发表于 2017-5-20 10:10
楼主在使能SPI后,
有没有第一时间清除接收缓冲区中断标志?

用的HAL库,SPI初始化时有清寄存器。
在程序中是反复调用
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
这个函数来实现中断接收的。这个函数里只有是能SPI接收中断及是能SPI,没有清中断标志。
cldym 回答时间:2017-5-20 11:44:45
把SPI的通信线都接上上拉,同时加上滤波电容。能增强干扰能力。
衔胆栖冰 回答时间:2017-5-20 23:18:55
类似问题我有遇到过。目测你的SPI时钟是连续的,就是什么每个byte(假设初始化为8bit模式)之间的时钟是没有间隙。STM32的SPI时钟默认是字节于字节之间没有间隙。可以尝试,1,查阅数据手册看是否可以设置在每个byte之间的时钟插入间隙(空闲),或者在主机端采用单字节发送略加延时;2,楼上有人已经说了,硬件上加上拉电阻或滤波电容等手段加强硬件的抗干扰能力;3,看看芯片对于有没有IT模式,若有的话采用IT模式传输也是提高数据正确率的一种手段;4,直接采用硬件SPI_CS作为片选脚,而不是采用GPIO外部中断去判断,再来个中断嵌套什么的!从代码和设置模式来看,或许你对SPI从模式理解的可能不是很透彻。SPI从模式,配置中断接收或DMA接收模式,有数据来的时候会自动触发,而不需要你额外加中断去通知它。另外,你的外部中断,GPIO的响应速度或者消抖处理等都可能影响数据通信。还有,你要测SPI通信,最好用示波器,而不是万用表,万用表的原理大家都懂。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

oujisang 回答时间:2017-5-22 17:09:17
SPI采集数据是以时钟的边沿采集数据,当你用表笔触碰时钟线后,造成了时钟脉冲的丢失,导致接收数据端收到的时钟脉冲丢失,采集数据位也就响应丢失,导致整个数据帧都对不齐了。我看你用的是HAL库,在你调用void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)函数里,用判寄存器方式将SPI缓存里的数据读空,问题应该就解决了。其实在调用HAL_SPI_RxCpltCallback函数的时候,是你自己定义的spi2RecvDate缓存数据满了才进到那个回调函数里,其实SPI接收数据缓存里还有数据。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

any012 回答时间:2017-5-22 17:28:46
oujisang 发表于 2017-5-22 17:09
SPI采集数据是以时钟的边沿采集数据,当你用表笔触碰时钟线后,造成了时钟脉冲的丢失,导致接收数据端收到 ...

应该就是SCLK多了脉冲或少了脉冲而使数据帧对不起了。
请教,如何清掉SPI缓存里的数据?
我现在使在每次PC6下降沿重新初始化下SPI2,虽然不再出现这个问题了,但感觉多了太多的操作了。
HAL_SPI_DeInit(&hspi2);        HAL_SPI_Init(&hspi2);  这两个函数也行,但是仍感觉操作太多了。
oujisang 回答时间:2017-5-22 17:33:33
不管三七二十一 直接多读几次就可以了 变量= hspi2.Instance->DR;

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版