SPI从机的问题
在使用stm32f405做SPI从机,使用cube产生的代码。当使用HAL_SPI_TransmitReceive_IT时,发现芯片只在复位后的第一次传输时能够接收到数据,以后的传输既没有中断产生,也没有数据更新。
有没有遇到过这种情况的朋友,麻烦给点建议。谢谢。
找到问题原因了,在此记录一下。
当系统存在多个从机时,stm32做从机,在自身不参与通信时,要把SPI外设关掉,当自身参与通信时,再打开。如此操作,便能正常通信了。 本帖最后由 奏奏奏 于 2017-8-11 18:59 编辑
我这里做过类似的测试,压缩包里面有主机与从机的源代码
坚果云分享下载地址:
http://www.jianguoyun.com/p/Dfyj1LkQyYiWBhjomjI
你需要注意的是设置SPI通讯的波特率,主机与从机都要设置成一样的,如果要排查的话可以先适当调低,测试成功了再调高。
奏奏奏 发表于 2017-8-11 18:51
我这里做过类似的测试,压缩包里面有主机与从机的源代码
坚果云分享下载地址:
http://www.jianguoyun.com ...
cube的软件里没有设置从机波特率的地方,你是在生成代码后,修改了代码中的配置吗? uwyciw100 发表于 2017-8-14 08:44
cube的软件里没有设置从机波特率的地方,你是在生成代码后,修改了代码中的配置吗? ...
他说的波特率应该是分频值。 张亚飞 发表于 2017-8-14 09:40
他说的波特率应该是分频值。
即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。 SPIx global interrupt 使能了没 uwyciw100 发表于 2017-8-14 09:50
即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。 ...
没有用过从机模式,设置时钟应该是没有,从机的时钟是主机给的。 uwyciw100 发表于 2017-8-14 09:50
即便是分频值,在cube软件上和生成的代码中,关于从机都没有相应的设置。 ...
建议先不要用中断式接收,我之前调试主机模式时直接用的中断函数,收发也有异常。为了节省时间改成HAL_SPI_TransmitReceive()接收再调试就好了。 衔胆栖冰 发表于 2017-8-14 09:53
SPIx global interrupt 使能了没
使能了 张亚飞 发表于 2017-8-14 10:03
建议先不要用中断式接收,我之前调试主机模式时直接用的中断函数,收发也有异常。为了节省时间改成HAL_SP ...
我尝试了HAL_SPI_TransmitReceive,依然有问题。理想状态是用HAL_SPI_TransmitReceive_IT,不过当前总是有各种问题。不使用中断,和使用DMA都尝试。不知道SPI从机会不会像I2C从机一样,芯片存在BUG。
页:
[1]
2