- 查看开启的通道
dtoverlay -h uart0
- 查看正在使用的uart
ls /dev/ttyAMA*
- 各 UART 串口与 GPIO 对应关系:
GPIO14 = TXD0 -> ttyAMA0
GPIO0 = TXD2 -> ttyAMA1
GPIO4 = TXD3 -> ttyAMA2
GPIO8 = TXD4 -> ttyAMA3
GPIO12 = TXD5 -> ttyAMA4
GPIO15 = RXD0 -> ttyAMA0
GPIO1 = RXD2 -> ttyAMA1
GPIO5 = RXD3 -> ttyAMA2
GPIO9 = RXD4 -> ttyAMA3
GPIO13 = RXD5 -> ttyAMA4
根据上方对应关系,UART0 对应 TXD0 和 RXD0,对应 GPIO14 和 GPIO15,对应 ttyAMA0
注:UART0 对应的 ttyAMA0,UART1 对应的 ttyS0,UART2 到 UART5 对应的 ttyAMA1 到 ttyAMA4。
ls -l /dev
终端输入ls -l /dev,发现只有serial1->ttyAMA0,没有serial0页没有ttyS0
sudo nano /boot/cmdline.txt
删除console=serial0,115200
reboot后,出现ttyS0
sudo nano /boot/config.txt
加上
dtoverlay=disable-bt
reboot后,ttys0和ttyAMA0位置调换了
发送数据:
import serial
import random
import time
uart = serial.Serial(port="/dev/ttyAMA0", baudrate=9600)
while True:
time.sleep(1)
timestamp = round(time.time(),1)
data = {'timestamp':timestamp, 'a':random.randint(1, 100)}
print(data)
uart.write(str(data).encode("gbk"))
电脑端接受数据:
import serial
import time
UART_logger= serial.Serial("COM15", 9600, timeout=0.1)
while True:
inter = ''
while True:
a = UART_logger.read(1)
if a !=b"\n":
inter = inter + a.decode()
else:
break
if len(inter)>0:
print(inter)