uart详解

   uart


1,概念:uart是一种传输速度范围广的,全双工,异步的通信总线。
传输速度范围广:波特率从110到几M不等,stm32系列的uart一般波特率最高可达2-3M,常用波特率有9600,115200等。
全双工:可以同时接收和发送数据。
异步:接收端和发送端无须在同一时刻接收和发送,所以不需要接时钟线,只需要保证通信双方的波特率一致就行。


2,接口
它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少2根线。
TX – 主设备数据输出,从设备数据输入;
RX – 主设备数据输入,从设备数据输出;


3,uart的通信协议
uart一般包括1位的起始位+若干位的数据位+1位的奇偶校验位+1位停止位。
起始位为低电平;
数据位可选5,6,7,8位,一般选择8位;
奇偶校验位可以有,也可以没有,但是发送端和接收端要配置一致;
停止位为高电平,可以选择1位,1.5位或者2位,一般选择1位。


4,uart初始化配置
①,uart的GPIO口配置
②,配置uart的波特率
③,配置uart的数据格式,数据位的位数,是否加奇偶校验位,停止位的位数
④,使能uart的接收和发送


5,uart读写数据流程
发送:
①,等待uart-buffer为空
②,把需要发送的数据放入uart-buffer
③,等待发送完一个数据
接收:
uart接收数据分为循环接收和中断接收,为节省CPU资源,一般采用中断接收
①,产生中断接收标志
②,把uart-buffer的数据移入内存
③,清楚中断标志位


6,uart配置心得
uart有内部回环模式,在调试时,可先把uart的tx口和rx口短接起来,观察是否可以正常接收发送数据,正常后再与其他uart外设传输数据。
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
machine.UART模块是MicroPython中的一个串口通信模块,它允许MicroPython与其他设备(如PC、单片机、传感器等)进行串行通信。该模块在MicroPython的标准库中(不需要额外安装),可以直接在MicroPython的REPL中使用或在MicroPython脚本中导入使用。 下面是machine.UART模块中一些常用的方法和属性: #### 1. 创建一个UART对象 ```python uart = machine.UART(1, baudrate=115200) # 以115200波特率创建UART对象,使用UART1端口 ``` #### 2. 设置UART对象的属性 ```python uart.init(baudrate=9600, bits=8, parity=None, stop=1) # 设置波特率、数据位、校验位和停止位 uart.deinit() # 关闭UART对象 uart.any() # 返回接收缓冲区中的字节数 uart.read(n) # 从接收缓冲区中读取n个字节 uart.readall() # 从接收缓冲区中读取所有字节 uart.write(buf) # 向UART发送buf中的数据 uart.writechar(char) # 向UART发送一个字符 uart.writeirq(trigger, priority, handler) # 设置UART发送中断 uart.readirq(trigger, priority, handler) # 设置UART接收中断 ``` #### 3. 示例 下面是一个使用machine.UART模块的简单示例,该示例将MicroPython的REPL输出重定向到UART1端口,并将UART1端口接收到的数据打印到MicroPython的REPL中。 ```python import machine uart = machine.UART(1, baudrate=115200) while True: if uart.any(): data = uart.readall() print(data) if not uart.is_tx_busy(): uart.write(input() + '\n') ``` 在这个示例中,我们首先创建了一个UART对象,并将其设置为使用UART1端口和115200波特率。然后我们进入一个无限循环中,等待UART1接收到数据。当UART1接收到数据时,我们读取所有的数据,并将其打印到MicroPython的REPL中。同时,我们还等待MicroPython的REPL输入,并将其发送到UART1端口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值