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

SPI从机的问题

[复制链接]
uwyciw100 提问时间:2017-8-11 16:31 /
在使用stm32f405做SPI从机,使用cube产生的代码。
当使用HAL_SPI_TransmitReceive_IT时,发现芯片只在复位后的第一次传输时能够接收到数据,以后的传输既没有中断产生,也没有数据更新。
有没有遇到过这种情况的朋友,麻烦给点建议。谢谢。
收藏 评论12 发布时间:2017-8-11 16:31

举报

12个回答
uwyciw100 回答时间:2017-8-18 09:36:42
找到问题原因了,在此记录一下。
当系统存在多个从机时,stm32做从机,在自身不参与通信时,要把SPI外设关掉,当自身参与通信时,再打开。如此操作,便能正常通信了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

奏奏奏 回答时间:2017-8-11 18:51:40
本帖最后由 奏奏奏 于 2017-8-11 18:59 编辑

我这里做过类似的测试,压缩包里面有主机与从机的源代码
坚果云分享下载地址:
http://www.jianguoyun.com/p/Dfyj1LkQyYiWBhjomjI
你需要注意的是设置SPI通讯的波特率,主机与从机都要设置成一样的,如果要排查的话可以先适当调低,测试成功了再调高。
uwyciw100 回答时间:2017-8-14 08:44:57
奏奏奏 发表于 2017-8-11 18:51
我这里做过类似的测试,压缩包里面有主机与从机的源代码
坚果云分享下载地址:
http://www.jianguoyun.com ...

cube的软件里没有设置从机波特率的地方,你是在生成代码后,修改了代码中的配置吗?
张亚飞 回答时间:2017-8-14 09:40:12
uwyciw100 发表于 2017-8-14 08:44
cube的软件里没有设置从机波特率的地方,你是在生成代码后,修改了代码中的配置吗? ...

他说的波特率应该是分频值。
uwyciw100 回答时间:2017-8-14 09:50:44
张亚飞 发表于 2017-8-14 09:40
他说的波特率应该是分频值。

即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。
衔胆栖冰 回答时间:2017-8-14 09:53:17
SPIx global interrupt 使能了没
张亚飞 回答时间:2017-8-14 10:00:27
uwyciw100 发表于 2017-8-14 09:50
即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。 ...

没有用过从机模式,设置时钟应该是没有,从机的时钟是主机给的。
张亚飞 回答时间:2017-8-14 10:03:38
uwyciw100 发表于 2017-8-14 09:50
即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。 ...

建议先不要用中断式接收,我之前调试主机模式时直接用的中断函数,收发也有异常。为了节省时间改成HAL_SPI_TransmitReceive()接收再调试就好了。
uwyciw100 回答时间:2017-8-14 10:11:49
衔胆栖冰 发表于 2017-8-14 09:53
SPIx global interrupt 使能了没

使能了
uwyciw100 回答时间:2017-8-14 10:14:06
张亚飞 发表于 2017-8-14 10:03
建议先不要用中断式接收,我之前调试主机模式时直接用的中断函数,收发也有异常。为了节省时间改成HAL_SP ...

我尝试了HAL_SPI_TransmitReceive,依然有问题。理想状态是用HAL_SPI_TransmitReceive_IT,不过当前总是有各种问题。不使用中断,和使用DMA都尝试。不知道SPI从机会不会像I2C从机一样,芯片存在BUG。
12下一页

所属标签

相似问题

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