← 返回首页
K210串口通讯
发表时间:2024-11-12 02:14:24
K210串口通讯

1.什么是USB TO TTL

TTL全称为Transistor-Transistor Logic,即为双晶体管门电路。TTL电平是指在TTL集成电路中,逻辑“0”和逻辑“1”所对应的电压范围。TTL电平指数字电路中的信号电平,用于表示逻辑“0”和逻辑“1”。在TTL集成电路中,逻辑“0”通常对应的电位比逻辑“1”低。根据TTL电平的检测电路特性,输入端的电位高于2.4V时会被视为逻辑“1”,低于0.8V时则视为逻辑“0”。

常用的单片机,引出来的串口,如果不加其他的接口电路,出来的信号就是TTL电平。

如果需要看串口的打印信息,一般是需要接一个上位机的,常规的就是电脑,而现在的电脑一般的通信借口只有USB。USB是没法和TTL串口直接通信的,因为接口不匹配,电平也不匹配,这时候就需要借助外围的小设备来实现接口与电平的转换。

常规操作是使用CH340这种芯片所制作的USB转串口模块。

2.RX TX 是什么

UART引脚

  1. VCC:供电引脚,一般接3.3V,在很多嵌入式MCU上UART控制器都是内部供电。
  2. GND:接地引脚,两个设备通过UART通信时最好共地,否则数据接收可能会出问题。
  3. RX:数据接收引脚。(接另一方的TX)
  4. TX:数据发送引脚。(接另一方的RX)
  5. RTS:输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。(可以不使用)
  6. CTS:输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。(可以不使用)

UART一般用4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。

通信协议

UART的工作原理是将传输数据的每个字符一位接一位传输,为保证数据的正确收发,通信双方需要统一配置,通常包括配置下面的4个位。

  1. 波特率:衡量数据传输速度的指标。比如波特率为115200,8位数据位,1停止位,无校验位,则数据传输速度为:115200/10*1024=11.25(KB/秒)
  2. 校验位:用来校验资料传送的正确性。通常包括4个校验方式,奇校验(ODD)、偶校验(EVEN)、校验位为0(SPACE)和校验位为1(MARK)。
  3. 数据位:每次传输的数据位数,构成一个字符,通常使用ASCII码。
  4. 停止位:一个字符数据的结束标志。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

3.RX TX 怎么连接

4.串口通讯实例

import sensor, image, time, lcd
from machine import UART,Timer
from fpioa_manager import fm
import utime
import sensor, lcd, image
import uos
from utime import sleep_us

lcd.init(freq=15000000)
sensor.reset()                      # Reset and initialize the sensor. It will
                                    # run automatically, call sensor.run(0) to stop
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.

#映射串口引脚,TXD->RX,RXD->TX,IO口引脚对应的串口引脚要互换连接
fm.register(6, fm.fpioa.UART2_RX, force=True)
fm.register(8, fm.fpioa.UART2_TX, force=True)

#初始化串口
uart = UART(UART.UART2, 115200, read_buf_len=4096)
uart.write('Hello STM32 !\n')

while(True):
    text=uart.read() #读取数据
    if text:
        text = text.decode('utf-8')
        print(text)

运行效果: