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