SC16IS752在ARM擴(kuò)展串口中的應(yīng)用
嵌入式設(shè)備中串口是最常用、最簡(jiǎn)單的接口,如何擴(kuò)展CPU的串口,對(duì)于多功能嵌入式設(shè)備有著重要意義。SC16IS752是NXP公司推出帶I2C/SPI總線接口轉(zhuǎn)雙通道UART的轉(zhuǎn)換芯片,可提供高達(dá)5Mbit/s的速率,兼容廣泛使用的16C450,有利于軟件的移植和編寫(xiě)。本文中微控制器采用NXP公司推出的LPC2214,基于16/32位ARM7TDMI-STM 的內(nèi)核, 144腳封裝,極低的功耗, 特別適用于工業(yè)控制等。
SC16IS752的主要特性如下:
●工作電壓:3.3或2.5V, 工作溫度范圍:-40~+85°C,低功耗, 3.3V的睡眠電流小于30uA;
●兩個(gè)全雙工UART,64字節(jié)的FIFO,完全可編程的字符格式,RTS/CTS自動(dòng)流控制;
●封裝小, 和CPU連接簡(jiǎn)單,有HVQFN32和TSSOP28封裝可選。
本文采用SPI來(lái)擴(kuò)展CPU串口, SC16IS752設(shè)置為從模式,下面介紹其的硬件特性。
1.SC16IS752的引腳功能和寄存器
圖一為SC16IS752的引腳排列,表一為各引腳的功能。
寄存器主要有發(fā)送寄存器(THR)、接收寄存器(RHR)、控制寄存器(FCR)、線控寄存器(LCR)、狀態(tài)寄存器(MCR)、MODEM狀態(tài)寄存器 (MSR)、中斷使能寄存器(IER)、中斷識(shí)別寄存器(IIR)、除數(shù)寄存器(DLH/DLL)、發(fā)送控制寄存器(TCR)、觸發(fā)點(diǎn)寄存器(TLR)、 I/O腳控制寄存器等。
2.SC16IS752中SPI時(shí)序圖
如下圖所示:
3. SC16IS752與LPC2214接口電路圖
圖四為擴(kuò)展串口的部分電路圖。采用3線制的串口連線方式,用3.3V電源對(duì)SC16IS752供電,芯片封裝選用TSSOP28,晶體采用 1.8432MHZ, 震蕩電路由C3、 C4組成。SC16IS752硬件采用阻容復(fù)位,由R3、C2組成,也可采用微處理器的I/O口復(fù)位,筆者對(duì)兩種方法在實(shí)際中都試驗(yàn)過(guò)。本文采用阻容復(fù)位,這樣可節(jié)省I/O 口,SC16IS752的pin15腳接到LPC2214的INT3上,這樣,既可以用中斷方式編寫(xiě)軟件,也可以用掃描的方式。R4為上拉電阻,確保電平可靠。CPU的SPI1為主模式,用一個(gè)I/O連到SC16IS752的SELL1,需要注意的是LPC2214的第60腳SELL1必須接高電平,用R5作上拉電阻。R1、R2是為L(zhǎng)PC2214內(nèi)部FLASH啟動(dòng)設(shè)置的。特別要注意 CPU的P0.14管腳的使用,F(xiàn)LASH boot裝載程序代碼是在CPU上電或復(fù)位時(shí)執(zhí)行,器件復(fù)位時(shí),當(dāng)P0.14為低電平,啟動(dòng)ISP, 進(jìn)行軟件更改;當(dāng)不需要ISP功能時(shí),接上拉電阻R6,使P0.14處于一個(gè)穩(wěn)定的狀態(tài)。CPU復(fù)位限于篇幅,未給出。
4.電平轉(zhuǎn)換
電平轉(zhuǎn)換采用SIPEX公司的SP3232E芯片,該芯片滿足EIA/TIA-232-標(biāo)準(zhǔn)。工作電壓為+3.0V~5.5V, 另外,管腳提供了ESD保護(hù)。使得驅(qū)動(dòng)器和接收器的管腳可承受±15KV人體放電模式和IEC1000-4-2氣隙放電模式。如下圖所示:
5.初始化寄存器
SC16IS752初始化寄存器的程序如下:
/*SC16IS752初始化*/
void init_is752(void) {
/*初始化SC16IS752第一個(gè)串口A.*/
write_is752_rega(IS752_CH_A,IS752_LCR,0xbf); write_is752_rega(IS752_CH_A,IS752_EFR,IS752_EFR_VAL);
write_is752_rega(IS752_CH_A,IS752_LCR,0x00);
/*設(shè)置SC16IS752 串口A 中斷.*/
write_is752_rega(IS752_CH_A, IS752_IER, IS752_IER_VAL);
write_is752_rega(IS752_CH_A, IS752_FCR, IS752_FCR_VAL);
write_is752_rega(IS752_CH_A, IS752_MCR, IS752_MCR_VAL);
write_is752_rega(IS752_CH_A, IS752_EFCR, IS752_EFCR_VAL);
/*初始化SC16IS752第二個(gè)串口B,同串口A,略. 清寄存器程序,略*/
} /* 寫(xiě)數(shù)據(jù) */
void write_is752_rega(unsigned char chx,unsigned char addr, unsigned char data){
unsigned char temp;
if((IS752_CH_A == chx) ||(IS752_CH_B == chx)){
CLR_IS752_CS;
temp = addr<<3;
temp |= chx;
spi_send_byte(SPI1,tmp);
spi_send_byte(SPI1,data); /*發(fā)送數(shù)據(jù).*/
SET_IS752_CS;
}
}
/*讀數(shù)據(jù)*/
unsigned char read_is752_rega(unsigned char chx, unsigned char addr){
unsigned char temp;
if((IS752_CH_A == chx) ||(IS752_CH_B == chx)){
CLR_IS752_CS;
temp = addr<<3;
temp |= 0x80|chx;
spi_send_byte(SPI1,temp);
spi_send_byte(SPI1,0xff);
SET_IS752_CS;
return(S1SPDR);
}
}
SPI程序接口在其他書(shū)籍中有詳細(xì)介紹,在此不作描述(見(jiàn)參考文獻(xiàn)1)。
5. 結(jié)語(yǔ)
市場(chǎng)上有很多串口擴(kuò)展芯片,我們以前也用過(guò)并口來(lái)擴(kuò)展串口,如16C552,16C554等。SC16IS752與它們相比,連接簡(jiǎn)單,功耗低,體積小,在實(shí)際應(yīng)用中表現(xiàn)出很好的穩(wěn)定性,已用于我們的設(shè)計(jì)的產(chǎn)品中。同時(shí)它體積小,功耗低,在手持設(shè)備中將有廣闊的應(yīng)用前景。
本文作者創(chuàng)新點(diǎn): 1.只用CPU的5根口線就能擴(kuò)展兩個(gè)串口,節(jié)約了CPU的資源;
2.體積小,功耗低,在手持設(shè)備中將有廣闊的應(yīng)用前景;
3.連接簡(jiǎn)單,穩(wěn)定性好。
參考文獻(xiàn)
1. 周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程。北京:北京航空大學(xué)出版社.2005www
2. NXP公司SC16IS752 /SC15IS762 datasheet. Rev0.12-19 September 2005
3. 李春光等。嵌入式微處理器與FLASH閃存的接口設(shè)計(jì)實(shí)現(xiàn),微計(jì)算機(jī)信息, (2006)07-2-0154-04