Linux4.4加载ch34x驱动后配置串口参数异常

使用的芯片是ch340,下载最新的驱动CH341SER_LINUX.ZIP编译加载后出现ttyUSB0设备,对ttyUSB0设备进行操作,发现设备波特率被默认设置为19200,修改ch34x_attach函数中的这部分代码可以改变波特率的:

	ch34x_vendor_read( VENDOR_VERSION, 0x0000, 0x0000,
			serial, buf, 0x02 );
	ch34x_vendor_write( VENDOR_SERIAL_INIT, 0x0000, 0x0000,
			serial, NULL, 0x00 );
	ch34x_vendor_write( VENDOR_WRITE, 0x1312, 0xD982, 
			serial, NULL, 0x00 );
	ch34x_vendor_write( VENDOR_WRITE, 0x0F2C, 0x0004,
			serial, NULL, 0x00 );
	ch34x_vendor_read( VENDOR_READ, 0x2518, 0x0000,
			serial, buf, 0x02 );
	ch34x_vendor_write( VENDOR_WRITE, 0x2727, 0x0000,
			serial, NULL, 0x00 );
	ch34x_vendor_write( VENDOR_MODEM_OUT, 0x009F, 0x0000,
			serial, NULL, 0x00 );

但是无法修改奇偶校验等配置,追踪ch34x_set_termios函数,发现按函数中的参数配置了确没有效果。

请问有没有配置这些参数的文档?

您好,请使用如下链接中的341串口驱动,有使用问题随时与我沟通。链接地址:https://github.com/WCHSoftGroup/ch341ser_linux

驱动使用时无需关注驱动底层实现细节,用户仅需要使用标准串口API操作tty串口设备即可。

Linux通用串口应用例程:https://github.com/WCHSoftGroup/tty_uart


您好,我用您提供的串口程序测试新的驱动发现还是有同样的问题。修改main函数中调用的libtty_setopt函数的参数配置但是没有生效。

	ret = libtty_setopt(fd, 115200, 8, 1, 'e', hardflow);
	if (ret != 0) {
		printf("libtty_setopt error.\n");
		exit(0);
	}

无论libtty_setopt函数的参数修改为何值,在CP端用sscom接收时,只有将sscom的波特率设置为19200接收到的数据才是正确的。

CH340和CH341的驱动是否有区别?

ch34x_vendor_write( VENDOR_WRITE, 0x1312, 0xD982, 
        serial, NULL, 0x00 );
ch34x_vendor_write( VENDOR_WRITE, 0x0F2C, 0x0004,
        serial, NULL, 0x00 );

之前在你们官网下载的驱动,修改0xD982、0x0004为其他值时是可以配置为其他波特率的


您好,CH340和CH341的串口模式使用为同一个驱动。您这边遇到的非常规现象,方便时与按照我的联系方式与我做下沟通。


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