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

HAL库如何设置SPI2一直使能接收中断?

[复制链接]
any012 提问时间:2016-11-24 09:28 /
阅读主题, 点击返回1楼
收藏 2 评论35 发布时间:2016-11-24 09:28
35个回答
韩教授 回答时间:2017-7-25 09:45:12
首先非常感谢楼主的精心回复,没想到一年前的帖子楼主也能及时回复,真是什么感谢。我现在不开启接收中断模式,直接HAL_SPI_Receive()读,不过也同样遇到接收数据错位问题。就是在重启主机或从机后,接收数据偶尔会发生右移移位的问题。我怀疑是我的从机Cs信号没起作用,一直是低电平信号。可能是我没有很好理解透彻NSS的作用吧。
韩教授 回答时间:2017-7-25 20:31:29
今天测试了一下,个人认为 1:从机在接收主机发来数据之前,从机应先与主机开机,从机开机后一段时间,主机在开机,可避免接收数据错位问题。2:接收数据过程中,若有一方关机了,再次再次开机后,会偶尔存在接收数据存在错位现象。这种情况下,应将两方都关机,重复情况1操作,这样就可以避免接收数据错位现象。   具体怎么从根本上解决接收数据错位问题,我还在苦恼中,哎呀。。。。。。。。。。。。
any012 回答时间:2017-7-26 09:31:57
韩教授 发表于 2017-7-25 20:31
今天测试了一下,个人认为 1:从机在接收主机发来数据之前,从机应先与主机开机,从机开机后一段时间,主机 ...

谢谢你的总结。
也做过这样的实验,接收数据错误后,在spi错误处理回调函数里,软件复位单片机。但总觉得复位单片机不是太好的办法。能在合适的时候只复位SPI就好了,不过我重新初始化SPI,感觉仍是会出现错位的现象。
april1818 回答时间:2017-11-21 21:36:34
any012 发表于 2017-7-26 09:31
谢谢你的总结。
也做过这样的实验,接收数据错误后,在spi错误处理回调函数里,软件复位单片机。但总觉得 ...

在搜问题的时候 看到了好多楼主发的帖子 感觉跟我遇到的问题类似。。请问你现在解决了么
我在while(1)前调用了HAL_SPI_Receive_IT while(1)里为空。。然后在回调函数了再次调用了中断接收。。我用示波器测过片选 SCK 是对的。。但是接收到的信号时钟是0。。请问你知道这是怎么回事么
Jason8057 回答时间:2018-3-19 12:47:53
mark
hu12319941115 回答时间:2020-3-15 13:07:57
any012 发表于 2016-11-24 10:36
放到SPI2_IRQHandler(void)函数里,就可以正常再次调用了。
void SPI2_IRQHandler(void)
{

楼主我按照你的方法把回调放入中断服务函数,主机不停地发数据,按道理从机应该不停地进入中断。目前只有开机进入一次中断,且接收到数据也不对。。。
1234

所属标签

相似问题

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