当前位置:   article > 正文

树莓派4B实现和电脑之间的UART串口通信_树莓派4b 和电脑端串口通信

树莓派4b 和电脑端串口通信

树莓派型号:4B

固件版本:2022-04-04-raspios-bullseye-armhf-full.img 

一,初始方案

接线:

 gpio14(板子上的8号针脚)是树莓派的TXD,和TTL转usb模块的RXD连接在一起。

 gpio15(板子上的10号针脚)是树莓派的RXD,和TTL转usb模块的TXD连接在一起。

14号口接地。

代码:

  1. import serial
  2. import time
  3. # 配置串口
  4. com = serial.Serial("/dev/ttyS0", 115200) #发送提示字符
  5. com.write(b'Hello 01Studio!')
  6. while True:
  7. count = com.inWaiting()
  8. if count != 0:# 读取内容并打印
  9. recv = com.read(count)
  10. print(recv)#发回数据
  11. com.write(recv)# 清空接收缓冲区
  12. com.flushInput()# 延时 100ms,接收间隔
  13. time.sleep(0.1)

效果:连接pc机之后用pc端的串口助手进行数据收发,发现打印出来的字符串全是乱码,而且有时候传送同样的数据打印出来的信息是不同的(这一点非常诡异)。原因是树莓派默认使用的是ttys0接口,这个接口非常不稳定,几乎不能传送正确的数据.

二,改进方案

用稳定性更高ttyAMA0替换ttys0,具体步骤如下:

首先打开pi configuration——>interfaces,将serial port和serial console改成下面的样子:

重启后打开终端,输入指令:

ls /dev -al

 

 

 我们看到serial0默认使用的是稳定性很差的ttys0,下面要把serial0和serial1调换一下:

终端输入指令:

sudo nano /boot/config.txt

回车后在最后一行添加代码:

dtoverlay=disable-bt

按ctrl+o,按下回车保存,再按ctrl+x退出。

最后禁用蓝牙,输入终端指令:

sudo systemctl disable bluetooth

重启后会发现接口映射已经调换了:

 最后再把代码中的接口调用换成ttyAMA0就行了

  1. import serial
  2. import time
  3. # 配置串口
  4. com = serial.Serial("/dev/ttyAMA0", 115200) #发送提示字符
  5. com.write(b'Hello 01Studio!')
  6. while True:
  7. count = com.inWaiting()
  8. if count != 0:
  9. # 读取内容并打印
  10. recv = com.read(count)
  11. print(recv)
  12. #发回数据
  13. com.write(recv)
  14. # 清空接收缓冲区
  15. com.flushInput()
  16. # 延时 100ms,接收间隔
  17. time.sleep(0.1)

 再打开pc端的串口助手进行数据收发,这个时候会发现数据传输无误了。

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

闽ICP备14008679号