NS16C2552/NS16C2752双串口UART芯片深度剖析

电子说

1.4w人已加入

描述

NS16C2552/NS16C2752双串口UART芯片深度剖析

在电子设计领域,UART(通用异步收发传输器)芯片是实现串行通信的关键组件。TI公司的NS16C2552和NS16C2752双串口UART芯片,以其高性能和丰富的功能,在众多应用场景中得到广泛应用。本文将对这两款芯片进行详细解析,帮助电子工程师更好地理解和使用它们。

文件下载:ns16c2552.pdf

芯片概述

NS16C2552和NS16C2752是具有16字节/64字节FIFO的双串口UART芯片,数据传输速率最高可达5 Mbit/s。它们与PC16552D在引脚和功能上兼容,同时增加了许多新特性,如低电压支持、5V容忍输入、增强型寄存器集和更高的数据速率等。芯片采用44 - PLCC或48 - TQFP封装,工作电压范围为2.97 V至5.50 V,工业温度范围为 - 40°C至85°C。

特性亮点

  • 多功能输出:通过较少的I/O引脚实现更多的封装功能,提高了芯片的集成度和灵活性。
  • 双独立UART:两个串行通道完全独立,除了共享CPU接口和晶体输入外,可独立进行数据传输,适用于多通道通信需求。
  • 高数据传输速率:最高可达5 Mbit/s的数据传输速率,满足高速数据通信的要求。
  • 低电压支持:工作电压范围为2.97 V至5.50 V,降低了功耗,适用于电池供电的设备。
  • 5V容忍I/O:在整个电源电压范围内,I/O引脚能够容忍5V电压,增强了芯片的兼容性。

引脚说明

芯片的引脚分为总线接口、串行I/O接口、时钟和复位、电源和接地引脚等几类。每个引脚的功能和作用都有明确的定义,以下是一些关键引脚的说明:

并行总线接口

  • D7 - D0:数据总线,提供UART与CPU之间的双向通信,用于传输数据、控制字和状态信息。
  • A2 - A0:寄存器地址,用于选择DUART寄存器,供CPU进行读写操作。
  • CS:芯片选择,低电平有效,使能DUART与CPU之间的通信。
  • CHSL:通道选择,用于选择要访问的串行通道。
  • RD:IO读,在下降沿将寄存器数据放置在D7 - D0上,CPU可在上升沿读取状态信息或数据。
  • WR:IO写,在下降沿将数据放置在D7 - D0上,上升沿将数据锁存到所选的DUART寄存器中。

串行I/O接口

  • SIN:串行输入,接收外部设备发送的串行数据。
  • SOUT:串行输出,向外部设备发送串行数据。
  • RI:振铃指示,用于检测电话振铃信号。
  • MF:多功能引脚,可通过编程选择OUT2、BAUDOUT或RXRDY等信号功能。

时钟和复位

  • XIN:外部晶体输入,与XOUT配合形成反馈电路,为波特率发生器的振荡器提供时钟信号。
  • XOUT:外部晶体输出,与XIN配合形成反馈电路。
  • MR:主复位,高电平有效,清除所有寄存器(除接收器缓冲区、发送器保持寄存器和除数锁存器外)。

电源和接地

  • VCC:电源输入,工作电压范围为2.97 V至5.50 V。
  • GND:接地引脚,提供参考地。

寄存器设置

芯片包含两个相同的寄存器集,每个通道一个。寄存器的地址和控制引脚与寄存器选择的关系在表1中进行了总结。以下是一些重要寄存器的功能说明:

接收缓冲区寄存器(RBR)

用于存储接收到的数据,可通过该寄存器访问接收器FIFO中的数据。

发送保持寄存器(THR)

用于存储要发送的数据,是发送FIFO的输入寄存器。

中断使能寄存器(IER)

用于使能各种中断源,每个中断源可独立控制,通过设置相应的位来启用或禁用中断。

中断识别寄存器(IIR)

用于记录中断的优先级和来源,CPU读取该寄存器时,可获取最高优先级的待处理中断信息。

FIFO控制寄存器(FCR)

用于启用FIFOs、清除FIFOs、设置FIFO触发级别和选择DMA模式。

线路控制寄存器(LCR)

用于指定异步数据通信的格式,如数据位长度、停止位长度、奇偶校验等,并设置除数锁存器访问位。

调制解调器控制寄存器(MCR)

用于控制与调制解调器或外设的接口,包括时钟分频选择、红外编码器/解码器选择、Xon - Any功能启用等。

线路状态寄存器(LSR)

提供数据传输的状态信息,如接收缓冲区是否有数据、发送器是否空闲、是否发生错误等。

调制解调器状态寄存器(MSR)

提供调制解调器控制线路的当前状态信息,以及状态变化信息。

可编程波特率发生器

每个通道都有一个独立的可编程波特率发生器,可将输入时钟除以1至(2^16 - 1)的任意除数,生成16X时钟,驱动发送器和接收器部分。

操作与配置

时钟输入

芯片具有片上振荡器,可接受标准晶体的并联谐振和基频信号。生成的时钟提供给两个UART通道,频率范围为DC至24 MHz。每个通道都有独立的可编程时钟分频器,因此每个通道可以有不同的波特率。

复位

芯片具有片上上电复位功能,可适应缓慢上升的电源电压。上电复位电路会将设备保持在复位状态2^23个XIN时钟周期。此外,还可以施加外部高电平复位信号。

接收器操作

每个串行通道包含一个8位接收移位寄存器(RSR)和一个16(或64)字节的接收FIFO。RSR使用16X时钟作为定时源,在接收到起始位后,开始对数据进行采样和验证,将数据帧加载到RBR和接收FIFO中,并更新错误标签。

发送器操作

发送器由一个8位发送移位寄存器(TSR)和一个16(或64)字节的发送FIFO组成。TSR以16X内部时钟将数据移出,发送过程包括起始位、数据位、奇偶校验位(如果启用)和停止位。

硬件流控制

芯片支持RTS和CTS硬件流控制,可通过设置相应的寄存器位来启用。RTS用于请求远程设备暂停或恢复数据传输,CTS用于监控远程接收器FIFO是否溢出,以暂停或恢复本地发送器的工作。

软件XON/XOFF流控制

软件流控制使用编程的Xon或Xoff字符来实现发送/接收流控制。当接收到的字符与编程的值匹配时,发送器会暂停操作,直到接收到Xon字符后恢复传输。

特殊字符检测

当EFR[5] = 1时,UART可以检测8位特殊字符。检测到特殊字符后,会将其加载到FIFO中,并设置相应的标志位。

睡眠模式

为了降低功耗,芯片具有每个通道独立的睡眠模式。当满足一定条件时,通道可以进入睡眠模式,在检测到特定事件时唤醒。

内部回环模式

芯片支持内部回环模式,可用于设计验证和诊断故障。在回环模式下,发送的数据会从发送移位寄存器输出循环到接收移位寄存器输入,系统可以接收自己发送的数据。

DMA操作

使用RXRDY和TXRDY信号可以实现更高效的直接内存访问(DMA)传输。DMA传输在CPU周期之间进行,节省了CPU处理带宽。在模式0下,每次RXRDY和TXRDY的断言会导致单次传输;在模式1下,可以进行块传输,进一步提高传输效率。

设计注意事项

调试提示

在使用芯片时,如果设备出现异常,可按照以下步骤进行调试:

  1. 检查电源电压是否在工作范围内。
  2. 检查设备引脚连接是否与数据手册一致。
  3. 检查未焊接元件的印刷电路板(PCB)是否存在短路。
  4. 检查设备时钟输入,使用示波器检查晶体振荡频率。
  5. 确保复位信号为高电平有效,且正常情况下为低电平。
  6. 使用内部回环模式测试CPU主机接口,检查接口时序。
  7. 如果回环模式正常,检查串行数据输出和输入,可通过外部循环测试数据路径的完整性。

时钟频率精度

在UART传输中,发送器时钟和接收器时钟运行在不同的时钟域,本地振荡器频率和时钟分频器可能会引入波特率误差。UART接收器的内部采样时钟是数据速率的16倍,通过合理设置时钟和分频器,可以确保数据的正确采样和传输。

晶体要求

使用的晶体应满足以下要求:

  • 采用AT切割,并联谐振。
  • 基频振荡模式,频率范围为1至24 MHz。
  • 频率容差和漂移应满足UART应用要求。
  • 负载电容应与振荡器电路的负载电容匹配,外部电容C1和C2用于调整负载电容。

配置示例

设置波特率

LCR 0x03.7 = 1
DLL 0x00.7:0 = DIV_L
DLM 0x01.7:0 = DIV_M
LCR 0x03.7 = 0

配置预分频器输出

Save LCR 0x03.7:0 in temp
LCR 0x03.7:0 = 0xBF
EFR 0x02.4 = 1
LCR 0x03.7:0 = 0
MCR 0x04.7 = 1
LCR 0x03.7:0 = 0xBF
EFR 0x02.4 = 0 (optional)
LCR 0x03.7:0 = temp

设置Xon和Xoff流控制

Save LCR 0x03.7:0 in temp
LCR 0x03.7:0 = 0xBF
Xon1 0x04.7:0 = VAL1
Xoff1 0x06.7:0 = VAL2
LCR 0x03.7:0 = temp

配置Tx/Rx FIFO阈值

Save LCR 0x03.7:0 in temp
LCR 0x03.7:0 = 0xBF
EFR 0x02.4 = 1
LCR 0x03.7:0 = 0
FCR 0x02.7:0 = VAL
LCR 0x03.7:0 = 0xBF
EFR 0x02.4 = 0 (optional)
LCR 0x03.7:0 = temp

Tx和Rx硬件流控制

Save LCR 0x03.7:0 in temp
LCR 0x03.7:0 = 0xBF
EFR 0x02.7:6 = 2'b11
EFR 0x02.4 = 1
LCR 0x03.7:0 = 0
IER 0x01.7:6 = 2'b11
MCR 0x04.1 = 1
LCR 0x03.7:0 = temp

Tx和Rx DMA控制

Save LCR 0x03.7:0 in temp
LCR 0x03.7:0 = 0
FCR 0x02.0 = 1
FCR 0x02.3 = 1
LCR 0x03.7:0 = temp

与PC16552D的差异

与PC16552D相比,NS16C2552和NS16C2752在多个方面具有优势,如Tx和Rx FIFO大小、供电电压范围、最高波特率、最高时钟输入频率、工作温度范围、增强型寄存器集、睡眠模式、软件和硬件流控制、中断源ID、Tx FIFO触发级别选择、IrDA v1.0模式和时钟分频器选择等。具体差异如下表所示: 特性 PC16552D NS16C2552 NS16C2752
Tx和Rx FIFO大小 16字节 16字节 64字节
供电电压 4.5V至5.5V 2.97V至5.5V 2.97V至5.5V
最高波特率 1.5Mbps 5.0Mbps 5.0Mbps
最高时钟输入频率 24MHz 80MHz 80MHz
工作温度 0 - 70℃ - 40至85℃ - 40至85℃
增强型寄存器集
睡眠模式IER[4]
Xon, Xoff, 和Xon - Any软件自动流控制
CTS和RTS硬件自动流控制
中断源ID在IIR中 3位 5位 5位
Tx FIFO触发级别选择FCR[5:4] 1级 1级 4级
IrDA v1.0模式MCR[6]
时钟分频器1或4选择MCR[7]

总结

NS16C2552和NS16C2752双串口UART芯片以其高性能、丰富的功能和良好的兼容性,为电子工程师提供了一个优秀的串行通信解决方案。通过深入了解芯片的特性、引脚功能、寄存器设置和操作配置,工程师可以充分发挥芯片的优势,设计出更加稳定、高效的通信系统。在实际应用中,还需要注意调试技巧、时钟频率精度和晶体要求等方面的问题,以确保系统的可靠性和稳定性。希望本文能够对电子工程师在使用NS16C2552和NS16C2752芯片时有所帮助。

各位工程师朋友,在使用这两款芯片的过程中,你们遇到过哪些有趣的问题或者有什么独特的应用经验呢?欢迎在评论区分享交流!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分