加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

STM32F405使用LL库建立SPI通讯报溢出是什么原因

12/12 10:37
478
阅读需 2 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

既然使用HAL库没问题,硬件方面应该是没啥问题了。配置方面,使用CubeMx的话,操作是一样的,只是生成的工程代码写法有差别。从问题现象来看,感觉完全没有正常通信,还不仅仅溢出的问题。可以看看是否用户代码哪里有问题,我这边使用STM32F4的开发板,选择SPI1自发自收是正常的。发送采用DMA方式,接收采用中断方式。

我添加的用户代码,供参考:

LL_DMA_ConfigAddresses(DMAx, LL_DMA_STREAM, (uint32_t)&SPITXData0],(uint32_t) &(SPI1->DR),LL_DMA_DIRECTION_MEMORY_TO_PERIPH);

LL_DMA_SetDataLength(DMAx, LL_DMA_STREAM, SIZE);

LL_DMA_EnableIT_TC(DMAx, LL_DMA_STREAM);

LL_SPI_EnableDMAReq_TX(SPI1);

LL_SPI_EnableIT_RXNE(SPI1);

LL_DMA_EnableStream(DMAx, LL_DMA_STREAM);
LL_SPI_Enable(SPI1);

根据RXNE事件在其中断里进行数据接收:
SPIRXData[cnt++]=SPI1->DR;

如果中断接收的话,中断处理程序尽量简洁点。可以先将波特率放慢点。

相关推荐

电子产业图谱