找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1673|回复: 7
收起左侧

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

[复制链接]
ID:744809 发表于 2023-8-10 17:29 | 显示全部楼层 |阅读模式
请教一个问题,串口助手用USB转232线(图2)进行通讯时,115200波特率可以发送不限长度的数据,STM32的空闲中断都能当成一帧数据。但是用256000/460800等更高波特率时,一旦超过64字节,就会在接收到64字节时就发生空闲中断,导致接收错误。我用图1 所示的设备,则可以进行超过115200波特率的通信。是因为232芯片本身的缓存空间是64字节吗

图1

图1

图2

图2
回复

使用道具 举报

ID:883242 发表于 2023-8-10 23:07 | 显示全部楼层
STM32一侧的缓存长度是你自己定义的,问大家干什么?
回复

使用道具 举报

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:123289 发表于 2023-8-11 10:18 | 显示全部楼层
USB与323通讯速率不同,中间必有一个差速器【中转站】,站内也必有一个【仓】,流通慢时,【仓】够用,看不出问题;流通快时,速差的积累就体现出来了,会满【仓】。
楼主:您的猜想我赞同。
不过【仓】未必是64字节,但至少不低于64。只不过,发生挤【仓】时,它保证出【仓】的64个是正确的,因挤【仓】发生丢失的部分不再续发,或报警。
只要是通讯的双方存在速率差异,用缓冲【仓】进行通讯【同步】的通讯,就总存在一个【仓】量,以及挤【仓】的时机。
回复

使用道具 举报

ID:744809 发表于 2023-8-11 10:31 | 显示全部楼层
yzwzfyz 发表于 2023-8-11 10:18
USB与323通讯速率不同,中间必有一个差速器【中转站】,站内也必有一个【仓】,流通慢时,【仓】够用,看不 ...

有点奇怪,图1的器件进行通信就没有问题,用图2的线才会出现这个问题。两个都是usb转232芯片
回复

使用道具 举报

ID:1088185 发表于 2023-8-11 10:55 | 显示全部楼层
本来就不应该以空闲中断来判断帧的结束,这在很多应用都会出问题的。
回复

使用道具 举报

ID:41656 发表于 2023-8-11 16:28 | 显示全部楼层
可能是转换器的问题 USB转232通信方式不一样 数据可能是打包一下过去的 你用不同方案的转换器通信效果有差别  我就碰到过CH340转485的线和我做的ModbusRTU模块通信就问题多  用别的就好了 单片机一样的程序
回复

使用道具 举报

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

或许这时走在【爆仓】的边界内侧,短时间内不一定能发现。或许偶尔会发产一次。
不过你已知道大致的通讯频率边界,多留一点富裕量,安全一点。
因为,使用环境的不同,温度,电磁场,线路的阻抗……会有所不同,包括通讯对象的内部时间基准误差,都会产生脉冲信号的边沿误差(上下边沿决定上限频率)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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