完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32调试时发现当波特率为9600时串口助手收到程序发送出来的字符只有第一个字符,但是当把USART的波特率设置成38400时,串口助手就能收到完整的命令,哪位大神能解释下原因吗??
下面串口助手接收的信息 |
|
相关推荐
9个回答
|
|
485芯片是半双工芯片,发送的时候要把芯片置为发送模式,在发送完成后芯片置为接收模式,你的问题是在发送完毕后,程序内部状态是发送完毕,但是实质最后一个字节数据在硬件层没有发送完毕,这时候你将485芯片置为接收状态,最后一个字节会发送失败,在波特率越低状态下越明显,所以你检测到发送完成后。人为延时1ms,问题就会解决了,你可以试一试。
|
|
|
|
楼主,从现象来看,是发生了数据丢失,如果不用DMA会不会发生丢失的情况。
|
|
|
|
如果是数据丢失的话也应该是延时的问题感觉,毕竟在38400波特率下数据并没有丢失而只在9600的情况下才丢失了 |
|
|
|
波特率越高,发送时间越短。波特率低的情况下丢失,很多是因为数据传输太快导致。
|
|
|
|
明白,我去试试不用DMA传送数据。
|
|
|
|
DMA发送后中断标识位未清空
|
|
|
|
|
|
|
|
进来看看了,吗,,,,
|
|
|
|
楼主,用DMA传输的时候,能不能一次多传输一些数据,不要一个字节一个字节的传输。如果单字节传输时,考虑判断一下上次数据发送完成,再进行下次发送。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
304 浏览 0 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1043 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1523 浏览 1 评论
526 浏览 0 评论
1059 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 08:22 , Processed in 0.803877 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号