树莓派4B通过CH340连接电脑实现USART串口通信(C语言以及Python版本)

文章目录

  • 前言
  • 一、启动串口
  • 二、禁用蓝牙(硬件串口与mini串口默认映射对换)
  • 三、查找是否有serial的包
  • 四、CH340分别连接树莓派与电脑
  • 五、python串口通信程序
  • 六、C语言通信程序
  • 总结


前言

树莓派3/4b的外设一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供。在树莓派4代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx。


提示:以下是本篇文章正文内容,下面案例可供参考

一、启动串口

在命令行中输入以下内容:

ls -l /dev

在没有配置过正常情况下看到的应该是:

serial1 -> ttyAMA0

此时,在终端输入:

sudo nano /boot/config.txt

在打开的文件最后面添加:

#ENABLE UART
enable_uart=1

保存退出后,重启树莓派;

reboot

在终端输入:

sudo raspi-config

根据以下步骤进行设置:
选择 Interfacing Options ->Serial ->no -> yes 关闭串口调试功能,打开串口
选择Interfacing Options
树莓派4B通过CH340连接电脑实现USART串口通信(C语言以及Python版本)_第1张图片
选择serial
树莓派4B通过CH340连接电脑实现USART串口通信(C语言以及Python版本)_第2张图片
再选择 no,禁用串口登录功能,将串口用于通信。
再选择 yes,启动串口硬件。

在命令行中输入以下内容:

ls -l /dev

在设置中启用串口后,会发现 /dev目录下变成了两个:

serial0 -> ttyS0 和 serial1 ->ttyAMA0

在这里插入图片描述

二、禁用蓝牙(硬件串口与mini串口默认映射对换)

在终端输入:

sudo nano /boot/config.txt

在打开的文件最后面添加:
(注意:树莓派4b也一样是pi3,但不知具体原因是啥)

dtoverlay=pi3-disable-bt 

修改保存后重启树莓派:

reboot

三、查找是否有serial的包

在终端输入:

pip list

查找是否有serial的包,若没有,则在终端输入:

pip install serial

四、CH340分别连接树莓派与电脑

树莓派4B通过CH340连接电脑实现USART串口通信(C语言以及Python版本)_第3张图片

  1. CH340的USB口端连接电脑USB口
  2. CH340的5P插针分别与树莓派串口引脚相连
  3. VCC <——> VCC、RXD <——> TXD、TXD <——> RXD、GND <——> GND
    树莓派4B通过CH340连接电脑实现USART串口通信(C语言以及Python版本)_第4张图片

五、python串口通信程序

# -*- coding: utf-8 -*
import serial
import time
# 打开串口,配置波特率为9600,电脑端接收数据波特率也应相同
ser = serial.Serial("/dev/ttyAMA0", 9600)
def main():
    while True:
        # 获得接收缓冲区字符
        count = ser.inWaiting()
        if count != 0:
            # 树莓派读取电脑端发送数据,并将此数据重新发送至电脑端
            recv = ser.read(count)
            ser.write(recv)
        # 清空接收缓冲区
        ser.flushInput()
        # 必要的软件延时
        time.sleep(0.1)
    
if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        if ser != None:
            ser.close()

六、C语言通信程序

//使用ch340实现树莓派和电脑端的通信,文件名“uartex.c”
#include
#include
#include
 int main(void)
{
    int fd,n;
    char a;
    if((fd = serialOpen("/dev/ttyAMA0",115200))<0)//若无法通信,可检查更改串口波特率
    {
        printf("serial ERROR!!!\n");
    }
    printf("This is just for test================== BY WAN\n");

    serialPuts(fd,"START NOW====>");
    while(1)
    {
        printf("Please input:\n");
        //键盘输入想要发送的数据,并发送
        scanf("%c",&a);
        if(a>0)
        {
            serialPutchar(fd,a);
        }
        //检测对端是否有数据发来,若有则打印出来
        while(n=serialDataAvail(fd)>0)//检测兑端是否有数据
        {
            printf("====返回的数据为===>%c\n",serialGetchar(fd));//若有返回数据,则打印输出
        }
    }
    return 0;
}

总结

通过CH340连接树莓派与电脑,在树莓派中运行Python或C语言程序,在电脑端打开串口助手即可验证是否通信成功。

你可能感兴趣的:(树莓派,Python,python,c语言)