
配置为主机只接收模式,并开启CRC功能,发现波形会多读一笔数据,调试看代码确实多读了一笔,这里是不是一个bug?
|
STM32G070RET6,中断优先级配置没有效果
1
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象,如何解决?
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象是,如何解决?
STM32G030F6P6写FLASH最后8字节出错
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
STM32G0 STL 自检库 问题咨询
基于STM32的锂动力电池检测装置的设计
STM32的低功耗模式
哪里能下载ST官方展示的NUCLEO-G071RB配合X-NUCLEO-GFX01M1运行TouchGFX案例的源程序?
函数说明在这个地方稍有点不够清晰。如果开启了CRC校验,又没有为其预留接收存储空间,可能会有些问题。
问题应该是表现在CRC码没接收进来无法完成校验,或者说在DMA循环接收时发生数据滚动难以辨别数据
和校验码。
至于你说的越界,按理是不该发生的。因为即使没为CRC码准备接收空间,当我们基于查询或 中断方式进行
接收时,我们是根据预定的SIZE大小来进行接收和存储的,之后的数据就丢弃了,不会发生越界。
如果是DMA方式,Normal模式的话,传输指定SIZE个数的数据后就停下来,之后的数据也丢弃了,也不会发生越界。
如果是DMA 循环模式,每传输指定SIZE个数的数据后,它就调头重新开始存储了,怎么也不会发生越界。
你可以关闭CRC功能再进行接收,然后比较下。
主机先收了一笔CRC帧,然后存在了hspi->pRxBuffPtr里,接着多收了一笔从机随机的数据,但这个数据是丢弃的,代码注释这里是接收CRC帧,我觉得这个写法有bug,应用的时候要注意定义buffer数组的大小,不然会越界。