请问HAL库如何设置SPI2一直使能接收中断?

2019-07-14 18:26发布


利用STM32的SPI2作为从设备,想中断接收数据,一直没调通。
现在使这样的,再主函数while(1)循环前,调用一次
HAL_SPI_Receive_IT(&hspi2, (uint8_t *)&spi2RecvBuff[0],2);
主循环里,现在基本清空了。SPI的接收回调函数里,通过串口发送一组数据,然后再调用
HAL_SPI_Receive_IT(&hspi2, (uint8_t *)&spi2RecvBuff[0],2);
想通过这种方法,使SPI2一直处于中断接收使能状态。

结果串口一直没有数据发送过来。用示波器测量SCK和MOSI,是有波形的,和主设备发过来的数据一致。

然后将以上的接收中断函数改成,发送中断函数,使设备不停的发送。
结果测量SCK和MISO,有对应波形,串口也有数据发过来。

是不是调用中断接收函数,还需要做些其他操作?

主函数部分:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
谦谦三君子
1楼-- · 2019-07-16 08:30
wenxueshu 发表于 2018-8-23 12:57
放到SPI2_IRQHandler

现在确实是这样做的,但好奇,为什么放到回调函数里就出问题?
小孩子不懂事
2楼-- · 2019-07-16 13:30
 精彩回答 2  元偷偷看……
易元空灭
3楼-- · 2019-07-16 16:43
小孩子不懂事 发表于 2018-8-23 13:31
关注中,也遇到类似的问题,中断始终进不了。都快放弃hal库了

用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态
易元空灭
4楼-- · 2019-07-16 21:28
小孩子不懂事 发表于 2018-8-23 13:31
关注中,也遇到类似的问题,中断始终进不了。都快放弃hal库了

用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态
谦谦三君子
5楼-- · 2019-07-17 02:51
易元空灭 发表于 2018-8-23 14:05
用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态

没接触过DMA,也曾考虑过DMA。但有个疑问,我这个是作为接收设备,需要判断帧首,长度的。用DMA的话,只能循环接收吧?
谦谦三君子
6楼-- · 2019-07-17 06:01
接收是固定长度,且有帧头的;发送同样是固定长度且有帧头,并且,还需要接收帧头时,发送的也是发送帧的帧头。
我觉得DMA不好实现吧。

一周热门 更多>