您的位置:首页 > 其它

杂记:Atmel sama5d3 Universal Asynchronous Receiver Transmitter (UART)

2016-07-21 09:16 309 查看
Universal Asynchronous Receiver Transmitter (UART)

概论

uart是两线的,提供通信和追踪功能,完美的编程现场解决方案

提供dma

特点:

两线uart

独立的发送器和接收器,和可编程波特率生成器

奇偶校验

自动回送,本地回环,远端回环模式

支持中断

发送和接收都有dma

uart的引脚是复用的 ,需要配置

uart的时钟是受Power Management Controller (PMC)控制,需要使能

uart的中断需要配置Interrupt Controller

uart只支持异步传输,只能处理包含校验的8bit,没有时钟线

相互独立的发送器和接收器,且公用一个波特率发生器 

波特率时钟是外时钟16分频产生的,值存在Baud Rate Generator register (UART_BRGR)

如果Baud Rate Generator register (UART_BRGR)为零,将非能uart

最大是16分频,最小是16 x 65536分频

接收器

uart接收器在重启过后必须手动激活,置位Control Register (UART_CR) with the bit RXEN

置位UART_CR with the bit RXDIS,会非能uart接收器,如果没有在接收会直接停止

如果正在收,会等到收完这一次,然后非能

UART_CR with the bit RSTRX置位,会直接进入重启状态,且非能,不管在不在接收

uart只能异步传输,通过采样URXD信号线来检测接收开始,7个采样周期的低电平(space)预示着开始传输信号,

如果一个space少于7/16的一个周期,会被丢弃

如果接收开始理论上接收器采样URXD的每一位中间点,它假设每个位都是持续16个采样周期

所以第一个采样在开始bit后的第8个周期,大约在下降沿的24个采样周期

之后的每个bit都是采样16周期。

一个字节被接收会送到Receive Holding Register (UART_RHR),RXRDY status bit in the Status Register (UART_SR)被置位

RXRDY status bit in the Status Register (UART_SR)自动清零,当UART_RHR数据被读走

数据没读走但是又有新数据来OVRE status bit in UART_SR置位,

要清除它要写1到RSTSTA (Reset Status) in UART_CR

校验错误

每接收一字节根据PAR in the Mode register (UART_MR)进行校验

如果出错则置位PARE in UART_SR,且RXRDY被置位

置位UART_CR is written with the bit RSTSTA (Reset Status)会清除PARE

清除之前,如果新的字节来了,pare还是保持为1

FRAME (Framing Error) bit in UART_SR和RXRDY会被置位,如果stop位错误

置位RSTSTA in control register UART_CR才能清除

发送 :

设备重启,需要手动使能uart发送器,置位UART_CR with the bit TXEN

写入数据到Transmit Holding Register (UART_THR),传输开始

置位UART_CR with the bit TXDIS,则非能发送器

如果没有在发,直接停止,如果在发,发完停止

置位UART_CR with the bit RSTTX,直接关闭,不管发不发

format defined in UART_MR,0开始,8bits从低位到高位发,可选的校验,1结束

PARE in UART_MR决定是否发送校验,校验可选择an odd parity, an even parity, or a fixed space or mark bit.

TXRDY (Transmitter Ready) in UART_SR被置位时,说明(UART_THR)是空的

可以往里面写数据了。

TXEMPTY被置位说明UART_THR和移位寄存器都是空的

发送器和接收器都有dma通道,需要配置才能使用

uart 支持3种测试模式 配置CHMODE field in UART_MR

automatic echo mode,接收一位传出一位,发送器非能

local loopback mode,自己发送的直接到自己的接收器,外部发送脚拉高,接收脚非能

remote loopback mode,数据直接不到接收器和发送器中去,直接转发,接收脚被拉高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: