【问题标题】:Prolific PL2303 serial port to 250000bpsProlific PL2303 串口至 250000bps
【发布时间】:2013-06-08 13:40:06
【问题描述】:

我需要使用 c 以 250kbps 的速度运行我的 /dev/ttyUSB0(多产 pl2303 USB-RS232 转换器)。我到处查看,每个人都说最接近的可实现速度是 230400 bps(http://lxr.linux.no/#linux+v3.9.5/drivers/usb/serial/pl2303.c 和几行之后(第 325 行)“注意:仅支持 baud_sup 中定义的值!”)。 但我 100% 确定它可以完成,因为在 windows 上(使用 c# 默认 SerialPort 组件)我可以将 250000 设置为波特率,它会很乐意以那个速度输出数据(用示波器测量,所以它是如第 325 行的 linux 驱动程序中所述,不切换到最近的可用或 9600!)。

有人知道在 linux 中设置自定义波特率的方法吗?

在你问之前,我已经开发了一种以 250kbps 进行通信的设备,该速度是必需的,并且是我能达到的最高速度而不会出错,所以不,我不能改变它。

【问题讨论】:

  • termios2 不起作用,here 发布的代码将波特率设置为最接近的可用 (230.4k)
  • 看起来这是 PL2303 linux 驱动程序的问题。所有代码都在基于 FTDI 的转换器上运行良好,所以我暂时使用那个。我仍然对 Windows 使用的从时钟为 460800 的设备获取 250k 的技巧感到好奇(从 'setserial -a /dev/ttyUSB0' 获取该信息),所以当我有时间时,我可能会尝试嗅探 Windows 中的 USB 流量。
  • 我怀疑460800 不是端口的内部时钟,而是分频值。无论如何,听起来你正在路上。找到解决方案后,请发布您自己的答案。顺便说一句,Windows 250000 可能只有 250000 左右。我相信你知道波特可以容忍几个 % 的错误。
  • 是linux驱动的问题。从line 333 到第 348 行,驱动程序强制设置波特率。删除该代码后,波特率使用公式12*1000*1000*32 / baud 计算,在 250kbps 时给出的误差为 0%,与我在 Windows 上得到的完全一致。期待官方驱动的改进,如果你知道如何please help me! :)
  • 我们目前正在努力支持 PL2303 驱动程序中的任意波特率:thread.gmane.org/gmane.linux.usb.general/87717/focus=89380

标签: linux serial-port usb


【解决方案1】:

这是linux驱动的问题。从line 333 到第 348 行,驱动程序强制设置波特率。删除该代码后,波特率使用公式12 * 1000 * 1000 * 32 / baud 计算,在 250kbps 时给出的误差为 0%,与我在 Windows 上得到的完全一致。期待官方驱动的改进。

【讨论】:

  • 注意:自从我发表了这条评论,在对邮件列表进行讨论之后,驱动程序已被编辑。要查看我所指的代码,请关注link
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2017-06-28
相关资源
最近更新 更多