当前位置:   article > 正文

树莓派4B串口通讯

树莓派4b串口

博主的树莓派4B烧录的系统为Raspberry Pi OS (64-bit)

首先贴出树莓派的引脚定义。

在这里插入图片描述

下面贴出树莓派4B的串口内容。相比树莓派0、1、2、3的双串口UART0(PL011)和UART1(mini UART),树莓派4B新增了 4 个 PL011 串口共计有6个 UART。对于树莓派0-3使用串口,由于本身串口不够用,故需要禁用下蓝牙(默认配置好的两串口一个用于蓝牙(UART0)另一个是miniUART)。但对树莓派4B来说并不需要,因为有额外 4 个串口可以利用。

在这里插入图片描述
按下面操作开始配置串口:

sudo nano /boot/firmware/config.txt
  • 1

在结尾添加:

dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5
  • 1
  • 2
  • 3
  • 4

重启后查看是否生效:

ls /dev/ttyAMA*
  • 1

观察到:

pi@pi:~ $ ls /dev/ttyAMA*
/dev/ttyAMA2  /dev/ttyAMA3  /dev/ttyAMA4  /dev/ttyAMA5
  • 1
  • 2

下面给出各 UART 串口与 GPIO 对应关系,一般使用建议UART2-5。
在这里插入图片描述

UART0: GPIO14 = TXD0                GPIO15 = RXD0
UART2: GPIO0  = TXD2 -> ttyAMA2     GPIO1  = RXD2 -> ttyAMA2
UART3: GPIO4  = TXD3 -> ttyAMA3     GPIO5  = RXD3 -> ttyAMA3
UART4: GPIO8  = TXD4 -> ttyAMA4     GPIO9  = RXD4 -> ttyAMA4
UART5: GPIO12 = TXD5 -> ttyAMA5     GPIO13 = RXD5 -> ttyAMA5
  • 1
  • 2
  • 3
  • 4
  • 5

测试代码如下,不知道为什么我加了注释后命令行运行会报错,把注释删掉就行了。注意下面我使用的是ttyAMA2,按上面进行接线。

import serial
import time

# 配置串口参数
ser = serial.Serial(
    port='/dev/ttyAMA2',  # 更改为 ttyAMA2 端口,需要确认对应的GPIO引脚
    baudrate=115200,    # 设置波特率
    parity=serial.PARITY_NONE, # 无校验位
    stopbits=serial.STOPBITS_ONE, # 1个停止位
    bytesize=serial.EIGHTBITS, # 8位数据位
    timeout=1  # 超时时间
)

try:
    # 发送'lpf'字符串
    ser.write(b'lpf\n')  # 发送数据,b表示字节字符串
    print("Message sent: lpf")
    time.sleep(0.1)  # 稍微等待,确保数据完全发送

except Exception as e:
    print("Error sending message:", e)

finally:
    ser.close()  # 关闭串口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行后在接收端可以收到 lpf ,结果正常。


后记:年少不知通信好,错把IO当成宝。我现在越来越觉得单片机、边缘板卡等等之间的通信是至关重要的。以前只是点灯大师罢了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/1018878
推荐阅读
相关标签
  

闽ICP备14008679号