CH9344无法输出RTS信号,求助

我的开发板需要多串口通讯,于是使用了CH9344L芯片。系统为Linux 5.6,使用论坛上的官方驱动,版本1.15。编译加载驱动后,我发现串口/dev/ttyWCHUSB0, /dev/ttyWCHUSB1等设备都可以正常发送接收,通讯基本正常。然而,/RTS信号似乎始终不受控制。


我使用了如下的测试程序:

/* 尝试粘贴include语句,但发现论坛系统会把尖括号当成HTML代码。只好删除,请自行加入。*/
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include sys/ioctl.h
#include unistd.h


int main(int argc, char **argv)
{
    if (argc != 2) {
        printf("Usage: ./dtr /dev/ttyX\n");
        return 1;
    }
    int fd = open(argv[1], O_RDWR | O_NOCTTY);
    printf("Open %s, fd %d\n", argv[1], fd);
    
    /* set RTS and DTR */
    ioctl(fd, TIOCMBIS, TIOCM_RTS);
    ioctl(fd, TIOCMBIS, TIOCM_DTR);
    
    sleep(1);
    
    /* clear RTS and DTR */
    ioctl(fd, TIOCMBIC, TIOCM_RTS);
    ioctl(fd, TIOCMBIC, TIOCM_DTR);
    
    close(fd);
    return 0;
}


在SiLabs CP2102串口开发板上,运行该程序可以正常产生RTS或者DTR信号。但同样的程序在CH9344上似乎完全无效,0号串口的/RTS引脚(第20针)和1号串口的/RTS(第12针)始终处于低电平状态。不仅没有信号,而且我发现这RTS引脚似乎处于高阻抗输入而非输出状态:我在RTS与3.3V电源之间连了个LED灯(串联470欧电阻),发现芯片引脚上的电压也随之上升到3.3V(虽然这时候LED灯是反向偏置的),断开LED灯后电压又下降到0 V。


以下为Linux内核驱动的调试日志。

[180312.372767] [471983] tty ttyWCHUSB1: ch934x_tty_install, index:1
[180312.372778] [471983] usb_wch 2-1:1.0: ch934x_port_activate
[180312.373106] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.373982] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.374200] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.374677] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.374679] [471983] tty ttyWCHUSB1: ch934x_tty_set_termios
[180312.374990] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.375097] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.375213] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.376109] [471983] usb_wch 2-1:1.0: ch934x_cmd_out--->
[180312.376112] [471983] usb_wch 2-1:1.0: ch934x_port_dtr_rts
[180313.376315] [471983] usb_wch 2-1:1.0: ch934x_tty_close
[180313.376319] [471983] usb_wch 2-1:1.0: ch934x_port_dtr_rts
[180313.376320] [471983] usb_wch 2-1:1.0: ch934x_port_shutdown, portnum:1
[180313.376413] [471325] usb_wch 2-1:1.0: ch934x_tty_cleanup

可见ch934x_port_dtr_rts()函数确实被调用了,但不知为何没有效果。


您好,在系统下执行命令"lsusb -v -d 1a86:e018",把bcdDevice信息提供下。如下所示:

image.png


bcdDevice为35.00。


您好,V35版本不支持Modem及硬件流控功能,您可以采购我司新芯片替换或者单独给我发下邮件,我们提供在线更新工具给您这边。


知道了,多谢答复。下次再用CH9344时会注意采购新版本。


请问在WINDOWS下如何查看CH9344的版本是35还是37呢?



您好,可以留个邮箱,我发下您确认方法。


个人信息保护,已隐藏

多谢


您好,已发您邮箱。


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