摘要:UART以其簡單可靠,抗干擾強,傳輸距離遠,組網方便,被認為是嵌入式系統(tǒng)中進行串行數據傳輸的最佳方式。本文介紹了專為嵌入式系統(tǒng)設計的VK32系列新型多總線接口UART器件的原理及應用技術。
1.嵌入式系統(tǒng)中串口擴展的需求:
而在嵌入式領域,由于UART具有操作簡單,工作可靠,抗干擾強,傳輸距離遠(組成485網絡可以傳輸1200米以上),設計人員普遍認為UART是從CPU或微控制器向系統(tǒng)的其他部分傳輸數據的最佳方式,因此它們被大量地應用在工業(yè)、通信、和家電控制等嵌入式領域。通常MCU/CPU都會自帶一個UART串口,但實際應用中一個串口往往不夠用,需要進行UART串口擴展。
目前的大多數UART器件是以計算機總線轉換UART為應用基礎的,其通用性、管腳、寄存器與20年前很少改變,針對嵌入式應用,目前的UART器件普遍存在操作復雜,引腳多,價格較高等弱點,不能滿足和適應的嵌入式系統(tǒng)發(fā)展的需要。
針對嵌入式系統(tǒng)中UART的發(fā)展趨勢,維肯電子設計推出了VK32XX系列新型多總線接口UART器件,其特點為:
- 支持8位并行總線,SPI總線,UART等多種主機總線接口:
8位并行總線接口產品可以替代目前廣泛使用的16C55X系列UART用于為8位,16位,32位MCU進行UART串口擴展。VK32系列8位并行總線接口UART產品采用了精簡控制寄存器設計),并通過管腳復用減少了芯片管腳,簡化的軟件設計和PCB設計都更適合嵌入式系統(tǒng)需求。
SPI接口總線系列產品為帶有SPI接口的DSP、MCU實現同步SPI串口到異步UART串口的橋接和擴展,尤其針對目前廣泛應用的DSP系統(tǒng),大多數DSP都只有同步串口,只能用于與具有同步通信接口的外設進行通信。V32系列SPI總線接口可以將一個SPI同步串行接口橋接/擴展成為1~4個通用異步串口,方便的實現DSP和外設的異步串行通信。
UART接口產品創(chuàng)新的實現了將一個標準3線異步串口(UART)擴展成為2~4個增強功能串口(UART)。芯片內置的UART擴展協(xié)議處理邏輯,無需無需其它的地址信號、控制信號線就可以實現多個獨立配置的全雙工串口擴展,為需要擴展串口的嵌入式系統(tǒng)提供了一個最簡潔的解決方案。
- 支持高速傳輸,每個子波特率可以獨立設置為300bps—960 kbps,主機支持的SPI總線 最高傳輸速率為5M bits/s, 主機8位并行總線的最高傳輸速率為10M bit/s.
- 寬工作電壓和低功耗設計,考慮到目前嵌入式領域中新型的DSP/FPGA的工作電壓大多為2.5V,而大量的工業(yè)控制領域的MCU仍然需要在5V電壓下工作,VK32系列UART設計的工作電壓范圍為2.5V~5.5V。同時,該系列芯片可以工作在自動休眠和喚醒模式下,有效的降低功耗。
- 完善的FIFO功能,每個通道獨立的16級接收和發(fā)送FIFO,每個FIFO有4個可編程觸發(fā)點設置。完善的FIFO功能可以進行發(fā)送/接收的數據緩沖,減少DSP/CPU對數據傳輸的操作,提高CPU/DSP的效率和數據傳輸的可靠性。
- 子串口通道具備軟件或硬件自動流量控制,滿足高速數據傳輸中流量控制的需要。
- 子串口具備可編程的硬件RS-485自動控制功能和自動9位網絡地址識別功能,大大降低處理器的負擔,尤其適用于工業(yè)RS-485組網。
- 每個通道具備獨立可控的數據廣播接收功能,可以應用與需要數據廣播傳輸和控制的嵌入式系統(tǒng)中。
- 所有UART(包括UART主接口和子通道UART)都支持IrDA紅外通信.
2.VK32系列新型多總線接口UART器件的原理及框圖:
VK3266是VK32系列中功能最全的型號,本文以VK3266的原理圖為基礎,對VK32系列UART芯片原理進行介紹:
VK3266原理框圖
VK3266內部結構包括主機接口,子通道部分,MODEM控制邏輯,中斷控制邏輯幾部分。
主機接口為VK3266與CPU/DSP相連的接口,通過M1,MO模式選擇信號線,可以分別選擇8位并行總線,SPI總線,UART三種接口與主機相連。
MODEM控制邏輯用于與MODEM相連時的狀態(tài)信號線的監(jiān)控和控制。
中斷控制邏輯用于產生和控制各種內部中斷。
時鐘發(fā)生器為芯片的提供時鐘,可以用CLKSEL引線選擇從晶振還是外部時鐘源獲取時鐘。
子通道邏輯部分處理各個的數據接收和發(fā)送。數據發(fā)送的處理過程為:主機接口將從主口總線發(fā)送來的數據進行處理后傳送到相應的子通道FIFO,FIFO里的數據經過流量控制邏輯后,在波特率發(fā)生器的作用下,通過發(fā)送移位寄存器順次將數據發(fā)送到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 |
控制字節(jié) CMD |
數據字節(jié) 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讀寄存器
分類 |
控制字節(jié) CMD |
數據字節(jié) 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位數據長度發(fā)送時第9位的數據
INT1—INT4:通道1到4的中斷標志
TC3—TC0:發(fā)送FIFO數據的個數
RC3—RC0:接收FIFO數據的個數?
3.2 UART主機接口的連接和操作:
當VK32XX的主接口為UART時,僅需要RX,TX連接主機。采用標準的UART協(xié)議進行通信。上電后,主機以VK32XX的復位值所確定的波特率和數據格式對VK32XX進行初始化設置后即可方便的實現串口擴展功能。
UART接口與主機連接圖
主UART接口的操作時序
寫操作時,先向VK3266的RX寫入一個命令字節(jié)(Command Byte),隨后寫入相應的數據字節(jié),其操作時序(無校驗,禁止轉義和紅外模式)如圖10.2所示:
UART主接口寫操作時序
讀操作時,先向VK3266的RX寫入命令字節(jié),相應的數據字節(jié)從TX讀取,其操作時序(無校驗,禁止轉義和紅外模式)如圖
UART主接口讀操作時序
主UART通信傳輸協(xié)議描述:
寫寄存器:
分類 |
控制字節(jié) CMD |
1個數據字節(jié) 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:(多字節(jié)寫入)
分類 |
控制字節(jié) CMD |
[N3 N2 N1 N0]個數據字節(jié) 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
讀寄存器:
分類 |
控制字節(jié) CMD |
1個數據字節(jié) 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:(多字節(jié)讀取)
分類 |
控制字節(jié) CMD |
[N3 N2 N1 N0]個數據字節(jié) 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的數據字節(jié)個數;當其為0000時,表明后接1個數據字節(jié);當其為1111時,表明后接16個數據字節(jié);
向子串口讀/寫數據有兩種方法:
- 讀/寫寄存器方式,對子串口FIFO寄存器SFDR(1111)進行讀/寫操作,一次只能讀/寫一個字節(jié);
- 讀/寫FIFO方式,對接收/發(fā)送FIFO直接進行讀/寫操作,一次最多可以讀寫16個連續(xù)數據
3.3 8位并行總線主機接口的連接和操作
VK3266支持8位并行總線與主機連接,在8位總線模式下,VK3266僅需要占用兩個地址空間,一個用來操作地址寄存器,一個用來操作數據寄存器。當采用查詢方式工作時,IRQ可以不連接。
其連接如圖所示:
并行8位總線主接口連接圖
并行8位總線接口的操作時序:
VK3266的8位并行總線接口完全兼容主流的8位MCU(如8051)的操作時序。
.寫操作時序:
8位總線寫操作時序
讀操作時序:
并行8位總線讀操作時序
并行8位總線傳輸協(xié)議描述:
寫寄存器:
分類 |
控制字節(jié) CMD (A0=0) |
1個數據字節(jié) 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 |
讀寄存器:
分類 |
控制字節(jié) CMD (A0=0) |
1個數據字節(jié) 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器件在嵌入式系統(tǒng)中的應用:
VK系列UART器件的在嵌入式產品中的應用領域包括:
多串口服務器/多串口卡,工業(yè)/自動化現場RS-485控制,使用CDMA/GPRS MODEM的無線數據傳輸,車載信息平臺/車載GPS定位系統(tǒng),遠傳自動抄表(AMR)系統(tǒng),稅控POS/銀行終端等金融機具,DSP數據采集和傳輸系統(tǒng)等。
其應用實例如下:
4.1 VK32XX系列UART產品在稅控POS中的應用
VK32系列產品在嵌入式稅控POS平臺設計中的應用
稅控POS機是一個控制密集形的嵌入式系統(tǒng),需要控制大量外設。其基本配置要求的串口打印機,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器件在遠程自動抄表系統(tǒng)中的應用
如圖所示,遠傳自動抄表系統(tǒng)由遠傳表和集中抄表器以及MODEM等部分組成。
在遠傳表中,應用VK3212雙串口擴展IC將單片機的一個UART擴展成兩個UART,擴展出來的兩個串口UART1和UART2分別接RS-485/M-BUS接口和紅外接口。VK3212的UART1設置為RS-485自動收發(fā)和RS-485網絡模式,可以無需MCU的控制,自動完成RS-485/M-BUS的數據自動收發(fā)和自動網絡地址識別。VK3212的UART2設置為紅外模式,用于連接遠傳表的紅外設置窗口。
在集中抄表器中,用一片SPI接口的4通道UART器件VK3234將擴展出4個子串口UART,MCU通過SPI總線與VK3234相連。VK3234的子串口UART設置為RS-485自動收發(fā)模式,每個子通道UART控制的RS-485/MBUS收發(fā)器通過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。整個嵌入式系統(tǒng)共用一個顯示設備,有效的節(jié)省了車內有限的空間。
4.4 ?VK3266系列8位并行總線接口產品在串口服務器中的應用:
在工業(yè)控制等領域,眾多設備的對外通訊接口仍然是低速串口。串口服務器將多個串口設備的數據存儲、轉換以后通過IP網進行傳輸。
圖5顯示了一個8串口服務器(4個RS-232串口、4個RS485串口)的電路原理圖,嵌入式系統(tǒng)中的DSP/CPU的并行位數據線連接2片VK3266實現了8個串口的擴展,通過地址譯碼器控制2片VK3266的CS實現片選控制。在上圖中,VK3266 A連接4個RS-232收發(fā)器,擴展出了4個帶硬件流量控制信號的RS-232串口;VK3266 B則連接了4個RS-485收發(fā)器,將VK3266設置在RS-458自動收發(fā)控制模式下,通過RTS信號控制RS-485收發(fā)器的數據發(fā)送使能DE和數據讀取使能RD信號能實現RS-485的自動收發(fā)控制。
5. VK32系列UART器件的選型參考和設計建議
5.1 選型參考
VK32系列UART包括5個產品系列,各個產品系列的特點如下:
VK321X系列為主接口為UART的產品,僅通過RX,TX和GND三根信號線與主機相連,通過芯片內部的處理協(xié)議采用時分復用的方式將一個串口擴展成為2~4個可以同時工作的全雙工串口。在該模式下,MCU以查詢方式操作UART器件,設計中需要注意的是為保證在時分復用下各個子通道能夠同時全雙工通信,主接口的波特率需要設置為大于各個子串口波特率之和。VK321X產品適用于對通信速度要求不高,需要設計可靠簡單的嵌入式產品。
VK322X系列產品的主接口為SPI同步傳行總線,最高傳輸速度為4M bit/s。適合于帶SPI接口的MCU/DSP擴展異步串口。大多數DSP都只有同步串口,通過SPI接口實現異步串口的橋接和擴展,可以簡化并行總線擴展串口的硬件規(guī)模和模擬異步串口的軟件開銷。
VK323X系列產品同時具備SPI和UART兩種可以選擇的主接口,擴展子串口具備硬件流量控制和RS-485自動收發(fā)功能,尤其適合于需要高可靠數據傳輸的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命令操作。但實際應用中,僅僅使用三線串口容易丟包,造成數據重發(fā),使得上傳速度變慢,建議使用VK32系列中帶MODEM接口的UART器件,用DSR,DTR,RI,DCD來監(jiān)控MODEM狀態(tài),用RTS,CTS來做流控,這樣速度可以達到最高.
RS-485總線的設計:RS-485是目前工業(yè)領域應用最廣的半雙工通信系統(tǒng)。直接用MCU對RX485進行控制,有一些細節(jié)難于處理:通過MCU的I/O對485收發(fā)控制,在系統(tǒng)復位時,I/O可能使485收發(fā)器處在發(fā)送狀態(tài),造成總線上正在進行的通信失效;在數據收發(fā)切換中,一般依靠發(fā)送緩沖的狀態(tài)來控制MCU的I/O對收發(fā)切換,而此時最后一個字節(jié)可能還在移位寄存器中,會造成少發(fā)送一個字節(jié)的情況;同時,當RS485總線上有大量數據進行傳送時,MCU不得不花大量的資源去判斷該數據是否是發(fā)送給本機的,造成工作效率低。針對這些問題,建議用戶在需要用到RS-485時,選用帶有RS-485自動收發(fā)控制和9位網絡自動識別的器件。VK32系列UART器件可以工作在自動RS-485模式下:復位時,RTS處于接收狀態(tài),只有在數據發(fā)送時,RTS才工作在發(fā)送狀態(tài),當最后一位數據從移位寄存器中發(fā)送完成后,RTS自動轉為接收狀態(tài)。同時,VK32系列的UART支持9位網絡地址自動識別,僅當RS-485總線上的地址與UART設定的RS-485網絡地址一致時,才產生中斷,可以使MCU從大量的與自己無關的數據處理中解脫出來,提高系統(tǒng)的處理能力。
無鉛化是半導體行業(yè)勢不可擋的趨勢,VK32系列UART產品全部實現無鉛化封裝,在回流焊時需要注意焊接溫度需要滿足相應的溫度要求。
小結:
UART(通用異步串口)仍然目前嵌入式系統(tǒng)之間最可靠和最通用的傳輸方式,各種現行的串行通信總線/接口,如RS-232,RS-485,RS-422,M-BUS,LIN,IrDA等都是基于UART的。傳統(tǒng)的UART器件多為基于PC應用設計的,功能復雜,操作繁瑣。VK32系列UART器件接口豐富,操作簡單,引腳精簡,功能強大,可以廣泛應用于各種嵌入式系統(tǒng)設計。





