[求助]新手求助,怎样才能使2片CH340T对联速度达到标称的2M

我的设计是做一个高速串口互联硬件,把2片CH340T在pcb上近距离的连在一起,互相收发数据。

如何才能达到规格书上写的2M速率?

我看100%的340T的驱动都只到115200,这才115K,离2000k差太多。

求各位高手提示需要注意到地方。

查了一下论坛,发现有这样的说明

******************************************************************************* 关于支持非标准波特率或者更高通讯波特率 对于一些非标准波特率或者常规方法无法设置的高速波持率,CH341驱动程序提供特殊方法, 应用程序可以按串口写数据的方式间接设置CH341的串口通讯波特率,方法是: 设置CH341串口波特率为300,然后以ASCII码字符串的命令包写串口, 命令包的首字节必须是#,井字符,对应的十六进制数为23H, 命令包的中间为不超过7个数字表示的波特率,例如字符串9600或者921600等, 命令包的尾字节必须是_,下划线,对应的十六进制数为5FH, 也就是说,将要设置的波特率以字符串的形式置于#字符和_字符之间,作为一个命令包, 在300bps下发送到CH341的串口,那么将被CH341驱动程序解释为修改CH341的波特率, 而不会被作为数据从串口真正发出,当该操作成功返回后, CH341实际工作于指定的新波特率,当然,计算机系统及串口控件仍然以为是工作于300bps, 如果需要再次以这种方法改变波特率,那么首先要用常规方法将CH341的波特率置为300bps。

例如,用串口监控/调试工具软件演示: 1、将CH341串口的波特率选择为300bps(有些工具软件在选择波特率后必须重新打开串口), 发出字符串命令包,为6个ASCII码数据: #9600_ 发送成功后,CH341将实际工作于9600bps 2、将CH341串口的波特率选择为300bps(有些工具软件在选择波特率后必须重新打开串口), 发出字符串命令包,为8个ASCII码数据: #460800_ 发送成功后,CH341将实际工作于460800bps 3、将CH341串口的波特率选择为300bps(有些工具软件在选择波特率后必须重新打开串口), 发出字符串命令包,为9个ASCII码数据: #1000000_ 发送成功后,CH341将实际工作于1000000bps

CH341串口支持50bps到2Mbps的波特率,当应用程序请求CH341改变串口通讯波特率时, CH341驱动程序将波特率换算为波特率除数,然后修改CH341芯片内部的波特率除数寄存器, 所以设置CH341串口的通讯波特率实际上是设置CH341芯片内部的波特率除数寄存器, 由于CH341内部的串口基准位时钟为48/8=6MHz(或12MHz),并且波特率除数只支持整数, 所以在指定波特率时,应该考虑实际换算误差,在波特率大于19200bps时的计算方法是: X = 6000000 除以波特率后的值 Y = X 四舍五入后的值 误差 = ( Y - X ) / X

以下为CH341支持的常用波特率,未注明的基准位时钟为6MHz,未注明的误差小于0.16% 921600 (12MHz), 460800, 307200 (12MHz), 230400, 153600, 128000 (0.27%), 115200, 76800, 57600, 56000, 38400, 33600, 28800, 19200, 14400, 9600, 7200, 4800, 3600, 2400, 1800, 1200, 900, 600, 300, 150, 134.5, 110, 100, 75, 50, 2000000, 1500000, 1200000, 1000000, 750000, 500000, 375000, 250000, 200000, 187500, 100000, 93750, 75000, 50000, 25000, 10000 其它波特率只要误差小于2.5%,CH341都可以支持,计算误差时要考虑两端的误差之和。 但是为了可靠进行通讯,建议不要使用误差大于1%的波特率

-----------------------------------------------------------------------------------------

常规的识别方法是采用软件查询方法: 尝试以串口名称逐个打开,打开成功后通过该串口收发特殊字符串识别CH341串口, 该方法是从“COM1”开始,接着“COM2”逐个尝试打开串口。如果某个串口打开成功, 那么在300bps波特率下向该串口发出特殊字符串“CH341Ser?”,如果在约200毫秒之内 收到应答字符“W”,那么该串口就是当前已经连接的CH341串口。软件设计方法是: 从COM1开始依次打开每个串口,如果打开串口失败则跳过(串口不存在或正在使用), 如果打开成功则设置该串口波特率为300,然后向该串口写入ASCII字符串"$CH341Ser?", 注意大小写,共10个字符一次写入,如果该串口是普通串口,那么通常没有任何返回, 如果该串口是CH341串口,那么应用程序将能接收到一个ASCII字符"W",以此识别CH341。 例如,用串口监控/调试工具软件演示: 将串口的波特率选择为300bps(有些工具软件在选择波特率后必须重新打开串口), 发出特征字符串,为10个ASCII码数据: $CH341Ser? 发送成功后,普通串口没有返回,而CH341串口将返回1个ASCII码: W

----------------------------------------------------------------------------------------- 是发送$CH341Ser?还是$CH340Ser? 请问340和341的方法一样么?我觉得应该一样


还有,340没有341规格书中的TEN#和RDY#,怎么办?


发送$CH341Ser?,CH340T内部已经把TEN#接地了,所以没有该引脚,你参考ch340t的原理图设计就可以了,请参考ch340ds1.pdf


只有登录才能回复,可以选择微信账号登录