论坛元老
- 积分
- 3293
- 金钱
- 3293
- 注册时间
- 2016-1-7
- 在线时间
- 541 小时
|
5金钱
本帖最后由 challenger 于 2023-2-24 13:49 编辑
项目是主机是STM32F0芯片,SPI作为主机挂在上面,分别为SCK,MISO, MOSI,CS, IRQ 这几根线。
从机为BLENrg 芯片,也有5根线: SCK,MISO, MOSI,CS, IRQ 这几根线。
分别对应管脚的接法为:
STM32F0 BLENrg
SCK SCK
MISO MISO
MOSI MOSI
CS CS
IRQ IRQ
正常情况下,STM32F0主机,向从机BLENrg芯片,发数据时,只需将主机CS拉低为0,便可以选中从机,顺利发数据到从机。从机向主机主动发数据时,从机BLENrg脚需置高,从而触发主机IRQ脚上升沿中断。检测到中断,主机STM32F0便将CS脚拉低,这时,从机CS处于选中状态,从机便可以发数据到主机了。
但是长久测试时,发现从机突然IRQ脚变高电平为1, 且一直处于1,电平拉不下来,从而导置SPI通信中断,无法继续进行,但是从机的定时器还在走,说明从机没死机,只是电平无法拉低,让电平翻转一下。这样,让从机发数据时,再能将IRQ置高。但是一直为高电平,必须将从机bleNrg 芯片复位键按一下,复位之后,从机又正常与主机双向通信了。 有哪位大神遇到过这么奇怪的问题? 从机IRQ脚电平为何一直为高?我如何强制将其拉低?让SPI通信继续进行???
|
最佳答案
查看完整内容[请看2#楼]
搞定了,在 ErrorCallback中 复位从机SPI总线,然后再在里面重新开启接收发送中断,发生错误时,丟掉一包后,又回归正常。
|