【记录一下】2022 树莓派4B 官方系统Raspbian 串口使用例程

需要了解的一些知识

树莓派3的时候,一共有两个串口。

  • 硬件串口:/dev/ttyAMA0
  • mini串口:/dev/ttyS0

硬件串口有独立的时钟源,通信稳定,但默认分配成了蓝牙功能。可以通过禁用蓝牙等操作来使用这个串口。

而mini串口的时钟源由cpu提供,会随主频的变化而变化,通信不稳定,但可以通过固定CPU主频来稳定通信。

为追求稳定的串口通信,树莓派3需要经过非常复杂的操作才得以实现。

树莓派4增加了四个硬件串口,但需要修改配置来打开。

sudo nano /boot/config.txt

追加以下内容到末尾

dtoverlay=uart2

dtoverlay=uart3

dtoverlay=uart4

dtoverlay=uart5

保存后 reboot 重启系统

查看硬件串口是否可用

ls /dev/ttyA*

如图所示,成功打开额外的硬件串口。

串口与GPIO的对应关系

GPIO14 = TXD0 -> ttyAMA0
GPIO0  = TXD2 -> ttyAMA1
GPIO4  = TXD3 -> ttyAMA2
GPIO8  = TXD4 -> ttyAMA3
GPIO12 = TXD5 -> ttyAMA4
 
GPIO15 = RXD0 -> ttyAMA0
GPIO1  = RXD2 -> ttyAMA1
GPIO5  = RXD3 -> ttyAMA2
GPIO9  = RXD4 -> ttyAMA3
GPIO13 = RXD5 -> ttyAMA4 

树莓派4GPIO引脚图 

测试串口

1、用一条杜邦线,将GPIO0和GPIO1相连。

2、在桌面新建一个py文件

3、写一个简单的测试例子(收到数据后打印出来)

# -*- coding: utf-8 -*
import serial
import time
# 打开串口
ser = serial.Serial("/dev/ttyAMA1", 115200)
def main():
    while True:
        # 获得接收缓冲区字符
        count = ser.inWaiting()
        if count != 0:
            # 读取内容并回显
            recv = ser.read(count)
            print(recv)
            # ser.write(recv)
        # 清空接收缓冲区
        #ser.flushInput()
        # 必要的软件延时
        time.sleep(1)
        ser.write("Hello World".encode('gbk'))
    
if __name__ == '__main__':
#如果本文件作为脚本运行
    try:
        main()
    except Exception:
        if ser != None:
            ser.close()

4、双击打开py文件,运行并查看输出。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值