设为首页 收藏本站
开启辅助访问 切换到宽版

  找回密码
  立即注册

QQ登录

只需一步,快速开始

快捷导航
  • 论坛
  • 问答区
  • 单片机教程
  • 单片机DIY
  • 电子DIY
  • 帮助

热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计

搜索
» 论坛 嵌入式/单片机论坛 24小时必答区 USB转RS232线通信时,接收超过64字节数据时,空闲中断在 ...
返回列表 发新帖
查看: 1333|回复: 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字节吗
本主题由 51hei糖糖 执行 审核通过

e1f534ad0ec194dc7aa019ff133b46b.jpg (546.16 KB, 下载次数: 33)

图1

图1

1d988f33cd0af44aee5c2ce06f2014a.jpg (223.06 KB, 下载次数: 34)

图2

图2
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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个是正确的,因挤【仓】发生丢失的部分不再续发,或报警。
只要是通讯的双方存在速率差异,用缓冲【仓】进行通讯【同步】的通讯,就总存在一个【仓】量,以及挤【仓】的时机。
回复

使用道具 举报

5#
ID:744809 发表于 2023-8-11 10:31 | 只看该作者
yzwzfyz 发表于 2023-8-11 10:18
USB与323通讯速率不同,中间必有一个差速器【中转站】,站内也必有一个【仓】,流通慢时,【仓】够用,看不 ...

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

使用道具 举报

6#
ID:1088185 发表于 2023-8-11 10:55 | 只看该作者
本来就不应该以空闲中断来判断帧的结束,这在很多应用都会出问题的。
回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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