uwyciw100 发表于 2017-8-11 16:31:46

SPI从机的问题

在使用stm32f405做SPI从机,使用cube产生的代码。
当使用HAL_SPI_TransmitReceive_IT时,发现芯片只在复位后的第一次传输时能够接收到数据,以后的传输既没有中断产生,也没有数据更新。
有没有遇到过这种情况的朋友,麻烦给点建议。谢谢。

uwyciw100 发表于 2017-8-18 09:36:42

找到问题原因了,在此记录一下。
当系统存在多个从机时,stm32做从机,在自身不参与通信时,要把SPI外设关掉,当自身参与通信时,再打开。如此操作,便能正常通信了。

奏奏奏 发表于 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。
页: [1] 2
查看完整版本: SPI从机的问题