logo资料库

【树莓派4B学习】十四、树莓派4B串口通信.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
【树莓派4B学习】十四、树莓派 【树莓派 学习】十四、树莓派4B串口通信 串口通信 一、必须要先知道的储备知识 一、必须要先知道的储备知识 树莓派4B的外设一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。 硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠。 mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波 特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了。当然可以固定内 核的时钟频率,如果不考虑功耗的情况下。 树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。 其中红框中就是引出的串口IO,如果我们需要通过UART外接模块,默认情况下必须得使用性能很低的mini串口了,而且随着 恢复硬件串口与GPIO 14/15的映射 内核主频的变化,还会造成波特率的变化导致通信的失败,几乎很难使用。所以我们希望恢复硬件串口与 关系,使得我们能够通过GPIO使用高性能的硬件串口来连接我们的串口设备。 补充:树莓派IO引出的串口默认是用来做控制台使用的(使用串口登录树莓派,类似SSH登录那种),它的初衷是为了在没 有网络接口时,通过串口对树莓派进行相关的配置。 二、关闭串口登录,打开硬件串口调试功能 二、关闭串口登录,打开硬件串口调试功能 在树莓派终端输入sudo raspi-config,依次按照下图所示选择
关闭串口登录功能 打开硬件串口调试功能
然后退出,重启。 三、配置树莓派串口 三、配置树莓派串口 经过第一部分了解到,硬件串口默认分配给板载蓝牙使用,如果想要使硬件串口分配给GPIO,那么就需要配置,这也正是本 节要讲述的。 1、查看当前串口分配方式 、查看当前串口分配方式 在树莓派终端输入ls /dev -al,可以查看到默认的串口分配方式。其中可以看到有如下图所示的一组对应。 serial0即GPIO映射的串口,默认是ttyS0,即mini串口 serial1即板载蓝牙映射的串口,默认是ttyAMA0,即硬件串口。 我们要做的工作便是,将两者映射互相交换。 serial0映射成ttyAMA0,serial1映射成ttyS0。 2、修改配置文件 、修改配置文件 在树莓派终端输入sudo vim /boot/config.txt 在对应的文件末尾加入dtoverlay=pi3-disable-bt 蓝牙使用硬件串口,所以我们在 /boot/config.txt里面加上 dtoverlay=pi3-disable-bt ,ttyAMA0 得以释放,这时候树莓派也自动交换了 ttyAMA0和ttyS0,把serial0 分配给了 ttyAMA0 。 随后,输入 sudo reboot重启树莓派,使修改生效。 3、验证当前串口分配方式 、验证当前串口分配方式 依旧输入在树莓派终端输入ls /dev -al。
四、代码测试 四、代码测试 终于到了,最激动人心的环节了 — 测试。 通过USB-TTL连接树莓派的TXD/RXD连接到PC,并打开PC端的串口助手,设置波特率为9600. 树莓派上,编写4.py,代码如下所示。 # -*- coding: utf-8 -* import serial import time def main(): while True: # 获得接收缓冲区字符 count = ser.inWaiting() if count != 0: # 读取内容并显示 recv = ser.read(count) print recv # 清空接收缓冲区 ser.flushInput() # 必要的软件延时 time.sleep(0.1) if __name__ == '__main__': try: # 打开串口 ser = serial.Serial('/dev/ttyAMA0', 9600) if ser.isOpen == False: ser.open() # 打开串口 ser.write(b"Raspberry pi is ready") main() except KeyboardInterrupt: if ser != None: ser.close() 树莓派运行4.py文件,同时开启PC端串口助手,并注意观察接收框变化
上面PC端串口助手成功打印Raspberry pi is ready,说明树莓派发送到PC端没得问题。 接着测试树莓派接收PC端的消息 树莓派接收也没得问题!!! 至此,树莓派4B的串口通信测试,便成功实现! 参考参考 树莓派3b/4b通用 + 串口配置
树莓派3b+串口配置 树莓派4B如何使用串口与外部进行通信 作者:ReCclay
分享到:
收藏