(TODO)
import machine
import utime
# 定义 UART 参数
baudrate = 9600
bit_time = 1 / baudrate
# 定义 GPIO 引脚
tx_pin = machine.Pin(0, machine.Pin.OUT)
rx_pin = machine.Pin(1, machine.Pin.IN)
# 初始化 TX 引脚为高电平(空闲状态)
tx_pin.value(1)
def uart_send_byte(byte):
# 发送起始位(低电平)
tx_pin.value(0)
utime.sleep(bit_time)
# 发送数据位(LSB first)
for i in range(8):
tx_pin.value((byte >> i) & 1)
utime.sleep(bit_time)
# 发送停止位(高电平)
tx_pin.value(1)
utime.sleep(bit_time)
def uart_receive_byte():
# 等待起始位(低电平)
while rx_pin.value() == 1:
pass
# 等待半个位时间,进入数据位的中间
utime.sleep(bit_time / 2)
# 接收数据位
byte = 0
for i in range(8):
if rx_pin.value():
byte |= (1 << i)
utime.sleep(bit_time)
# 等待停止位
utime.sleep(bit_time)
return byte
# UART Echo 功能实现
while True:
byte = uart_receive_byte()
print("Received:", chr(byte)) # 打印接收到的数据
uart_send_byte(byte) # 回显接收到的数据