OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3655|回复: 2

[求助] SPI从机通信在使用RTOS情况下出现错误

[复制链接]

5

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-10-11
在线时间
13 小时
发表于 2018-11-6 11:32:55 | 显示全部楼层 |阅读模式
5金钱
STM32F405的SPI3作为从机,使用DMA接收中断,接收中断代码如下:

void SPIx_DMA_RX_IRQHandler(void)
{
    HAL_DMA_IRQHandler(SpiHandle.hdmarx);

    if((aRxBuffer[0])==0x2211&&(aRxBuffer[1]) == 0x4433)
    {
        HAL_SPI_TransmitReceive_DMA(&SpiHandle, (uint8_t*)aTxBuffer, (uint8_t *)aRxBuffer,2);
    }
    else
    {
       ..
    }

}

在不使用MDK的RTOS2前,接收正常,但是一但开启了RTOS2,没有创建任何线程,就会出现错帧,
#ifdef RTE_CMSIS_RTOS2
  /* Initialize CMSIS-RTOS2 */
  osKernelInitialize();

  /* Start thread execution */
  osKernelStart();

#endif


SPI3接收的数据每隔一段时间就出现错帧:


出现错帧的现象

出现错帧的现象


正常数据是 0xaabb 0x8877,5Hz,但是频繁的出现  0xBF46将0xaabb给代替的现象

RTOS必须得使用,   求助各位高手....



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-11-7 02:15:17 | 显示全部楼层
回复

使用道具 举报

5

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-10-11
在线时间
13 小时
 楼主| 发表于 2018-11-7 10:26:45 | 显示全部楼层
本帖最后由 zhtbit 于 2018-11-7 10:27 编辑

感谢原子哥帮顶;
昨天又调试了1byte字节发送,还是使用RTOS2,创建了一个线程,在SPIx_DMA_RX_IRQHandler中断里面置标志,然后在线程里面调用  HAL_SPI_TransmitReceive_DMA 函数,经过测试发现,从机接收到的数据只有一半进入了SPIx_DMA_RX_IRQHandler中断,
但是奇怪的是,主机收到的错误数据每帧都不一样:
G:\360截图20181107102208076.jpg
正确的数据应该是 0x01 0x02 0x03依次递增,现在主机每隔一帧收到一个错误的数据
360截图20181107102208076.jpg
好像操作系统把DMA的接收中断给干扰了...
之前没有搞过RTOS下HAL库的SPI DMA中断接收,感觉很头疼,还请高手不吝赐教...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 18:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表