通用异步收发器UART

*****UART基本结构
⑴、输出缓冲寄存器,它接收CPU从数据总线上送来的并行数据,并加以保存。

⑵ 、输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。

⑶ 、输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。

⑷ 、输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CPU取走。

⑸、控制寄存器,它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。

⑹、状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让CPU查询。
在PIC系列单片机中
*****使能UART
UART模块通过UARTEN位和UTXEN位置1来使能。一旦使能,UxTX和UxRX引脚就分别配置为输出和输入,改写了相应的I/O端口引脚的TRIS和PORT寄存器位设置。UxTX引脚在没有传输发生时,处于逻辑1。
注意:在UARTEN置1前,不应该将UTXEN位置1,否则将无法使能UART发送。

*****UART 发送器
发送器的核心是发送移位寄存器 (UxTSR)。移位寄存器从发送 FIFO 缓冲器 UxTXREG 获取数据。 UxTXREG 寄存器中的数据由软件写入。在前一次装入数据的停止位发送前,不会向 UxTSR 寄存器装入新数据。一旦停止位发送完毕, UxTXREG 寄存器中的新数据 (如果有)就会被装入 UxTSR。
注: UxTSR 寄存器并未映射到数据存储器中,因此用户不能直接访问它。
通过将 UTXEN 使能位 (UxSTA<10>)置 1 来使能发送。实际的发送要到 UxTXREG 寄存器装
入了数据并且波特率发生器 (UxBRG)产生了移位时钟 (图 21-3)后才发生。还可以先装入
UxTXREG 寄存器,然后将 UTXEN 使能位置 1 来启动发送。通常,第一次开始发送的时候,由
于 UxTSR 寄存器为空,这样传输数据到 UxTXREG 寄存器会导致该数据立即传输到 UxTSR。发
送过程中清零 UTXEN 位将使发送中止并复位发送器。因此, UxTX 引脚将回复到一个高阻抗状
态。
为了选择 9 位发送,PDSEL<1:0> 位(UxMODE<2:1>)应设置为 11 并且第 9 位应该写入 UTX8
位 (UxTXREG<8>)。应该向 UxTXREG 执行一个字写操作,这样可以同时写入所有的 9 位。
注: 在 9 位数据发送的情况下,不采取奇偶校验。

*****发送缓冲寄存器(UxTXREG)
发送缓冲器有 9 位宽和 4 级深。算上发送移位寄存器(UxTSR),用户实际有一个 5 级深的缓冲
器。它按先进先出(FIFO)的方式组织。一旦 UxTXREG 的内容被传送到 UxTSR 寄存器,当前
缓冲单元就可以写入新的数据,下一个缓冲单元将成为 UxTSR 寄存器的数据源。无论何时,只
要缓冲器满了,UTXBF(UxSTA<9>)状态位就会置 1。如果用户试图向已经满的缓冲器执行写
操作,则新数据将不会被 FIFO 接收。
FIFO 在任何器件复位时复位,但当器件进入省电模式或从省电模式唤醒时, FIFO 不受影响。

*****发送中断
发送中断标志 (UxTXIF)位于相应的中断标志状态 (IFS)寄存器中。 UTXISEL<1:0> 控制位
(UxSTA<15,13>)决定 UART 将何时产生一个发送中断。

  1. UTXISEL<1:0> = 00,当一个字符从发送缓冲器传输到发送移位寄存器 (UxTSR)时,
    UxTXIF 被置 1。这暗示发送缓冲器中至少有一个单元为空。
  2. UTXISEL<1:0> = 01,当最后一个字符移出发送移位寄存器(UxTSR)时,UxTXIF 被置 1。
    这表示所有发送操作都已完成。
  3. UTXISEL<1:0> = 10,当一个字符传输到发送移位寄存器 (UxTSR)且发送缓冲器为空
    时, UxTXIF 被置 1。
    当模块第一次使能时, UxTXIF 位将被置 1。用户应该在 ISR 中清零 UxTXIF 位。
    运行时可以在两种中断模式间切换。

注: 如果 UTXISEL<1:0> = 00,当 UTXEN 位置 1 时,UxTXIF 标志位也置 1,因为发送
缓冲器尚未满 (可以向 UxTXREG 寄存器移入待发送数据)。

UxTXIF 标志位指示 UxTXREG 寄存器的状态,而 TRMT 位(UxSTA<8>)表明 UxTSR 的状态。
TRMT 状态位是只读位,当 UxTSR 寄存器为空时被置 1。因为没有与此位关联的中断逻辑,所
以用户必须查询此位以判断 UxTSR 是否为空。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值