树莓派使用串口通信【如果总不成功,就看此贴】

前言

我的是树莓派3B,网上看了很多用串口连接树莓派的教程,结果都操作失败了。我的两根USB转TTL线的型号是CH340G和CP2104,windows下使用串口调试工具,只有TX能传入数据没有RX返回数据。短接USB转TTL的TX和RX,测试正常。短接树莓派的TX和RX测试也正常。后面发现不要用插入设备的时候windows默认安装的驱动,虽然看起来默认安装的驱动供应商也是wch.cn。但是这个驱动就是不行,于是我问商家要了驱动,安装后,不管是serial0指向mini串口(ttyS0)还是硬件串口,都能成功用putty连上了树莓派。我的/boot/firmware/cmdline.txt保留console=tty1 console=serial0,115200,我觉得打印点控制台消息影响不大,看看开机启动过程也不错(这里的console=serial0,115200和raspi-config中串口配置的第一个yes有关,既启用login shell)。



操作方法

  • 使用raspi-config命令打开串口功能
    执行raspi-config 键盘选中: Interface Options -> Serial Port -> yes -> yes # 第一个yes是启用login Shell(yes后,/boot/firmware/cmd.txt中会多了console=serial0,115200)。第二个yes是启用串口功能。
    然后重启树莓派,重启后执行 raspi-gpio get就会发现:

     GPIO 14: level=1 alt=0 func=TXD0
     GPIO 15: level=1 alt=0 func=RXD0
    

    查看/boot/firmware/config.txt的[all]字段也会多出一行enable_uart=1

  • 因为树莓派3B的蓝牙会占用硬件串口,所以先停止蓝牙服务。
    systemctl disable hciuart; systemctl stop hciuart # 禁止蓝牙服务启动,停止蓝牙服务

  • 启用硬件串口(可选)
    /boot/firmware/config.txt的[all]字段下添加

    dtoverlay=disable-bt
    

    重启树莓派后,执行
    ls -al /dev/ser* 会发现serial0指向了 ttyAMA0 。

  • 连接USB转ttl和树莓派
    树莓派3B 两排靠近外侧的那排GPIO针,从靠近螺丝孔的开始数,第3、4、5分别是GND、TX、RX

      USB转TTL适配器           树莓派GPIO
                     GND        <==>         GND
                     RXD         <==>         TXD
                     TXD         <==>        RXD
    
  • 安装驱动
    不要使用windows自动识别并安装的驱动,使用这个驱动,在串口调试工具下只能看到TX传输了N字节的数据,RX始终为0个字节。所以需要用商家的驱动。我的usb转ttl线的芯片是CH340G芯片的,我直接使用Setup.exe安装的。另一条usb转ttl线是CP2104芯片的,使用CP210xVCPInstaller_x64.exe来安装驱动。下面的CH340G和CP210*的驱动在64位win10下测试通过。
    链接: https://pan.baidu.com/s/18OtollPteo3niZ3vCualyA?pwd=grep 提取码: grep

  • windows端查看COM口,并设置好。
    在设备管理器中,我们能看到新安装的串口,显示USB-SERIAL CH340(COM5)。设置该串口的波特率为115200

  • putty连接树莓派
    打开putty,选中Serial, 串口号填COM5(每台电脑都不一样,要在设备管理器中查看)。speed填写波特率115200。然后点Open就可以了。注意点击Open后,putty是个黑框框,要敲一下回车,才能看到登录提示。




  • Linux PC怎么通过串口连接树莓派
    可以使用cutecom、putty、minicom, 没错,putty也有linux版本。使用时,linux PC执行lsusb查看一下是否有USB serial适配器,有的话说明usb转ttl适配器已经被识别。执行ls /dev/tty*USB* 就能看到usb转ttl适配器(我的是/dev/ttyCH341USB0)。注意,1-执行ls -l /dev/ttyCH341USB0会发现适配器是root用户,dialout组的,其它用户是无法读写的。所以如果要让普通用户使用串口,那么就要把普通用户加入dialout组。 2-如果使用minicom,请执行minicom -s把Serial Port setup中的HardWare Flow Control 改成no, 否则会异常。minicom具体设置方法参考这个老兄的博文: https://www.cnblogs.com/zhangchaoyang/articles/1926848.html 。 设置好后,直接执行minicom就可以进入树莓派的命令行了。

posted on 2025-09-28 17:44  进取有乐  阅读(340)  评论(0)    收藏  举报

导航