完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
HAL库串口发送就这三种方式1,HAL_UART_Transmit
2,HAL_UART_Transmit_IT 3,HAL_UART_Transmit_DMA。 我需要将串口数据发送到4G平台。1轮询方式不会丢失,但是当发送数据过大时,会造成系统负载,于是我想将发送方式改成2或3。 尝试了两天,在4G平台上接收显示,用中断或者DMA方式都会导致数据丢失,获得不完整帧,小概率的那种。这个问题是出在哪里呢? 有大佬告知一下吗?或者怎么验证解决这个问题。 |
|
相关推荐
1个回答
|
|
当使用中断或DMA方式发送串口数据时,有时会发生字节丢失的问题。这可能是由于数据在发送过程中被丢弃或丢失造成的。
要解决这个问题,可以尝试以下几个步骤: 1. 确保串口的发送缓冲区足够大,以存储你要发送的大量数据。如果发送缓冲区太小,部分数据可能会被丢弃。 2. 在发送数据之前,先检查发送缓冲区是否有足够的空间来存储要发送的数据。如果发送缓冲区已满,则不要进行发送,等待缓冲区空闲后再发送。 3. 如果使用DMA方式发送数据,请确保DMA传输完成中断被正确触发,并在中断中处理传输完成事件。在处理中断时,检查是否有未发送的数据,并进行相应处理。 4. 检查串口发送中断的优先级设置是否正确。如果发送中断的优先级过低,可能导致数据丢失。将发送中断的优先级设置为足够高,以确保及时处理发送事件。 5. 使用适当的错误处理和校验机制。在发送数据之前,可以先对数据进行校验,以确保数据的完整性。在接收端,可以使用校验机制验证接收到的数据的正确性,并进行错误处理。 如果以上步骤都无法解决问题,可以尝试使用一些调试工具或方法来进一步定位问题。可以使用示波器或逻辑分析仪来监视串口信号,以查看数据是否正确发送。另外,可以尝试在发送和接收端添加日志输出,以详细记录数据的发送和接收情况,以便进一步分析问题。 总之,解决串口数据丢失问题需要结合调试工具和方法,逐步排查可能的问题,并尝试不同的解决方案。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1670 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1576 浏览 1 评论
1008 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
698 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1622 浏览 2 评论
1890浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
671浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
533浏览 3评论
554浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
522浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 08:28 , Processed in 0.719745 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号