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

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
薛定谔_qq 回答时间:2020-3-15 13:07:57
any012 发表于 2016-11-24 10:36
放到SPI2_IRQHandler(void)函数里,就可以正常再次调用了。
void SPI2_IRQHandler(void)
{

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

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版