完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
配置为主机只接收模式,并开启CRC功能,发现波形会多读一笔数据,调试看代码确实多读了一笔,这里是不是一个bug?
|
|
相关推荐
2个回答
|
|
|
对于带crc校验的SPI接收的话,那个接收API函数里表征数据个数的那个size应该是包含校验数据个数在内的。
函数说明在这个地方稍有点不够清晰。如果开启了CRC校验,又没有为其预留接收存储空间,可能会有些问题。 问题应该是表现在CRC码没接收进来无法完成校验,或者说在DMA循环接收时发生数据滚动难以辨别数据 和校验码。 至于你说的越界,按理是不该发生的。因为即使没为CRC码准备接收空间,当我们基于查询或 中断方式进行 接收时,我们是根据预定的SIZE大小来进行接收和存储的,之后的数据就丢弃了,不会发生越界。 如果是DMA方式,Normal模式的话,传输指定SIZE个数的数据后就停下来,之后的数据也丢弃了,也不会发生越界。 如果是DMA 循环模式,每传输指定SIZE个数的数据后,它就调头重新开始存储了,怎么也不会发生越界。 |
|
|
|
|
|
在STM32G070微控制器中,配置SPI为主机只接收模式并开启CRC功能时,出现多读一笔数据的情况,可能是由于CRC计算和接收数据的处理逻辑导致的。以下是一些可能的原因和解决方法: 1. CRC计算的影响当SPI的CRC功能启用时,SPI控制器会在数据传输结束后自动计算并发送CRC值。这意味着在接收模式下,SPI控制器可能会在接收完实际数据后,再接收一个CRC值。如果你没有正确处理CRC值的接收,可能会导致多读一笔数据。 2. 代码逻辑问题在你的代码中,当CRC功能启用时,你设置了 3. 解决方法为了正确处理CRC值的接收,你需要在读取完实际数据后,再读取CRC值,并忽略它。以下是可能的代码修改: 4. 检查SPI配置确保你的SPI配置正确,特别是数据帧格式(8位或16位)和CRC长度(8位或16位)。如果配置不正确,可能会导致数据接收错误。 5. 调试建议
6. 参考手册详细阅读STM32G070的参考手册,特别是SPI和CRC相关章节,了解SPI控制器在CRC模式下的行为。 通过以上步骤,你应该能够找到并解决多读一笔数据的问题。如果问题仍然存在,建议检查硬件连接和SPI配置,或者联系ST的技术支持获取进一步帮助。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
661浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
941浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 23:55 , Processed in 0.915605 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
439