电子说
在电子设计领域,UART(通用异步收发传输器)芯片是实现串行通信的关键组件之一。今天,我们将深入探讨TI公司的NS16C2552和NS16C2752双UART芯片,它们在性能、功能和应用方面都有着独特的优势。
文件下载:ns16c2752.pdf
NS16C2552和NS16C2752是双通道通用异步接收器/发射器(DUART),与PC16552D在引脚和功能上兼容,但在此基础上增加了许多新特性,如低电压支持、5V容忍输入、增强的寄存器集和更高的数据速率等。这两款芯片的两个串行通道相互独立,仅共享一个CPU接口和晶体输入。在电源开启时,两个通道的功能与PC16552D相同。
芯片的引脚分为并行总线接口、串行I/O接口、时钟和复位、电源和地等几类。下面我们重点介绍几个关键接口:
芯片包含两个相同的寄存器集,分别用于两个通道。通过对寄存器的配置,可以实现不同的功能。以下是一些重要寄存器的介绍:
用于存储接收到的数据,可通过读取该寄存器获取接收数据。
CPU将发送数据写入该寄存器,然后由UART进行发送。
用于使能不同类型的中断,如接收数据可用中断、发送保持寄存器空中断等。
记录中断的优先级和状态,帮助CPU快速处理中断。
用于启用FIFO、清除FIFO、设置FIFO触发级别和选择DMA模式。
指定异步数据通信的格式,如字符长度、奇偶校验、停止位等,还可设置除数锁存访问位(DLAB)。
每个通道都有一个可编程的波特率发生器,可将输入时钟除以1至$2^{16}-1$的任意除数,产生16X时钟,驱动发送和接收部分。通过设置除数锁存器(DLL和DLM),可以实现不同的波特率。
芯片内置振荡器,可接受标准晶体输入,产生的时钟频率范围为DC至24 MHz。每个通道都有独立的可编程时钟分频器,因此可以设置不同的波特率。在使用外部晶体时,需要注意晶体的参数和负载电容的选择。
芯片具有上电复位功能,可适应缓慢上升的电源。复位后,芯片的输出状态会恢复到默认值。
接收部分包括一个8位接收移位寄存器(RSR)和一个16或64字节的FIFO。在FIFO模式下,可以根据FIFO指针的触发级别产生中断或请求DMA传输。同时,还支持硬件和软件流控制,防止接收数据溢出。
发送部分包括一个8位发送移位寄存器(TSR)和一个16或64字节的FIFO。在FIFO模式下,当Tx FIFO的空空间超过阈值时,会产生中断或请求DMA传输。同样,也支持硬件和软件流控制,确保数据的可靠发送。
使用RXRDY和TXRDY信号可以实现更高效的直接内存访问(DMA)传输,减少CPU的处理负担。在模式0下,每次RXRDY和TXRDY的有效信号会触发一次单字节传输;在模式1下,可以进行块传输。
通过设置MCR[6]为1,可以启用红外模式。在该模式下,SOUT在空闲状态下为逻辑0,发送时会发送3/16位宽的脉冲,实现红外通信。
由于UART的发送和接收时钟在不同的时钟域,时钟频率的偏差可能会导致数据错误。因此,需要控制时钟频率的误差在一定范围内,以确保数据的正确恢复。一般来说,数据包长度越短,对时钟误差的容忍度越高。
以下是一些常见的配置示例,帮助你快速上手:
- LCR 0x03.7 = 1
- DLL 0x00.7:0 = DIV_L
- DLM 0x01.7:0 = DIV_M
- LCR 0x03.7 = 0
- 保存LCR 0x03.7:0到临时变量
- LCR 0x03.7:0 = 0xBF
- EFR 0x02.4 = 1
- LCR 0x03.7:0 = 0
- MCR 0x04.7 = 1(或0,根据需要选择)
- LCR 0x03.7:0 = 0xBF
- EFR 0x02.4 = 0(可选)
- LCR 0x03.7:0 = 临时变量
- 保存LCR 0x03.7:0到临时变量
- LCR 0x03.7:0 = 0xBF
- Xon1 0x04.7:0 = VAL1
- Xoff1 0x06.7:0 = VAL2
- LCR 0x03.7:0 = 临时变量
与PC16552D相比,NS16C2552和NS16C2752在FIFO大小、电源电压、最高波特率、时钟输入频率、工作温度等方面都有明显的优势。同时,还增加了许多增强功能,如睡眠模式、软件和硬件自动流控制、红外模式等。
NS16C2552和NS16C2752是两款功能强大的双UART芯片,具有高数据速率、大容量FIFO、多种流控制方式等特点,适用于各种串行通信应用。在设计过程中,需要注意时钟频率精度、晶体选择和引脚连接等问题,通过合理配置寄存器,可以实现不同的功能需求。希望本文能为电子工程师们在使用这两款芯片时提供一些帮助。你在使用UART芯片时遇到过哪些问题呢?欢迎在评论区分享你的经验和见解。
全部0条评论
快来发表一下你的评论吧 !