树莓派学习笔记——UART使用

   日期:2020-05-05     浏览:533    评论:0    
核心提示:本文将详细介绍树莓派的串口(UART)配置和使用,并结合一个modbusRTU从机的例子说明树莓派串运维

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=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=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.参考资料 【1】minicom使用 国外博客 【2】elinux python-serial 安装pyserial及例程等



 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服