找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

USB转RS232线通信时,接收超过64字节数据时,空闲中断在64字节就会触发

查看数: 2359 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-8-10 17:29

正文摘要:

请教一个问题,串口助手用USB转232线(图2)进行通讯时,115200波特率可以发送不限长度的数据,STM32的空闲中断都能当成一帧数据。但是用256000/460800等更高波特率时,一旦超过64字节,就会在接收到64字节时就发生 ...

回复

ID:123289 发表于 2023-8-12 08:17
123156fsadf 发表于 2023-8-11 10:31
有点奇怪,图1的器件进行通信就没有问题,用图2的线才会出现这个问题。两个都是usb转232芯片

或许这时走在【爆仓】的边界内侧,短时间内不一定能发现。或许偶尔会发产一次。
不过你已知道大致的通讯频率边界,多留一点富裕量,安全一点。
因为,使用环境的不同,温度,电磁场,线路的阻抗……会有所不同,包括通讯对象的内部时间基准误差,都会产生脉冲信号的边沿误差(上下边沿决定上限频率)。
ID:41656 发表于 2023-8-11 16:28
可能是转换器的问题 USB转232通信方式不一样 数据可能是打包一下过去的 你用不同方案的转换器通信效果有差别  我就碰到过CH340转485的线和我做的ModbusRTU模块通信就问题多  用别的就好了 单片机一样的程序
ID:1088185 发表于 2023-8-11 10:55
本来就不应该以空闲中断来判断帧的结束,这在很多应用都会出问题的。
ID:744809 发表于 2023-8-11 10:31
yzwzfyz 发表于 2023-8-11 10:18
USB与323通讯速率不同,中间必有一个差速器【中转站】,站内也必有一个【仓】,流通慢时,【仓】够用,看不 ...

有点奇怪,图1的器件进行通信就没有问题,用图2的线才会出现这个问题。两个都是usb转232芯片
ID:123289 发表于 2023-8-11 10:18
USB与323通讯速率不同,中间必有一个差速器【中转站】,站内也必有一个【仓】,流通慢时,【仓】够用,看不出问题;流通快时,速差的积累就体现出来了,会满【仓】。
楼主:您的猜想我赞同。
不过【仓】未必是64字节,但至少不低于64。只不过,发生挤【仓】时,它保证出【仓】的64个是正确的,因挤【仓】发生丢失的部分不再续发,或报警。
只要是通讯的双方存在速率差异,用缓冲【仓】进行通讯【同步】的通讯,就总存在一个【仓】量,以及挤【仓】的时机。
ID:744809 发表于 2023-8-11 09:04
Hephaestus 发表于 2023-8-10 23:07
STM32一侧的缓存长度是你自己定义的,问大家干什么?

不是STM32缓存长度的问题,我同样的程序,用DMA接收不定长的数据,115200波特率可正常接收超过64字节的数据,用460800,只能接收到64字节就触发空闲中断了。我怀疑是这个232芯片内部缓存只有64字节,发完64字节后要等待一会才会发后面的内容。导致接收到的数据不完整。我用图2所示的线就会出现这个问题,用图1所示的器件就没这个问题。问题只可能出现在那根线上,后面我又买了一根其他店的usb转232线,也有这个问题
ID:883242 发表于 2023-8-10 23:07
STM32一侧的缓存长度是你自己定义的,问大家干什么?

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表