发明内容
本发明的目的是针对嵌入式***中UART的发展趋势,提供了一种多总线主机接口,子通道可以独立设置,内置多总线协议处理器和精简寄存器结构的异步串口扩展芯片。
本发明的技术方案如下:
一种多总线接口的通用异步串口扩展芯片,包括主机接口、子通道处理模块、MODEM控制逻辑模块、中断控制逻辑模块和时钟发生器,其特征在于:所述主机接口包括8位并行总线接口、串行***接口SPI总线接口、UART总线接口、内部集成电路总线I2C总线接口、协议处理器、全局寄存器和模式选择控制逻辑模块;所述四种总线接口均与CPU/DSP主机连接,通过总线处理逻辑选择主机对应的总线类型,并通过总线处理逻辑处理SPI、UART、I2C和8位并行总线的数据和数据格式的统一转换;所述全局寄存器设置芯片的主机接口工作状态;所述模式选择控制逻辑模块通过模式选择信号线选择主机接口。
所述CPU/DSP主机即中央处理器/数字信号处理主机。
所述子通道处理模块逻辑处理数据的接收和发送,包括发送先进先出缓冲器FIFO、接收先进先出缓冲器FIFO、波特率发生器、发送移位寄存器、接收移位寄存器、流量控制逻辑和子串口寄存器,所述字通道处理模块还包括IR编码器和IR解码器。
所述子通道处理模块还包括TX串行输出信号线。
所述全局寄存器包括RSV、全局控制寄存器GCR、全局主串口控制寄存器GMUCR、全局中断寄存器GIR、全局XOFF字符寄存器GXOFFH和全局XON字符寄存器GXON,其中RSV为保留寄存器;所述全局寄存器按地址编号为6位地址编号,全局寄存器的地址为XX0000-XX0101,其中XX为00、01、10、11中的任意一个值,其中高2位为通道编号,低4位为寄存器地址编号。
所述子通道处理模块设置有10个对各个子通道进行设置的子串口寄存器,分别为子串口控制寄存器SCTLR、子串口配置寄存器SCONR、子串口流量控制寄存器SFWCR、子串口FIFO控制寄存器SFOCR、子串口自动识别地址寄存器SADR、子串口中断使能寄存器SIER、子串口中断标志寄存器SIFR、子串口状态寄存器SSR、子串口FIFO状态寄存器SFSR和子串口FIFO数据寄存器SFDR。
所述MODEM控制逻辑模块监控和控制与MODEM连接的状态信号。MODEM指的是调制解调器。
所述中断控制逻辑模块产生和控制各种内部中断,包括子串口及MODEM中断和全局中断,中断控制逻辑模块通过IRQ引脚读取全局中断寄存器GIR来获得中断的类型,然后读取相应的中断状态寄存器,最后确定中断源。所述中断状态寄存器包括全局寄存器和子串口寄存器中涉及中断状态的部分。
同时其中每个子串口都有独立的中断***,包括:FIFO数据错误中断,接收地址中断(RS485模式),XOFF发送中断,RTS中断,CTS中断,发送FIFO触发点中断,接收FIFO触发点中断。当任意一个中断使能后,满足中断条件就会产生相应的中断。
所述时钟发生器为芯片提供时钟,该时钟发生器可以用时钟选择信号线CLKSEL引线选择从晶振或者外部时钟源获取时钟。
本发明的基本工作流程如下:
数据发送的处理过程:主机接口,即8位并行总线接口、SPI总线接口、UART总线接口、I2C总线接口将发送来的数据进行处理后传送到相应的子通道FIFO,FIFO里的数据经过流量控制逻辑后,在波特率发生器的作用下,通过发送移位寄存器依次将数据发送到TX串行输出信号线上。
数据接收处理过程:子串口接收到数据后,存储在接收FIFO中,接收到主机接口读取指令后,协议处理器将数据处理成相应的主机总线数据格式并传输给主机。
子通道处理模块中,子串口控制寄存器用于对各个子通道进行设置,IR编解码器用于对红外信号进行编解码;子通道流量控制器包括发送流量控制器和接收流量控制器,用于子通道传输数据时的自动流量控制。
本发明的优点如下:
一、支持8位并行总线,SPI总线,I2C,UART等多种主机总线接口,内置多种总线协议处理器,可以实现多种总线扩展串口。
8位并行总线接口产品可以通过并行总线为8位,16位,32位MCU进行UART串口扩展。8位并行总线接口UART产品采用了精简控制寄存器设计,并通过管脚复用减少了芯片管脚,简化的软件设计和PCB设计都更适合嵌入式***需求。
SPI接口总线系列产品为带有SPI接口的DSP、MCU实现同步SPI串口到异步UART串口的桥接和扩展。SPI总线接口产品可以将一个SPI同步串行接口桥接/扩展成为1~4个通用异步串口,方便的实现DSP和外设的异步串行通信。
UART接口产品创新的实现了将一个标准3线异步串口(UART)扩展成为2~4个增强功能串口(UART)。芯片内置的UART扩展协议处理逻辑,无需其它的地址信号、控制信号线就可以实现多个独立配置的全双工串口扩展,为需要扩展串口的嵌入式***提供了一个最简洁的解决方案。
I2C总线接口支持400Kbps的快速I2C总线,提供2根可以配置地址的引脚,同一总线上最多可以实现4个同类器件,为需要大量串口扩展的领域提供了一个可行的方案。
二、精简完善的配置寄存器结构,子串口可以独立设置多种工作模式,支持高速通信。
每个子串口通过寄存器可以独立设置波特率和数据格式,子串口最高通信速度可以达到920K bps(5V工作电压)。主机接口支持的SPI总线最高传输速率为4M bits/s,主机8位并行总线的最高传输速率为10M bit/s。
完善的FIFO功能,每个通道独立的16级接收和发送FIFO,每个FIFO有4个可编程触发点设置。完善的FIFO功能可以进行发送/接收的数据缓冲,减少DSP/CPU对数据传输的操作,提高CPU/DSP的效率和数据传输的可靠性。
子串口通道可以配置成软件或硬件自动流量控制,满足高速数据传输中流量控制的需要。
子串口具备可编程的硬件RS-485自动控制功能和自动9位网络地址识别功能,大大降低处理器的负担,尤其适用于工业RS-485组网。
三、每个通道具备独立可控的数据广播接收功能,可以应用与需要数据广播传输和控制的嵌入式***中。
四、所有UART(包括UART主接口和子通道UART)都支持IRDA红外通信。
具体实施方式
实施例1
如图1所示,一种多总线接口的通用异步串口扩展芯片,包括主机接口、子通道处理模块、MODEM控制逻辑模块、中断控制逻辑模块和时钟发生器,所述主机接口包括8位并行总线接口、串行***接口SPI总线接口、UART总线接口、内部集成电路总线I2C总线接口、协议处理器、全局寄存器和模式选择控制逻辑模块;所述四种总线接口均与CPU/DSP主机连接,通过总线处理逻辑选择主机对应的总线类型,并通过总线处理逻辑处理SPI、UART、I2C和8位并行总线的数据和数据格式的统一转换;所述全局寄存器设置设置芯片主机接口工作状态;所述模式选择控制逻辑模块通过模式选择信号线选择主机接口,图1所示M1、M0为选择信号线。
所述CPU/DSP主机即中央处理器/数字信号处理主机。
所述子通道处理模块逻辑处理数据的接收和发送,包括发送FIFO、接收FIFO、波特率发生器、发送移位寄存器、接收移位寄存器、流量控制逻辑和子串口寄存器,所述字通道处理模块还包括IR编码器和IR解码器。
所述MODEM控制逻辑模块监控和控制与MODEM连接的状态信号。
所述中断控制逻辑模块产生和控制各种内部中断,包括子串口及MODEM中断和全局中断,中断控制逻辑模块通过IRQ引脚读取全局中断寄存器GIR来获得中断的类型,然后读取相应的中断状态寄存器,最后确定中断源,中断结构如图2所示。所述中断状态寄存器包括全局寄存器和子串口寄存器中涉及中断状态的部分。
同时,其中每个子串口都有独立的中断***,包括:FIFO数据错误中断,接收地址中断(RS485模式),XOFF发送中断,RTS中断,CTS中断,发送FIFO触发点中断,接收FIFO触发点中断。当任意一个中断使能后,满足中断条件就会产生相应的中断。
每个子串口都有独立的中断***,包括:FIFO数据错误中断,接收地址中断(RS485模式),XOFF发送中断,RTS中断,CTS中断,发送FIFO触发点中断,接收FIFO触发点中断。当任意一个中断使能后,满足中断条件就会产生相应的中断。
所述时钟发生器为芯片提供时钟,通过选择外部振荡器输入输出XTAL1、XTAL2和时钟选择信号线CLKSEL三种方式中的一种方式来获取时钟。该时钟发生器可以用CLKSEL引线选择从晶振或者外部时钟源获取时钟。
本发明的基本工作流程如下:
数据发送的处理过程:主机接口,即8位并行总线接口、SPI总线接口、UART总线接口、I2C总线接口,将发送来的数据进行处理后传送到相应的子通道FIFO,FIFO里的数据经过流量控制逻辑后,在波特率发生器的作用下,通过发送移位寄存器依次将数据发送到TX串行输出信号线上。
数据接收处理过程:子串口接收到数据后,存储在接收FIFO中,接收到主机接口读取指令后,协议处理器将数据处理成相应的主机总线数据格式并传输给主机。
子通道处理模块中,子串口控制寄存器用于对各个子通道进行设置,IR编解码器用于对红外信号进行编解码;子通道流量控制器包括发送流量控制器和接收流量控制器,用于子通道传输数据时的自动流量控制。
实施例2
一种多总线接口的通用异步串口扩展芯片,本芯片采用精简寄存器结构,寄存器按地址编号为6位地址编号,地址为000000~111111。
该芯片的主机接口包括RSV、全局控制寄存器GCR、全局主串口控制寄存器GMUCR、全局中断寄存器GIR、全局XOFF字符寄存器GXOFFH和全局XON字符寄存器GXON一共6个全局寄存器。
所述全局寄存器的地址为XX0000-XX0101,其中XX为00、01、10、11中的任意一个值,其中高2位为通道编号,低4位为寄存器地址编号,其低4位地址具体排列见下表:
全局寄存器列表如下:
寄存器地址[3:0] |
寄存器名称 |
类型 |
寄存器功能描述 |
(XX)0000 |
RSV |
无 |
保留 |
(XX)0001 |
GCR |
R/W |
全局控制寄存器 |
(XX)0010 |
GMUCR |
R/W |
全局主串口控制寄存器 |
(XX)0011 |
GIR |
R/W |
全局中断寄存器 |
(XX)0100 |
GXOFF |
R/W |
全局XOFF字符寄存器 |
(XX)0101 |
GXON |
R/W |
全局XON字符寄存器 |
下面是各个全局寄存器的具体描述:
GCR全局控制寄存器:(0001)
位 |
复位值 |
功能描述 |
类型 |
Bit7 |
0 |
GBDEN全局广播使能位 |
W/R |
|
|
0:禁止数据广播1:使能数据广播 |
|
Bit6 |
0 |
IDEL软件IDEL使能位0:唤醒正常工作1:进入IDEL模式 |
W/R |
Bit5 |
0 |
DCDF载波标志位DCD引脚状态 |
R |
Bit4 |
0 |
DSRF数据设备就绪标志位DSR引脚状态 |
R |
Bit3 |
0 |
DTRC数据终端准备就绪控制位DTR引脚控制位 |
W/R |
Bit2 |
0 |
RIF振铃指示状态位RI引脚状态 |
R |
Bit1 |
0 |
MINT MODEM信号中断标志位0:无MODEM中断标志1:MODEM中断标志(在EMINT使能的情况下,DCD,DSR,RI的状态改变将产生该中断) |
R |
Bit0 |
0 |
ENMINT MINT中断使能控制位0:禁止MINT中断1:使能MINT中断 |
W/R |
全局主串口控制寄存器:(0010)
位 |
复位值 |
功能描述 |
类型 |
Bit7---4 |
0011 |
主串口波特率设置,具体设置值参见表8.9.1(Bit7-4对应B3-B0) |
W/R |
Bit3 |
0 |
PAEN主UART校验设定(数据长度设置位)0:8位数据(无带校验位)1:9位数据(带第9位校验位) |
W/R |
Bit2 |
0 |
STPL停止位长度设置位0:1位停止位1:2位停止位 |
W/R |
Bit1--0 |
00 |
PAM1-0奇偶校验模式选择00:强制0校验 01:奇校验10:偶校验 11:强制1校验 |
W/R |
GIR全局中断寄存器:(0011)
|
|
|
型 |
Bit7 |
0 |
U4IEN子串口4中断使能控制位0:禁止子串口4中断1:使能子串口4中断 |
W/R |
Bit6 |
0 |
U3IEN子串口3中断使能控制位0:禁止子串口3中断1:使能子串口3中断 |
W/R |
Bit5 |
0 |
U2IEN子串口2中断使能控制位0:禁止子串口2中断1:使能子串口2中断 |
W/R |
Bit4 |
0 |
U1IEN子串口1中断使能控制位0:禁止子串口1中断1:使能子串口1中断 |
W/R |
Bit3 |
0 |
U4IF子串口4中断标志位0:子串口4无中断1:子串口4有中断 |
R |
Bit2 |
0 |
U3IF子串口3中断标志位0:子串口3无中断1:子串口3有中断 |
R |
Bit1 |
0 |
U2IF子串口2中断标志位0:子串口2无中断1:子串口2有中断 |
R |
Bit0 |
0 |
U1IF子串口1中断标志位0:子串口1无中断1:子串口1有中断 |
R |
GXOFF全局XOFF字符寄存器:(0100)
位 |
复位值 |
功能描述 |
类型 |
Bit7---0 |
00000000 |
XOFF特殊字符寄存器 |
W/R |
GXON全局XON字符寄存器:
位 |
复位值 |
功能描述 |
类型 |
Bit7---0 |
00000000 |
XON特殊字符寄存器 |
W/R |
所述子通道处理模块设置有10个对各个子通道进行设置的子串口寄存器,分别为子串口控制寄存器SCTLR、子串口配置寄存器SCONR、子串口流量控制寄存器SFWCR、子串口FIFO控制寄存器SFOCR、子串口自动识别地址寄存器SADR、子串口中断使能寄存器SIER、子串口中断标志寄存器SIFR、子串口状态寄存器SSR、子串口FIFO状态寄存器SFSR和子串口FIFO数据寄存器SFDR。
子串口寄存器列表如下:
寄存器地址[3:0] |
寄存器名称 |
类型 |
寄存器功能描述 |
(C1,C0)0110 |
SCTLR |
R/W |
子串口控制寄存器 |
(C1,C0)0111 |
SCONR |
R/W |
子串口配置寄存器 |
(C1,C0)1000 |
SFWCR |
R/W |
子串口流量控制寄存器 |
(C1,C0)1001 |
SFOCR |
R/W |
子串口FIFO控制寄存器 |
(C1,C0)1010 |
SADR |
R/W |
子串口自动识别地址寄存器 |
(C1,C0)1011 |
SIER |
R/W |
子串口中断使能寄存器 |
(C1,C0)1100 |
SIFR |
R |
子串口中断标志寄存器 |
(C1,C0)1101 |
SSR |
R |
子串口状态寄存器 |
(C1,C0)1110 |
SFSR |
RW |
子串口FIFO状态寄存器 |
(C1,C0)1111 |
SFDR |
RW |
子串口FIFO数据寄存器 |
注:(C1,C0)表示子通道号,00~11分别对应子串口1到子串口4。SCTLR子串口控制寄存器:(0110)
子串口寄存器其排列为C1C0REG[3:0],高两位为子串口通道号,低4位为寄存器地址。
位 |
复位值 |
功能描述 |
类型 |
Bit7---4 |
0011 |
子串口波特率设置,具体设置值参见表8.9.1(Bit7-4对应B3-B0) |
W/R |
Bit3 |
0 |
UTEN子串口使能控制位0:不使能,此时该子串口通道不能进行数据收发 |
W/R |
|
|
1:使能,使能后该子串口可以进行正常的数据收发 |
|
Bit2 |
0 |
MDSEL 485和232模式选择控制位0:RS232收发模式1:RS485自动收发模式,该模式下,RTS作为自动收发控制信号 |
W/R |
Bit1 |
0 |
RBDEN允许接收广播数据控制位1:允许子串口接收广播数据0:禁止子串口接收广播数据 |
W/R |
Bit0 |
0 |
IREN红外模式选择位0:标准串口模式1:红外数据模式 |
W/R |
SCONR子串口配置寄存器:(0111)
位 |
复位值 |
功能描述 |
类型 |
Bit7 |
0 |
SSTPL子串口停止位长度控制位0:1位停止位1:2位停止位 |
W/R |
Bit6 |
0 |
SPAEN子串口校验使能(数据长度控制)位0:无校验位(8位数据)1:有校验位(9位数据) |
W/R |
Bit5 |
0 |
SFPAEN子串口强制校验使能控制位0:不使用子串口强制校验1:使能子串口强制校验 |
W/R |
Bit4-3 |
00 |
PAM1-0奇偶校验模式选择:当SFPAEN=1子串口强制校验使能时:00:强制0校验;01,10:强制用户校验;11:强制1校验当SFPAEN=0,子串口普通校验模式时:00:0校验;01:奇校验;10:偶校验;11:1校验 |
W/R |
Bit2 |
1 |
AOD子串口地址/数据模式选择位(工作在RS485模式时) |
W/R |
|
|
0:允许接收所有数据字节1:只允许接收地址字节 |
|
Bit1 |
0 |
AREN网络地址自动识别控制位0:禁止网络地址自动识别1:允许网络地址自动识别详细操作参见RS-485操作模式介绍 |
W/R |
Bit0 |
0 |
AVEN网络地址可见控制位0:禁止网络地址可见,网络地址不写入FIFO1:允许网络地址可见,网络地址写入FIFO |
W/R |
SFWCR子串口流量控制寄存器:(1000)
位 |
复位值 |
功能描述 |
类型 |
Bit7-6 |
00 |
HRTL1-0暂停发送触发点控制(RS232模式下有效):00=3bytes 01=7bytes 10=11bytes 11=15bytes在流量控制使能的条件下,当接收FIFO中数据的增加到该触发点时,启动相应的软件/硬件流量控制,控制通道相连接的设备暂停数据发送。 |
W/R |
Bit5-4 |
00 |
PRTL1-0继续发送触发点控制(RS23模式下有效):00=1bytes 01=4bytes 10=8bytes 11=12bytes在流量控制使能的条件下,当接收FIFO中的数据降低到该触发点时,通过软件/硬件流量控制机制,控制与该通道相连接的设备继续发送数据。 |
W/R |
Bit3 |
0 |
FWCEN流量控制使能控制位(RS232模式下有效)0:禁止子串口自动流量控制1:允许子串口自动流量控制 |
W/R |
Bit2 |
0 |
FWCM流量控制模式(当流量控制使能时有效)0:子串口自动软件流量控制1:子串口自动硬件流量控制 |
W/R |
Bit1 |
0 |
AOMH硬件流量控制选择(当硬件流量控制使能时有效) |
W/R |
|
|
0:自动硬件流量控制1:手动流量控制 |
|
Bit0 |
0 |
XVEN XON/XOFF可见设置0:XON/XOFF字符不可见1:XON/XOFF字符写入FIFO,在主机端可见XOFF |
W/R |
SFOCR子串口FIFO控制寄存器:(1001)
位 |
复位值 |
功能描述 |
类型 |
Bit7-6 |
00 |
TFTL1-0发送FIFO触点控制:00=0bytes 01=4bytes 10=8bytes 11=12bytes当接收FIFO的数据减少到该触发点时,提示主机可以继续向发送FIFO写入数据。 |
W/R |
Bit5---4 |
00 |
RFTL1-0接收FIFO触点控制:00=1bytes 01=4bytes 10=8bytes 11=14bytes当接收FIFO的数据增加到该触发点是,提示主机接口从接收FIFO中读取数据。 |
W/R |
Bit3 |
0 |
TFEN发送FIFO使能控制位0:禁止发送FIFO,待发送的数据不写入发送FIFO,直接进入发送移位寄存器1:使能发送FIFO,待发送的数据写入发送FIFO,通过FIFO发送 |
W/R |
Bit2 |
0 |
RFEN接收FIFO使能0:禁止接收FIFO,接收到的数据不写入接收FIFO1:使能接收FIFO,接收到的数据写入接收FIFO |
W/R |
Bit1 |
0 |
TFCL清除发送FIFO0:不清除TX FIFO1:清除发送TX FIFO中所有数据 |
W/R |
Bit0 |
0 |
RFCL清除接收FIFO0:不清除接收FIFO中数据1:清除接收FIFO中所有数据 |
W/R |
SADR子串口自动识别地址寄存器:(1010)
位 |
复位值 |
功能描述 |
类型 |
Bit7---0 |
00000000 |
子串口自动识别网络地址寄存器。(RS485模式下有效) |
W/R |
SIER子串口中断使能寄存器:(1011)
位 |
复位值 |
功能描述 |
类型 |
Bit7 |
0 |
RXBY RX_BUSY状态位0:该通道RX空闲1:该通道RX正在接收数据 |
R |
Bit6 |
0 |
FOEIEN FIFO数据错误中断使能位:0:禁止FIFO数据错误产生中断1:使能FIFO数据错误产生中断 |
W/R |
Bit5 |
0 |
RAIEN接收地址中断使能位:0:禁止子串口接收地址产生中断1:使能子串口接收地址产生中断 |
W/R |
Bit4 |
0 |
XFIEN XOFF中断使能位:0:禁止XOFF中断1:使能XOFF中断,当子串口接收到XOFF特殊字符时产生中断 |
W/R |
Bit3 |
0 |
RSTIEN RTS中断使能位0:禁止RTS中断1:使能RTS中断 |
W/R |
Bit2 |
0 |
CTSIEN CTS中断使能位0:禁止CTS中断1:使能CTS中断 |
W/R |
Bit1 |
0 |
TRIEN发送FIFO触点中断使能位0:禁止发送FIFO触点中断1:使能发送FIFO触点中断 |
W/R |
Bit0 |
0 |
RFIEN使能接收FIFO触点中断 |
W/R |
|
|
0:禁止接收FIFO触点中断1:使能接收FIFO触点中断 |
|
SIFR子串口中断标志寄存器:(1100)
位 |
复位值 |
功能描述 |
类型 |
Bit7 |
0 |
CTSR指示CTS的状态位当前CTS引脚的值 |
R |
Bit6 |
0 |
FOEINT子串口FIFO数据错误中断标志位0:无FIFO数据错误中断1:FIFO数据错误(当FIFO中数据出错时产生该中断) |
R/W |
Bit5 |
0 |
RAINT子串口自动地址识别中断位0:无地址自动识别中断1:自动地址识别中断(当接收到的数据为地址字节且与SDAR匹配时产生中断) |
R/W |
Bit4 |
0 |
XFINT XOFF中断标志位0:无XOFF中断1:有XOFF中断 |
R/W |
Bit3 |
0 |
RSTINT RTS中断标志位0:无RTS中断1:有RTS中断 |
R/W |
Bit2 |
0 |
CTSINT CTS中断标志位0:读取该寄存器后自动清零1:有CTS中断 |
R/W |
Bit1 |
0 |
TFINT子串口发送FIFO触点中断标志位0:无TFINT中断1:有TFINT中断 |
R/W |
Bit0 |
0 |
RFINT子串口接收FIFO触点中断标志位0:无RFINT中断1:有RFINT中断 |
R/W |
SSR子串口状态寄存器:(1101)
位 |
复位值 |
功能描述 |
类型 |
Bit7 |
X |
OE子串口接收FIFO中当前数据(最早写入)的溢出错误标志位:0:无OE错误1:有OE错误 |
R |
Bit6 |
X |
FE子串口接收FIFO中当前数据(最早写入)的帧错误标志位:0:无FE错误1:有FE错误 |
R |
Bit5 |
X |
PE子串口接收FIFO中当前数据(最早写入)的校验错误标志位0:无PE错误1:有PE错误 |
R |
Bit4 |
X |
RX8子串口接收FIFO中当前数据(最早写入)的第9位(Bit8)数据值 |
R |
Bit3 |
0 |
TFFL子串口发送FIFO满标志0:子串口发送FIFO未满1:子串口发送FIFO满 |
R |
Bit2 |
1 |
TFEM子串口发送FIFO空标志0:子串口发送FIFO位空1:子串口发送FIFO空 |
R |
Bit1 |
0 |
TXBY子串口发送TX忙标志0:子串口发送TX空1:子串口发送TX忙 |
R |
Bit0 |
1 |
RFEM子串口接收FIFO空标志0:子串口接收FIFO未空1:子串口接收FIFO空 |
R |
SFSR子串口FIFO状态寄存器:(1110)
位 |
复位值 |
功能描述 |
类型 |
Bit7-4 |
0000 |
TCNT3-0子串口发送FIFO中的数据个数 |
R |
Bit3--0 |
0000 |
RCNT3-0子串口接收FIFO中的数据个数 |
R |
SFDR子串口FIFO数据寄存器:(1111)
位 |
复位值 |
功能描述 |
类型 |
Bit7--0 |
xxxxxxxx |
写操作时:写入的子串口发送FIFO的数据读操作十:读出的子串口接收FIFO的数据 |
W/R |
实施例3
本发明中的芯片支持子串口通道可独立配置的数据广播模式。通过设置全局寄存器GCR中的GBDEN位,将主口的全局广播设置为使能,然后设置需要接收广播数据的相应子串口通道的SCTLR的RDBEN位,使得该通道可以接收数据广播。主接口控制逻辑检测到广播设置后,将主口的数据发送到所有子串口,广播数据能被设置为接收广播使能的子串口接收,而未设置接收数据广播的子串口将会忽略这些数据。从而实现了可以独立配置的数据广播功能。
实施例4
该芯片还支持休眠和自动唤醒模式,向GCR的IDLE位写入1,控制逻辑检测到该值后,在完成现有操作后,将停掉所有内部时钟,芯片进入休眠模式以降低功耗。
在休眠模式下,可以被主口和子串口自动唤醒:一旦SCS,CS,主口MRX,子串口RX有数据改变,芯片的控制逻辑检测到变化后,将在数个时钟周期内自动启动***时钟,进入正常收发。
考虑到目前嵌入式领域中新型的DSP/FPGA的工作电压大多为2.5V,而大量的工业控制领域的MCU仍然需要在5V电压下工作,本芯片涉及的UART设计的工作电压范围为2.5V~5.5V。同时,该系列芯片可以在休眠和自动唤醒模式下工作,有效的降低功耗。
实施例5
本设计允许独立使能或禁止每个子串口通道。在子串口控制寄存器中有一个使能控制位,只有当其设置为使能时,子串口控制逻辑才开启子串口的收发功能。可以禁止不使用的子串口通道以降低功耗。子串口通道只有处在使能状态才能接收和发送数据。
实施例6
本设计在RS-485模式下,具备自动收发控制和网络地址自动识别功能。
通过设置子串口寄存器为RS-485模式,子串口控制逻辑将使该串口工作在RS-485模式下。此时,流量控制将被禁止。RTS信号用于控制RS485收发器的自动收发控制。
只有在发送数据时,RTS才为高,其它情况下,RTS都保持低。
芯片和485的收发器的连接如图3。
网络地址和自动地址识别工作原理:
RS485模式下,每个UART有一个唯一的网络地址,本芯片提供了一个8位寄存器进行RS485网络设置。当自动网络地址识别功能使能时,芯片对接收到的数据进行自动识别。
如果接收到的数据为数据字节或者是与SADR中地址字节不匹配的地址字节时,忽略这些数据。如果该子串口接收到的数据为地址字节,且与SADR中的数据匹配,则本芯片进入接收状态,将该地址字节后的数据字节写入接收FIFO中。当该子串口在数据接收状态下,接收到一个地址字节,且该字节与SADR不匹配时,接收将被自动禁能。
自动和手动地址识别工作原理:
RS485模式下,SCONR子串口配置寄存器中的AOD位为数据地址选择位。其默认值为1,表明该子串口只接收地址字节而忽略数据字节。
在RS485自动地址模式下,当接收到的地址与SADR的地址一致时,AOD将自动变为0,此时该子串口可以继续接收数据。当子串口接收到的下一个地址字节与SARD的地址不一致时,AOD位将自动置1,不再接收其后的数据字节。
在RS485手动地址识别模式下,RS485地址由上层软件判断,AOD位需要手动设置。AOD设置为0时表明可以接收其后的所有数据,当AOD设置为1时,表明将忽略除了地址以外的所有数据。当接收到地址字节时,芯片将产生中断,通知MCU将收到的地址字节进行判断,以决定是否设置AOD以接收其后的数据。
网络地址可见设置工作流程:
当子串口设置为手动地址识别模式时,RS485网络地址总是可见。
在子串口社设置为自动地址识别模式时,可以设置SCONR子串口配置寄存器中的AVEN位,改变网络地址可见属性。当设为地址可见时,接收到的网络地址进入接收FIFO,否则将被忽略。
实施例7
一种多总线接口的通用异步串口扩展芯片,所述主机接口包括8位并行总线接口、串行***接口SPI总线接口、UART总线接口、I2C总线接口、全局寄存器和模式选择控制逻辑模块;所述四种总线接口的工作原理和流程如下所述。
1、SPI接口模式操作
SPI与主机的连接,如图4所示。
所示SPI接口包括如下四个信号:
SDIN:SPI数据输入。
SDOUT:SPI数据输出。
SCLK:SPI串行时钟。
SCS:SPI片选(从属选择)。
SPI接口的操作时序为:
本芯片工作在SPI同步串行通信的从机模式下,支持SPI模式0标准。为实现主机和本芯片的通信,在主机端需要设置CPOL=0(SPI时钟极性选择位),CPHA=0(SPI时钟相位选择位)。
SPI接口的操作时序如图5所示。
为实现SPI总线扩展串口操作,本芯片的SPI总线通信采用如下协议:
SPI写寄存器
SPI |
控制字节GMD |
数据字节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 |
OE |
FE |
PE |
RX8 |
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 |
TXF |
TXE |
TXB |
RXB |
D7r |
D6r |
D5r |
D4r |
D3r |
D2r |
D1r |
D0r |
说明:
C1C0:子串口通道号00~11分别对应子串口1到子串口4
A3-A0:子串口寄存器地址
D8t:9位数据长度发送时第9位的数据
INT1-INT4:通道1到4的中断标志
OE:=1时溢出错误标志
FE:=1时帧错误标志
PE:=1时校验错误标志
RX8:接收的第9位数据
TC3-TC0:发送FIFO数据的个数
RC3-RC0:接收FIFO数据的个数
TXF:=1时发送FIFO满
TXE:=1时发送FIFO空
TXB:=1时发送FIFO Busy
RXE:=1时接收FIFO空
2、UART接口与主机的连接,如图6所示。
当本芯片的主接口为UART时,仅需要RX,TX连接主机。采用标准的UART协议进行通信。上电后,主机以的复位值所确定的波特率和数据格式对本芯片进行初始化设置后即可方便的实现串口扩展功能。
写操作时,先向本芯片的RX写入一个命令字节(Command Byte),随后写入相应的数据字节,其操作时序(无校验,禁止转义和红外模式)如图7所示。
读操作时,先向本芯片的RX写入命令字节,相应的数据字节从TX读取,其操作时序(无校验,禁止转义和红外模式)如图8所示。
主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 |
D |
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个数据字节。
向子串口读/写数据有两种方法:
a.读/写寄存器方式,对子串口FIFO寄存器SFDR(1111)进行读/写操作,一次只能读/写一个字节;
b.读/写FIFO方式,对接收/发送FIFO直接进行读/写操作,一次最多可以读写16个连续数据。
主UART接口红外操作模式:
当主串口IR引脚接高电平时,芯片主UART工作在红外模式下,主UART与主机的通信遵从红外通信协议,其操作时序为红外模式操作。
当主串口IR引脚接低电平时,芯片工作在普通模式下。
3、并行8位总线与主机的连接:
本发明的芯片支持8位并行总线与主机连接,在8位总线模式下,芯片仅需要占用两个地址空间,一个用来操作地址寄存器,一个用来操作数据寄存器。当采用查询方式工作时,IRQ可以不连接,其连接如图9所示。
并行8位总线接口的操作时序:
本芯片的8位并行总线接口完全兼容主流的8位MCU(如8051)的操作时序,写操作时序如图10所示,读操作时序如图11所示。
并行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 |
70 |
60 |
5C1 |
4C0 |
3A3 |
2A2 |
1A1 |
0A0 |
7D7 |
6D6 |
5D5 |
4D4 |
3D3 |
2D2 |
1D1 |
0D0 |
说明:
C1,C0:子串口通道号,00~11分别对应子串口1到子串口4。
A3,A2,A1,A0:子串口寄存器地址
本芯片与同类产品相比的特点:
1.多总线接口:主接口有SPI,串口,8位并行,I2C总线可选择,每个子串口数据格式和波特率独立设置。
2.精简寄存器结构,内建结构精简,功能完善的全局和子串口寄存器设计结构。
3.内建串口扩展协议,串口扩展串口模式下,主串口仅需要一个标准的三线串口,RXD,TXD,GND,无须占用额外的地址信号线。
4.采用休眠和自动唤醒设计,US级的自动唤醒,不影响起始字节的接收和发送。
5.宽工作电压:2.5V--5.5V。
6.子串口和主串口都支持红外模式。
7.完善的FIFO功能:每个通道独立的16级RX和TX FIFO。
8.完善的流量控制:硬件和软件流量控制,自动和手动流量控制可选择。
9.RS485自动收发和自动网络地址识别,特别适合工业组网
10.独创的独立配置数据广播功。
4、I2C总线的协议操作与UART总线的协议操作一致。