STM32F0系列Hal库SPI库BUG
来源:互联网 发布:买家虚拟物品淘宝介入 编辑:程序博客网 时间:2024/06/08 17:46
在使用STM32Cube_FW_F0_V1.8.0版本的HAL库时,应用中需要使用SPI总线,两片STM32F03x系列微控制器分别作为主机和从机使用。并且为了提高通讯效率和通讯可靠性,通讯时使用DMA交互数据并使能SPI控制器自带的CRC校验功能。在实际使用时发生以下问题:当从机使用循环DMA模式时,从机接收到的数据会错位。但是关闭CRC校验功能后,从机缓冲区接收到的数据就不会发生错位了。考虑原因是CRC校验位长度处理异常导致的。从机在实际使用过程中调用了如下函数:
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData,
uint16_t Size)
此函数是使用DMA交互SPI数据,从机DMA的收发通道采用DMA_CIRCULAR模式,从机仅在初始化时调用一次该函数,以后不需要重复调用,因为DMA控制器会自动循环内存地址。
由于关闭CRC校验功能后数据错位的现象消失,所以考虑从CRC校验的设置方面解决。参考STM32F0xx系列参考指南,在SPI控制器的章节找到如下说明:
可以看出,在使能CRC校验时,DMA通道的长度设置是有变化的。
ST的库中长度设置如下,并没有针对CRC功能设置额外长度。
现在按下图修改:
修改后数据DMA数据和CRC校验功能均正常,数据不再顺序错乱。
关于此BUG,没有找到ST官方的BUG报告email,所以发布博文以供网友参考。
阅读全文
0 0
- STM32F0系列Hal库SPI库BUG
- spi HAL库改之
- STM 32 SPI调试之HAL库的调试
- STM32F0之SPI(使用固件库)
- STM32F4系列DFU程序设计(HAL库)
- 对STM32 HAL库的一些思考(一)SPI通信的数据格式问题
- STM32F0系列之---BOOT(1)
- HAL库-STM32F4 HAL_GPIO_Init()
- HAL库--20170905
- STM32F0多路ADC采样中的BUG和解决方案
- Android HAL 开发 系列
- stm32f0系列在SWD模式下载时复位失败
- STM32F0电机套件 BLDC PMSM电机控制方案 配 STM32 F0C3.2库移植例程
- STM32F0库应用技术笔记——iar工程建立&时钟管理
- 5.15版本 ARM MDK编译STM32F0编译标准外设库例程报错处理
- HAL库-STM32F4 UART-IT
- STM32 HAL库 IO输入
- stm32f1xx HAL库配置说明
- Redhat7.2安装Docker
- JS中arguments的用法
- Android 那些你不可错过的好书
- Action
- vim的跨文件复制粘贴
- STM32F0系列Hal库SPI库BUG
- LoadRunner性能测试关注指标及结果分析
- 如何让一个div垂直水平居中
- 【html】在html中加入背景音乐
- JQuery中2个等号与3个等号的区别
- nrf51822烧录
- 重写checkbox的样式
- 机器学习专业名词中英文对照
- Android开发