测试了一下CH32V的串口

因为论坛里偶有抱怨串口在高波特率下误码率很高的问题,我今天做了一次测试:

用WCH LinkE与CH340相连,程序如下:

from serial import Serial
from random import randint, randbytes
from time import sleep

#BAUD = 921600
BAUD = 115200*4

ser1 = Serial('/dev/ttyUSB0', BAUD, timeout=1)
ser2 = Serial('/dev/ttyACM0', BAUD, timeout=1)

err_1_2 = 0
err_2_1 = 0

for i in range(10000):
    print('Round', i)
    l = randint(1, 300)
    tx_buf = randbytes(l)
    ser1.write(tx_buf)
    ser1.flush()
    rx_buf1 = ser2.read(l)
    if tx_buf != rx_buf1:
        err_1_2+=1
        print(f'Error comminication 1->2 {err_1_2}, tlen={l}, rlen={len(rx_buf1)}')
        sleep(1)
        ser2.reset_input_buffer()
    ser2.write(tx_buf)
    ser2.flush()
    rx_buf2 = ser1.read(l)
    if tx_buf != rx_buf2:
        err_2_1+=1
        print(f'Error comminication 2->1 {err_2_1}, tlen={l}, rlen={len(rx_buf1)}')
        sleep(1)
        ser1.reset_input_buffer()

print(f'Total: err_1_2 {err_1_2}, err_2_1 {err_2_1}')

经测试,在921600bps下会有100次里面1、2次的错误,在460800、115200下10000次均无错误。

当然,我只是用一个WCH LinkE,不一定具有代表性,但是可以作为一个测试思路分享给各位。

 补充:使用20cm的26号杜邦线连接CH340与LinkE。


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