STM32和树莓派串口透传

目录

最近做一个项目需要STM32和进行串口通信,实现原理如下:

第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信;

第二步:确保第一步成功后,将树莓派和STM32连接,进行串口透传。

下面进行具体实验吧~

    树莓派环境串口透传

在开始前说明以下几点:

1、树莓派端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。

2、树莓派的TXD应接USB转串口设备的RXD,当然如果测试失败请交换RXD和TXD的顺序。

树莓派串口通信需要配置环境,主要修改两处,具体如下:

第一处:进入 /boot/cmdline.txt 文件

输入以下指令:

sudo nano /boot/cmdline.txt

删除以下部分:

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

最终变为:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

第二步:进入 /etc/inittab 文件

输入以下指令:

sudo nano /etc/inittab

注释最后一行内容:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

配置完之后便可测试一下树莓派的UART是否正常工作,而minicom便是一个简单好用的工具。minicom是linux/树莓派平台串口调试工具,相当于windows上的串口调试助手。此时需要先安装minicom:

sudo apt-get install minicom

接下来启动minicom工具:

  1. minicom -b 9600 -o -D /dev/ttyAMA0
  2. #-b代表波特率,-D代表端口,/dev/ttyAMA0 类似于windows中的COM1,-o功能暂时未知。

效果如下:

注意:

1、minicom发送内容直接在控制台中输入内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没人任何反应,千万不要以为minicom没有正常工作。

2、minicom回显控制,先Ctrl+A,再E。可翻转回显状态(原来回显打开则此事回显关闭)

3、minicom回显关闭,先Ctrl+A,再Q。

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

收下需要安装pyserial扩展库,可使用pip或者easy_install安装,也可以直接选择apt-get工具安装。 若使用apt-get工具安装,可输入以下指令:

sudo apt-get install python-serial

当以上步骤成功后,就可以使用Python编写树莓派串口透传程序,具体Demo如下:

  1. # -*- coding: utf-8 -*
  2. import serial
  3. import time
  4. # 打开串口
  5. ser = serial.Serial("/dev/ttyAMA0", 9600)
  6. def main():
  7. while True:
  8. # 获得接收缓冲区字符
  9. count = ser.inWaiting()
  10. if count != 0:
  11. # 读取内容并回显
  12. recv = ser.read(count)
  13. ser.write(recv)
  14. # 清空接收缓冲区
  15. ser.flushInput()
  16. # 必要的软件延时
  17. time.sleep(0.1)
  18. if __name__ == __main__:
  19. try:
  20. main()
  21. except KeyboardInterrupt:
  22. if ser != None:
  23. ser.close()

此时实现了树莓派的串口通信功能。

。。。。。。。。。。。。。。。。。

经验分享 程序员 微信小程序 职场和发展