电子说
在嵌入式系统和通信设备的设计中,通用异步收发器(UART)扮演着至关重要的角色。EXAR公司的XR68C92/192双通用异步收发器,以其丰富的功能和出色的性能,为工程师们提供了一个强大的解决方案。本文将深入介绍XR68C92/192的特性、内部结构、工作模式以及编程方法,帮助工程师们更好地理解和应用这款产品。
文件下载:XR68C92CV-0A-EVB.pdf
XR68C92/192是一款双通用异步收发器,分别具有8字节(XR68C92)和16字节(XR68C192)的发送和接收FIFO。它与XR68C681和Philips SCC68692 UART引脚兼容,并且在数据访问速度和功能上有所改进。该收发器的接收器和发送器操作速度可以从18种固定波特率、可编程计数器/定时器产生的16X时钟或外部1X/16X时钟中独立选择。同时,它还提供了掉电模式,在停止振荡器的同时保留寄存器内容,采用先进的CMOS工艺实现了低功耗和高速的要求。
对于顶部标记为“D2”及更新版本的设备,具有5V容忍输入、与SCC68692和XR68C681引脚兼容且功能改进、增强的多站模式操作(地址和数据标签单独存储)等特性。
XR68C92/192有40引脚DIP、44引脚PLCC和44引脚LQFP等不同封装形式,各引脚功能如下:
内部控制逻辑接收CPU的操作命令,并生成相应的信号来控制设备的操作。它接收芯片选择信号(-CS)、读写信号(R/-W)、地址选择线(A0 - A3)和复位信号(-RESET)等输入。
每个通信通道包含一个全双工异步接收器/发送器(UART)。接收器和发送器的操作频率可以独立选择,发送器将CPU的并行数据转换为串行位流输出,接收器将串行数据转换为并行格式并进行错误检测。
定时逻辑由晶体振荡器、波特率发生器(BRG)、时钟选择逻辑和可编程16位计数器/定时器(C/T)组成。晶体振荡器提供基本的时钟参考,波特率发生器可以产生多种常用的波特率,时钟选择逻辑允许为每个通道的接收器和发送器选择不同的波特率,计数器/定时器可以用于产生16X时钟或实现定时和计数功能。
中断控制逻辑与中断屏蔽寄存器(IMR)、中断状态寄存器(ISR)、辅助控制寄存器(ACR)和中断向量寄存器(IVR)相关。单低电平有效中断输出(-INT)可以通知CPU发生了8种内部事件之一,用户可以通过编程IMR来控制哪些事件可以触发中断。
数据总线缓冲器提供外部和内部数据总线之间的接口,通过内部控制逻辑实现CPU与XR68C92/192之间的数据读写操作。
多功能输入(IP0 - IP5)的状态可以从内部寄存器IPR中读取,每个输入还具有可选的控制功能。多功能输出(OP0 - OP7)可以作为通用输出或用于特定功能,通过模式寄存器和输出端口配置寄存器进行编程。
在正常模式下,接收器和发送器独立工作,实现数据的收发功能。
在多站模式下,XR68C92/192可以作为主站或从站工作。主站发送地址字符和数据字符,从站根据地址字符决定是否启用接收器。该模式还具有额外的地址/数据标签存储功能,允许用户更灵活地控制数据传输。
XR68C92/192包含多个内部寄存器,用于配置和控制设备的操作,主要寄存器如下:
用于设置波特率表选择、触发级别、字符长度、奇偶校验、回环模式等参数。
反映接收器和发送器的状态,如接收就绪、接收FIFO满、发送就绪、发送空、溢出错误、奇偶校验错误、帧错误和接收中断等。
用于选择通道A和B的发送和接收波特率。
向通道A和B提供命令,如启用/禁用接收器和发送器、重置寄存器、开始/停止中断等。
用于选择波特率表、计数器/定时器模式和时钟源等。
提供所有潜在中断源的状态信息。
选择哪些中断源可以触发中断输出。
用于设置和读取计数器/定时器的预加载值和当前值。
还包括输入端口变化寄存器(IPCR)、输入端口寄存器(IPR)、输出端口配置寄存器(OPCR)、设置输出端口寄存器(SOPR)和复位输出端口寄存器(ROPR)等。
| Operation | Register | Value | Remarks |
| --- | --- | --- | --- |
| Write | CRA | 0x20 | ; reset RX (receiver) |
| Write | CRA | 0x30 | ; reset TX (transmitter) |
| Write | CRA | 0x40 | ; reset error status |
| Write | CRA | 0xB0 | ; reset MR pointer to MR0 |
| Write | MR0A | 0x00 | ; use normal baud rate table. Now MR pointer points to MR1 |
| Write | MR1A | 0x13 | ; select word length & parity. Now MR pointer points to MR2 |
| Write | MR2A | 0x07 | ; normal mode (not loopback) & 1 stop bit |
| Write | CSRA | 0xBB | ; 9600 baud for RX & TX - clock source is XTAL1 |
| Write | CRA | 0x05 | ; enable RX & TX |
| Read | SRA | | ; should get a value 0x0C |
| Write | CRA | 0x10 | ; reset MR pointer to MR1 |
| --- | --- | --- | --- |
| Write | MR1A | 0x93 | ; select auto RTS control. The -RTS signal is sent via output OP0 |
| Write | MR2A | 0x17 | ; select auto CTS control. The input IP0 serves as the -CTS signal |
| Write | ACR | 0x40 | ; C/T initialized in timer mode & IP2 chosen as its clock source ; also, bit-7 = 0, therefore baud rate Set1 has been selected |
| --- | --- | --- | --- |
| Write | CTPU | 0x00 | ; It is essential to program CTPU & CTPL before programming OP3 |
| Write | CTPL | 0x05 | ; as C/T output (see below) |
| Write | CSRA | 0xEB | ; channel A RX clock source: IP4-16X, TX clock source: XTAL1 (if MR0A ; bits 2 and 0 = 0, the TX baud rate is 9600) |
| Write | CSRB | 0xBF | ; channel B RX clock source: XTAL1 (9600 baud), TX clock source: IP5-1X |
| Read | STCR | | ; Start the C/T |
| Write | OPCR | 0x06 | ; C/T output appears at OP3 and channel A's TX 1X clock (this is XTAL1 ; clock divided by 16) at OP2. |
| Write | CRB | 0x10 | ; reset MR pointer to MR1 |
| --- | --- | --- | --- |
| Write | MR1B | 0x1B | ; word length = 8 and use A/D tag in the place of parity |
| Write | CRB | 0x04 | ; Enable transmitter of channel B |
| Write | TXB | address | ; Send the address first (A/D tag = 1) |
| Write | CRB | 0x10 | ; reset MR pointer to MR1 |
| Write | MR1B | 0x13 | ; change A/D tag = 0 |
| Write | TXB | data | ; You can load the data (A/D tag = 0) immediately after the address. There is no ; need to wait till the transmitter is empty. Load all the data. Check to see if the |
| Read | SRB | | ; transmitter is empty & ready. You need to do this before you can load the next ; address. Repeat the last 5 steps to load different addresses and their data. |
在不同电源电压和温度条件下,规定了时钟输入、普通输入、输出、输入泄漏、时钟泄漏、平均电源电流、平均掉电电源电流和输入电容等参数的范围。
包括时钟脉冲持续时间、振荡器/时钟频率、地址有效到 -CS 低、-CS 高到地址无效、R/-W 设置时间到 -CS 低、R/-W 保持时间从 -CS 高、-CS/-IACK 低到数据有效(读)、数据有效到 -CS 高(写)、-CS 高到数据无效(写)、-CS/-IACK 高到数据高阻(读)、-CS 低脉冲宽度、-CS 高脉冲宽度、-CS/-IACK 低到 -DACK 低、-CS/-IACK 高到 -DACK 高、-CS/-IACK 高到 -DACK 高阻、端口输入设置时间、端口输入保持时间、从 R/-W 到输出的延迟、从 -CS 到复位中断的延迟、复位脉冲宽度和波特率除数等参数的范围。
XR68C92/192双通用异步收发器以其丰富的功能、灵活的配置和良好的电气特性,为嵌入式系统和通信设备的设计提供了一个优秀的解决方案。工程师们可以根据具体的应用需求,合理配置寄存器和工作模式,实现高效、稳定的数据收发功能。在使用过程中,需要注意寄存器的编程顺序和电气特性的要求,以确保设备的正常工作。你在实际应用中是否遇到过类似UART设备的配置问题呢?欢迎在评论区分享你的经验和见解。
全部0条评论
快来发表一下你的评论吧 !