0.前言
本文将详细介绍树莓派的串口(UART)配置和使用,并结合一个modbus RTU从机的例子说明树莓派串口的应用。
在开始前说明以下几点
【1】树莓派UART端口的位置
TXD位于HEAD-8
RXD位于HEAD-10
GND位于HEAD-6(可选其他GND)
【2】树莓派的TXD应接USB转串口设备的RXD,当然如果测试失败请交换RXD和TXD的顺序
【3】经过很多次的测试(N>25),当波特率为115200时打开树莓派的UART时,树莓派会莫名其妙的发送一字节0xF8,该问题始终无法解决。不过波特率为9600时并没有此问题,猜测是树莓派硬件或内核驱动问题。
【4】树莓派的串口默认为SSH调试使用,若要使用串口需要修改两处文件。
图1 树莓派 UART位置
1.修改两处文件
【1】/boot/cmdline.txt
【输入以下指令】
sudo nano /boot/cmdline.txt
【删除红色部分】
dwc_otg.lpm_enable=0console=ttyAMA0,115200 kgdboc=ttyAMA0,115200console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
【最终变为】
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
【2】/etc/inittab
【输入以下指令】
sudo nano /etc/inittab
【注释最后一行内容】
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
2.使用minicom
配置完之后便可测试一下树莓派的UART是否正常工作,而minicom便是一个简单好用的工具。minicom是linux平台串口调试工具,相当于windows上的串口调试助手。
【1】minicom安装
sudo apt-get install minicom
【2】minicom启动
minicom -b 9600 -o -D /dev/ttyAMA0
-b代表波特率,-D代表端口,/dev/ttyAMA0类似于windows中的COM1,-o功能暂时未知。
图2 minicon界面
【3】minicom发送内容
直接在控制台中输入内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没人任何反应,千万不要以为minicom没有正常工作。
【4】minicom回显控制
先Ctrl+A,再E。可翻转回显状态(原来回显打开则此事回显关闭)
【5】minicom回显关闭
先Ctrl+A,再Q。
3.使用pyserial
minicom仅满足调试用途,如果需要编程解决问题那么python的serial扩展库——pyserial则是一个不错的选择。pyserial模块非常好用,后面的文章还会分析如何使用pyserial控制GPRS模块。
【pyserial安装】
安装pyserial扩展库有很多种方法,可使用pip或者easy_install安装,也可以直接选择apt-get工具安装。
若使用apt-get工具安装,可输入以下指令
sudo apt-get install python-serial
【串口回显程序】
非常简单的一个串口程序,树莓派通过串口返回接收的内容。
# -*- coding: utf-8 -*
import serial
import time
# 打开串口
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()
4.总结
由于可借助python标准库使得树莓派的串口格外好用。是不是可以拿树莓派做一个Modbus RTU从机,的确可以请期待后面的博文吧。
5.参考资料
分享到:
相关推荐
串行通信协议——UART协议
mini2440-128M开发板裸奔系列——UART接口设计
ARM实验报告——UART0通信、I2C主机读写CAT1025和SPI接口.pdf
ESP8266学习笔记(9)——UART串口使用(NONOS SDK)-附件资源
LPC1768 的UART配置 含中断
UART Rx通过RS232串口,通过串口调试助手将PC端的数据传输到FPGA板子上,通过数码管显示传输的数据
STM32F030 串口程序 希望对学习串口的朋友有用啊 毕竟这样程序不多
树莓派3串口(UART)使用问题的解决方法.docx
在支持的事务之间返回 IDLE(使用HW流控制时) 一个停止位 最低有效位(LSB)优先 用于每个 UART 接口的 GPIO 可以从设备上的任何 GPIO 来选择并且独立地为可配置的。这使得能够在器件的引脚和有效地利用电路板空间...
树莓派3串口(UART)使用问题的解决方法.rar
UART总线 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器。 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样...UART串口学习笔记,与大家分享!
这是AT91SAM9260——UART 的源码
基于树莓派4B与STM32的UART串口通信实验代码,含基于YOLOv5-Lite目标检测的UART通信代码,搭配本人树莓派4B的镜像版本使用效果更佳!(积分不够的朋友点波关注,无偿提供)
1. UART中断工作的机制 UART只有一个发送中断向量和一个接收中断向量,通过判断中断向量的标志来控制数据的收发 1.1 发送机制 当用户想发送数据时,UxIFG产生一个中断,表明UxTXBUF已经准备好接收数据。当UxTXBUF...
UART(通用异步收发器)学习笔记,很好地学习资料,你值得一看!
关于串口UART的数字逻辑设计报告,内容包括1.需求分析2.设计原理3.设计总体框图及流程4.实现和测试等内容
文章目录 串口通信 1. 什么叫串口 ...串行接口 (Serial Interface)是指数据一位一位地顺序传送。 与并行接口相比,其优点也非常明显: 成本低,最少需要一根线就可以完成传输; 没有数据的相互干扰,误码率相对较低;...