当前位置:   article > 正文

【树莓派】树莓派配置串口通讯

树莓派配置串口

配置串口通讯

树莓派的相关资料我们可以看到,树莓派有两个串口可以使用,一个是硬件串口(/dev/ttyAMA0),另一个是mini串口(/dev/ttyS0)。硬件串口有单独的波特率时钟源,性能好,稳定性强;mini串口功能简单,稳定性较差,波特率由CPU内核时钟提供,受内核时钟影响。
树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。

首先运行命令

ls /dev/ser* -al

查看默认串口分配

1、关闭串口控制台

设置树莓派,在Raspberry Pi Configuration中将Serial Port设置为Enable,但是Serial Console都要Disable,即关闭串口控制台功能,然后必须重启树莓派生效。

在这里插入图片描述

也可以在命令行中输入下面命令进行配置:

sudo raspi-config

(1)上面串口的开启的步骤中,是在Raspberry Pi Configuration 界面中,将Serial Port选项ENable,也可以直接修改/boot/config.txt文件。

sudo vim /boot/config.txt
  • 1

在这里插入图片描述

enable_uart=1即为Serial Port Enable串口开启,enable_uart=0即为Serial Port Disable串口关闭。

(2)上面关闭串口控制台功能,是在Raspberry Pi Configuration 界面中,将Serial Console选项Disable,可以直接修改/boot/cmdline.txt文件。

sudo vim /boot/cmdline.txt
  • 1

在这里插入图片描述

cmdline.txt修改前

在这里插入图片描述

cmdline.txt修改后

去掉了“console=serial0,115200”,即Disable了串口控制台功能。

2、设置硬件串口为GPIO串口

接着将串口配置为我们的GPIO串口,对输入sudo nano/boot/config.txt命令,将下面两行内容添加到最后:

dtoverlay=pi3-miniuart-bt force_turbo=1
修改后保存并退出,内容如下图片所示:

在这里插入图片描述

重启树莓派,运行ls /dev/ser* -al,查看两个串口已经互换了位置。

在这里插入图片描述

3、安装minicom

1.minicom安装

sudo apt-get  install minicom
  • 1

2.minicom启动

minicom -D /dev/ttyAMA0 -b 115200
#-b代表波特率,-D代表端口,/dev/ttyAMA0 类似于windows中的COM
  • 1
  • 2

4、minicom测试

连接USB转串口模块,接到树莓派端口上,发送数据,观察树莓派接收

在这里插入图片描述

5、使用pyserial

minicom仅满足调试用途,如果需要编程解决问题那么python的serial扩展库——pyserial则是一个不错的选择。

安装pyserial扩展库有很多种方法,可使用pip或者easy_install安装,也可以直接选择apt-get工具安装。
若使用apt-get工具安装,可输入以下指令

sudo apt-get install python-serial
  • 1

2.串口回显程序
非常简单的一个串口程序,树莓派通过串口返回接收的内容。

import serial
import time
# 打开串口
ser = serial.Serial("/dev/ttyAMA0", 115200)
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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

闽ICP备14008679号