摘要:UART以其简单可靠,抗干扰强,传输距离远,组网方便,被认为是嵌入式系统中进行串行数据传输的最佳方式。本文介绍了专为嵌入式系统设计的VK32系列新型多总线接口UART器件的原理及应用技术。
1.嵌入式系统中串口扩展的需求:
而在嵌入式领域,由于UART具有操作简单,工作可靠,抗干扰强,传输距离远(组成485网络可以传输1200米以上),设计人员普遍认为UART是从CPU或微控制器向系统的其他部分传输数据的最佳方式,因此它们被大量地应用在工业、通信、和家电控制等嵌入式领域。通常MCU/CPU都会自带一个UART串口,但实际应用中一个串口往往不够用,需要进行UART串口扩展。
目前的大多数UART器件是以计算机总线转换UART为应用基础的,其通用性、管脚、寄存器与20年前很少改变,针对嵌入式应用,目前的UART器件普遍存在操作复杂,引脚多,价格较高等弱点,不能满足和适应的嵌入式系统发展的需要。
针对嵌入式系统中UART的发展趋势,维肯电子设计推出了VK32XX系列新型多总线接口UART器件,其特点为:
8位并行总线接口产品可以替代目前广泛使用的16C55X系列UART用于为8位,16位,32位MCU进行UART串口扩展。VK32系列8位并行总线接口UART产品采用了精简控制寄存器设计),并通过管脚复用减少了芯片管脚,简化的软件设计和PCB设计都更适合嵌入式系统需求。
SPI接口总线系列产品为带有SPI接口的DSP、MCU实现同步SPI串口到异步UART串口的桥接和扩展,尤其针对目前广泛应用的DSP系统,大多数DSP都只有同步串口,只能用于与具有同步通信接口的外设进行通信。V32系列SPI总线接口可以将一个SPI同步串行接口桥接/扩展成为1~4个通用异步串口,方便的实现DSP和外设的异步串行通信。
UART接口产品创新的实现了将一个标准3线异步串口(UART)扩展成为2~4个增强功能串口(UART)。芯片内置的UART扩展协议处理逻辑,无需无需其它的地址信号、控制信号线就可以实现多个独立配置的全双工串口扩展,为需要扩展串口的嵌入式系统提供了一个最简洁的解决方案。
2.VK32系列新型多总线接口UART器件的原理及框图:
VK3266是VK32系列中功能最全的型号,本文以VK3266的原理图为基础,对VK32系列UART芯片原理进行介绍:
VK3266原理框图
VK3266内部结构包括主机接口,子通道部分,MODEM控制逻辑,中断控制逻辑几部分。
主机接口为VK3266与CPU/DSP相连的接口,通过M1,MO模式选择信号线,可以分别选择8位并行总线,SPI总线,UART三种接口与主机相连。
MODEM控制逻辑用于与MODEM相连时的状态信号线的监控和控制。
中断控制逻辑用于产生和控制各种内部中断。
时钟发生器为芯片的提供时钟,可以用CLKSEL引线选择从晶振还是外部时钟源获取时钟。
子通道逻辑部分处理各个的数据接收和发送。数据发送的处理过程为:主机接口将从主口总线发送来的数据进行处理后传送到相应的子通道FIFO,FIFO里的数据经过流量控制逻辑后,在波特率发生器的作用下,通过发送移位寄存器顺次将数据发送到TX串行输出信号线上。接收数据与此正好相反。子通道处理模块中,控制寄存器用于对各个子通道进行设置,IR编解码器用于对红外信号进行编解码,子通道流量控制器用于子通道传输数据时的自动流量控制。
3.VK32系列多种总线的主机接口和操作:
3.1 SPI主机接口连接和操作:
如图所示 SPI与主机(CPU或者DSP)接口包括如下四个信号: SDIN:SPI数据输入。 SDOUT:SPI数据输出。SCLK:SPI串行时钟。SCS:SPI片选(从属选择)。
VK32XX工作在SPI同步串行通信的从机模式下 ,支持SPI模式0标准。为实现主机和VK32XX的通信,在主机端需要设置CPOL=0(SPI时钟极性选择位),CPHA=0( SPI时钟相位选择位)。SPI接口的操作时序如图9.2所示:
SPI接口读写操作:
SPI写寄存器操作
SPI |
控制字节 CMD |
数据字节 DB | ||||||||||||||
BIT |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DIN |
1 |
C1 |
C0 |
A3 |
A2 |
A1 |
A0 |
D8t |
D7t |
D6t |
D5t |
D4t |
D3t |
D2t |
D1t |
D0t |
DOUT |
INT1 |
INT2 |
INT3 |
INT4 |
X |
X |
X |
X |
TC3 |
TC2 |
TC1 |
TC0 |
RC3 |
RC2 |
RC1 |
RC0 |
SPI读寄存器
分类 |
控制字节 CMD |
数据字节 DB | ||||||||||||||
BIT |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DIN |
0 |
C1 |
C0 |
A3 |
A2 |
A1 |
A0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
DOUT |
INT1 |
INT2 |
INT3 |
INT4 |
X |
X |
X |
X |
D7r |
D6r |
D5r |
D4r |
D3r |
D2r |
D1r |
D0r |
各位的原理
C1 C0:子串口通道号? 00~11分别对应子串口1到子串口4;
A3-A0:子串口寄存器地址
D8t:9位数据长度发送时第9位的数据
INT1—INT4:通道1到4的中断标志
TC3—TC0:发送FIFO数据的个数
RC3—RC0:接收FIFO数据的个数?
3.2 UART主机接口的连接和操作:
当VK32XX的主接口为UART时,仅需要RX,TX连接主机。采用标准的UART协议进行通信。上电后,主机以VK32XX的复位值所确定的波特率和数据格式对VK32XX进行初始化设置后即可方便的实现串口扩展功能。
UART接口与主机连接图
主UART接口的操作时序
写操作时,先向VK3266的RX写入一个命令字节(Command Byte),随后写入相应的数据字节,其操作时序(无校验,禁止转义和红外模式)如图10.2所示:
UART主接口写操作时序
读操作时,先向VK3266的RX写入命令字节,相应的数据字节从TX读取,其操作时序(无校验,禁止转义和红外模式)如图
UART主接口读操作时序
主UART通信传输协议描述:
写寄存器:
分类 |
控制字节 CMD |
1个数据字节 DB(下行) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TX |
1 |
0 |
C1 |
C0 |
A3 |
A2 |
A1 |
A0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
RX |
写FIFO:(多字节写入)
分类 |
控制字节 CMD |
[N3 N2 N1 N0]个数据字节 DB(下行) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TX |
1 |
1 |
C1 |
C0 |
N3 |
N2 |
N1 |
N0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
RX |
读寄存器:
分类 |
控制字节 CMD |
1个数据字节 DB(上行) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TX |
0 |
0 |
C1 |
C0 |
N3 |
N2 |
N1 |
N0 |
||||||||
RX |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
读FIFO:(多字节读取)
分类 |
控制字节 CMD |
[N3 N2 N1 N0]个数据字节 DB(上行) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TX |
0 |
1 |
C1 |
C0 |
N3 |
N2 |
N1 |
N0 |
||||||||
RX |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
说明:
C1,C0:子串口通道号, 00~11分别对应子串口1到子串口4。
A3,A2,A1,A0:子串口寄存器地址;
N3,N2,N1,N0:写入/读取FIFO的数据字节个数;当其为0000时,表明后接1个数据字节;当其为1111时,表明后接16个数据字节;
向子串口读/写数据有两种方法:
3.3 8位并行总线主机接口的连接和操作
VK3266支持8位并行总线与主机连接,在8位总线模式下,VK3266仅需要占用两个地址空间,一个用来操作地址寄存器,一个用来操作数据寄存器。当采用查询方式工作时,IRQ可以不连接。
其连接如图所示:
并行8位总线主接口连接图
并行8位总线接口的操作时序:
VK3266的8位并行总线接口完全兼容主流的8位MCU(如8051)的操作时序。
.写操作时序:
8位总线写操作时序
读操作时序:
并行8位总线读操作时序
并行8位总线传输协议描述:
写寄存器:
分类 |
控制字节 CMD (A0=0) |
1个数据字节 DB(下行) (A0=1) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
1 |
C1 |
C0 |
A3 |
A2 |
A1 |
A0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
读寄存器:
分类 |
控制字节 CMD (A0=0) |
1个数据字节 DB(上行) (A0=1) | ||||||||||||||
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
C1 |
C0 |
A3 |
A2 |
A1 |
A0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
说明:
C1,CO:子串口通道号,00~11分别对应子串口1到子串口4
A3,A2,A1,A0:子串口寄存器地址
4. VK系列新型多总线接口UART器件在嵌入式系统中的应用:
VK系列UART器件的在嵌入式产品中的应用领域包括:
多串口服务器/多串口卡,工业/自动化现场RS-485控制,使用CDMA/GPRS MODEM的无线数据传输,车载信息平台/车载GPS定位系统,远传自动抄表(AMR)系统,税控POS/银行终端等金融机具,DSP数据采集和传输系统等。
其应用实例如下:
4.1 VK32XX系列UART产品在税控POS中的应用
VK32系列产品在嵌入式税控POS平台设计中的应用
税控POS机是一个控制密集形的嵌入式系统,需要控制大量外设。其基本配置要求的串口打印机,MODEM,RS-485网络接口,以及税控IC卡(异步卡)都工作在基于UART的串行通信方式。同时,大量的外设如密码键盘,条码扫描器,条码称,接触IC卡/非接触IC卡读卡器,磁卡读卡器,串口显示屏等设备都是通过RS-232串口与POS机相连。
采用VK32XX系列UART器件,可以根据MCU/CPU的接口特性,选择SPI/8位并行总线/UART进行灵活的UART串口扩展。该方案与采用目前GPIO来模拟串口的方案相比,占用CPU的I/O和资源都很少,即使普通的8位MCU也可以胜任。同时,扩展的子串口都是标准的硬件UART,使得数据传输也更加可靠。
4.2 VK32XX系列UART器件在远程自动抄表系统中的应用
如图所示,远传自动抄表系统由远传表和集中抄表器以及MODEM等部分组成。
在远传表中,应用VK3212双串口扩展IC将单片机的一个UART扩展成两个UART,扩展出来的两个串口UART1和UART2分别接RS-485/M-BUS接口和红外接口。VK3212的UART1设置为RS-485自动收发和RS-485网络模式,可以无需MCU的控制,自动完成RS-485/M-BUS的数据自动收发和自动网络地址识别。VK3212的UART2设置为红外模式,用于连接远传表的红外设置窗口。
在集中抄表器中,用一片SPI接口的4通道UART器件VK3234将扩展出4个子串口UART,MCU通过SPI总线与VK3234相连。VK3234的子串口UART设置为RS-485自动收发模式,每个子通道UART控制的RS-485/MBUS收发器通过RS-485/M-BUS总线连接最多250个远传表。一个基于VK3234的集中抄表器可以实现最多1000个远传表的数据读取。
由于是通过SPI接口扩展的串口,集中抄表器单片机自身的串口可以连接PSTN/GSM MODEM将集抄数据传给远程服务器。
4.3 VK3224 SPI接口系列UART器件在嵌入式车载信息平台中的应用
VK3233主接口有SPI和UART两种接口可以选择。嵌入式平台中的DSP/CPU通过SPI/UART接口与VK3233相连,VK3233扩展出来的三个子串口分别连接GPS模块,倒车雷达模块和GSM/ CDMA模块。MODEM控制线连接GSM/CDMA MOMEM。整个嵌入式系统共用一个显示设备,有效的节省了车内有限的空间。
4.4 ?VK3266系列8位并行总线接口产品在串口服务器中的应用:
在工业控制等领域,众多设备的对外通讯接口仍然是低速串口。串口服务器将多个串口设备的数据存储、转换以后通过IP网进行传输。
图5显示了一个8串口服务器(4个RS-232串口、4个RS485串口)的电路原理图,嵌入式系统中的DSP/CPU的并行位数据线连接2片VK3266实现了8个串口的扩展,通过地址译码器控制2片VK3266的CS实现片选控制。在上图中,VK3266 A连接4个RS-232收发器,扩展出了4个带硬件流量控制信号的RS-232串口;VK3266 B则连接了4个RS-485收发器,将VK3266设置在RS-458自动收发控制模式下,通过RTS信号控制RS-485收发器的数据发送使能DE和数据读取使能RD信号能实现RS-485的自动收发控制。
5. VK32系列UART器件的选型参考和设计建议
5.1 选型参考
VK32系列UART包括5个产品系列,各个产品系列的特点如下:
VK321X系列为主接口为UART的产品,仅通过RX,TX和GND三根信号线与主机相连,通过芯片内部的处理协议采用时分复用的方式将一个串口扩展成为2~4个可以同时工作的全双工串口。在该模式下,MCU以查询方式操作UART器件,设计中需要注意的是为保证在时分复用下各个子通道能够同时全双工通信,主接口的波特率需要设置为大于各个子串口波特率之和。VK321X产品适用于对通信速度要求不高,需要设计可靠简单的嵌入式产品。
VK322X系列产品的主接口为SPI同步传行总线,最高传输速度为4M bit/s。适合于带SPI接口的MCU/DSP扩展异步串口。大多数DSP都只有同步串口,通过SPI接口实现异步串口的桥接和扩展,可以简化并行总线扩展串口的硬件规模和模拟异步串口的软件开销。
VK323X系列产品同时具备SPI和UART两种可以选择的主接口,扩展子串口具备硬件流量控制和RS-485自动收发功能,尤其适合于需要高可靠数据传输的RS-485总线应用。
VK325X产品为8位并行总线接口的UART器件,VK326X为同时具备3种可选主机接口的UART器件。这两个器件应用于需要减少备货种类,需要进行大量数据传输的应用。
5.2 设计建议:
异步IC卡的接口设计:遵从7816-3的异步IC卡为半双工异步通信接口。在实际应用中,可以将子串口的RX,TX短接后直接与IC卡的I/O信号连接,为可靠起见,也可以通过连接7407来驱动IC卡的I/O信号。
MODEM接口的设计:目前的PSTN/GPRS/CDMA/GSM MODEM支持三线串口(TX,RX,GND)通过AT命令操作。但实际应用中,仅仅使用三线串口容易丢包,造成数据重发,使得上传速度变慢,建议使用VK32系列中带MODEM接口的UART器件,用DSR,DTR,RI,DCD来监控MODEM状态,用RTS,CTS来做流控,这样速度可以达到最高.
RS-485总线的设计:RS-485是目前工业领域应用最广的半双工通信系统。直接用MCU对RX485进行控制,有一些细节难于处理:通过MCU的I/O对485收发控制,在系统复位时,I/O可能使485收发器处在发送状态,造成总线上正在进行的通信失效;在数据收发切换中,一般依靠发送缓冲的状态来控制MCU的I/O对收发切换,而此时最后一个字节可能还在移位寄存器中,会造成少发送一个字节的情况;同时,当RS485总线上有大量数据进行传送时,MCU不得不花大量的资源去判断该数据是否是发送给本机的,造成工作效率低。针对这些问题,建议用户在需要用到RS-485时,选用带有RS-485自动收发控制和9位网络自动识别的器件。VK32系列UART器件可以工作在自动RS-485模式下:复位时,RTS处于接收状态,只有在数据发送时,RTS才工作在发送状态,当最后一位数据从移位寄存器中发送完成后,RTS自动转为接收状态。同时,VK32系列的UART支持9位网络地址自动识别,仅当RS-485总线上的地址与UART设定的RS-485网络地址一致时,才产生中断,可以使MCU从大量的与自己无关的数据处理中解脱出来,提高系统的处理能力。
无铅化是半导体行业势不可挡的趋势,VK32系列UART产品全部实现无铅化封装,在回流焊时需要注意焊接温度需要满足相应的温度要求。
小结:
UART(通用异步串口)仍然目前嵌入式系统之间最可靠和最通用的传输方式,各种现行的串行通信总线/接口,如RS-232,RS-485,RS-422,M-BUS,LIN,IrDA等都是基于UART的。传统的UART器件多为基于PC应用设计的,功能复杂,操作繁琐。VK32系列UART器件接口丰富,操作简单,引脚精简,功能强大,可以广泛应用于各种嵌入式系统设计。