[学习笔记] AC781X UART模块应用笔记

[复制链接]
179|2
 楼主 | 2019-8-9 00:01 | 显示全部楼层 |阅读模式


AC781X UART模块应用笔记


1 UART模块介绍
1.1 UART特性
1. 全双工,标准非归零格式
    2. 支持DMA传输数据
    3. 可编程89位数据长度,12位停止位,硬件自动生成奇偶校验位
    4. 可选择传输器输出和接收器输入极性
    5. 支持硬件流控制
    6. 支持传输器输出和接收器输入极性
    7. 轮询或中断方式查询状态
    8. 可生成13位分隔符,可选1011LIN功能分隔符检测
    9. 支持RS485自动控制方向


1.2 UART功能
UART功能是逐位发送和接收串行数据,完整的一帧数据,包括起始位,数据位,奇偶校验位,停止位和保护间隔。
如果在接收过程中发生相关事件,则状态位DR,OE,PE,FE,BI和NE会在stop1位后立即置为1
UART_1.png
1‑1 UART接收流程

1.2.1 RS485功能
与UART功能相比,RS485功能多了一个自动方向控制信号UART_RTS,其在接收数据时默认为低电平,发送数据时默认为高电平。由于采用半双工,RS485在同一时刻只能实现发送或接收操作。有两个延迟,delay1用于在实际传输数据之前上拉UART_RTS信号,而guard_time用于在数位传输全部完成后下拉UART_RTS信号。在实际应用中,PCB布线延迟可能导致UART_RTS在UART_TX之后变为高电平,这会导致第一个数据位损坏。
UART_2.png

1‑2 单字节数据传输

1.2.2 LIN功能
UART LIN能够传输分隔符,同步域和数据。当UART接收到10或11位0时,UART LIN逻辑检测单元将其视为LIN帧的有效分隔符,LIN分隔符标志FBRK由硬件置1,表示检测到了有效的LIN分隔符。LIN分隔符不是数据,不会存储在RX数据寄存器或FIFO中。如果LABAUDEN设置为1,则同步域期间执行自动波特率检测,并且自动波特率检测在第5个上升沿之后完成;如果LABAUDEN设置为0同步域0x55被当做数据存储在RX寄存器或FIFO中。同步域之后,数据流就是有效数据,并由UART无差别接收

1.2.3 休眠唤醒
MCU进入休眠之后,UART模块接收数据能够唤醒MCU
1‑1 UART支持唤醒低功耗模式
UART_3.jpg
在进入休眠模式之前,需要对唤醒源进行配置,需要在SPM对应寄存器中使能期望的唤醒源,UART模块默认是禁能状态。调用库SPM_EnableModuleWakeup(SPM_MODULE_UARTx)使能UART模块唤醒,就能将MCU从休眠模式中唤醒,Standby模式除外。进入stop模式后,UART模块将关闭并复位配置,因此,每次MCU被唤醒后,需要重新初始化UART模块以正常收发数据。


2 驱动库
2.1 寄存器驱动


3 例程介绍
3.1 总述
4个子例程用以阐述UART的各种功能使用,包括基本收发数据,DMA传输串口数据,UART_LIN功能,UART唤醒休眠MCU。每个子例程对应着一个宏定义,通过UART_SAMPLE_SEL选择。

3.2 例程功能概述
3‑1 例程功能描述
UART_4.jpg

欢迎各位坛友指正,后续会根据问题持续更新。




UART_Sample.rar

424.87 KB, 下载次数: 10

使用特权

评论回复
| 2019-8-24 09:52 | 显示全部楼层
求RS485 的例程

使用特权

评论回复
 楼主 | 2019-8-26 10:30 | 显示全部楼层

做好立马发上来

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表