1 引 言 目前,UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)接口的使用越來(lái)越廣泛,許多設備上都提供了UART接口。工業(yè)使用的微處理器一般都只包括2個(gè)UART口。在實(shí)際工業(yè)數據發(fā)送和采集應用系統中,為了節省資源,微處理器直接通過(guò)UART口與設備進(jìn)行數據交互。這樣勢必會(huì )導致微處理器的UART口不夠,為了方便設備的接入,因此擴展UART口是一種理想的解決方案。同時(shí),考慮到微處理器的SPI/I2C總線(xiàn)上可以連接多個(gè)總線(xiàn)器件,為了充分利用資源,在實(shí)際應用中可以通過(guò)SPI/I2C實(shí)施對UART接口的擴展。本文提出了一種SPI擴展UART的方法,主要采用SCl6IS752芯片進(jìn)行UART接口擴展。SCl6IS752提供了標準SPI總線(xiàn)接口,只需要微處理器能提供標準的SPI或模擬SPI總線(xiàn)接口。整個(gè)設計簡(jiǎn)捷、經(jīng)濟,具有通用性。 本文最后介紹了擴展接口在無(wú)線(xiàn)數據采集集中器中的應用,可方便地使用擴展出的UART口連接相應的無(wú)線(xiàn)通信模塊,實(shí)現數據的采集和通信。 2 SPI總線(xiàn) 串行外圍設備接口(Serial Peripheral Interface,SPI)是Motorola公司推出的一種同步串行接口,其硬件功能強大,因此與SPI有關(guān)的軟件比較簡(jiǎn)單。一般情況下,實(shí)現SPI通信需要3~4根線(xiàn):同步時(shí)鐘(SCK)線(xiàn),用于實(shí)現主器件和從器件在MISO和MOSI線(xiàn)上串行數據傳輸的同步;主輸出/從輸入(MOSI)線(xiàn),用于主器件的輸出或從器件的輸入;主輸入/從輸出(MISO)線(xiàn),用于主器件的輸入或從器件的輸出;片選控制(CS)線(xiàn),用于從設備的選擇。SPI的工作模式有4種,本文采用了其中的一種主模式。 3 SCl6IS752擴展芯片 SCl6IS752是NXP公司推出的一款通過(guò)SPI/I2C總線(xiàn)擴展為UART接口的芯片。擴展出雙通道高性能的UART,并且能到達5 Mbps的數據率;提供8個(gè)額外的可編程的I/O腳;還可以提供數據速率高達115.2 kbps的IrDA。另外,SCl6IS752還具有其他高級的特性,例如自動(dòng)硬件和軟件流控制、自動(dòng)的RS485支持和軟件復位。 作為UART擴展接口芯片,SCl6IS752的引腳定義并不復雜,如圖1所示。XTAL1、XTFAL2引腳用來(lái)連接晶振電路,CS/A0用作SPI片選或者I2C總線(xiàn)器件地址選擇A0;I2C/SPI為I2C總線(xiàn)或SPI總線(xiàn)接口選擇;IRQ中斷引腳。其他引腳就主要包括擴展后的2個(gè)UART及I/O。 帶有SPI接口的微處理器與SCl6IS752的連接十分方便;如果不帶SPI接口,則可以通過(guò)I/O口來(lái)實(shí)現模擬SPI口的功能。 4 擴展UART的設計過(guò)程及原理 4.1 SPI-UART的工作過(guò)程 SPI接口協(xié)議要求接口設備按主從方式進(jìn)行配置,且同一時(shí)間內總線(xiàn)上只能有一個(gè)主器件。主輸出/從輸入(MOSI)信號是主器件的輸出和從器件的輸入,數據傳輸時(shí)最高位在先;主輸入/從輸出(MISO)信號是從器件的輸出和主器件的輸入,數據傳輸時(shí)也是最高位在先。串行時(shí)鐘(SCLK)信號是用于同步主器件和從器件之間在MOSI和MISO線(xiàn)上的串行數據傳輸。在整個(gè)數據傳輸過(guò)程中,片選信號(CS)應該處于低電平狀態(tài)。 在擴展方案中,微處理器作為主器件,SCl6IS752作為從器件。因此,在設置SPI控制器時(shí),應該設置SPI為從機。具體工作時(shí)序如圖2和圖3所示。 4.2 軟件設計 軟件設計的依據:一是硬件系統連接關(guān)系;二是SPI的工作時(shí)序;三是SCl6IS752的工作方式。程序主要包括對SPI接口和SCl6IS752的初始化、數據的發(fā)送和接收。 SPI接口的初始化。如果處理器提供標準的SPI口,那么只需要選擇SPI引腳功能,然后設置輸入/輸出;如果處理器不帶標準的SPI口,可以通過(guò)普通的I/0口來(lái)模擬SPI接口,完成引腳的設置后,還需要對SPI的模式、時(shí)鐘頻率進(jìn)行設置。 SCl6IS752的初始化。通過(guò)SCl6IS752轉換為串口輸出,所以必須考慮到串口的波特率、數據位、停止位、校驗位等的設置。同時(shí),在實(shí)驗過(guò)程中,采用接收中斷,這些也是在初始化SCl6IS752時(shí)要考慮的。 波特率的計算公式如下: 在下面的程序中,給出了對SC16IS752擴展出的A通道的初始化。 數據的發(fā)送。SCl6IS752發(fā)送器部分由一個(gè)發(fā)送保存寄存器(THR)和發(fā)送移位寄存器(TSR)組成。THR實(shí)際是一個(gè)64字節FIFO。THR接收數據并將其移入TSR,然后在TSR中將其轉化為串行數據并在TX端移出。處理器將數據通過(guò)SPI總線(xiàn)送入SCl6IS752的發(fā)送寄存器中,等待數據被取走。 數據的接收。SCl6IS752接收器由一個(gè)接收保存寄存器(RHR)和接收移位寄存器(RSR)組成。RHR實(shí)際上是一個(gè)64字節FIFO。RSR接收RXD端的串行數據,然后將數據轉化為并行數據轉移到RHR。 一般的情況下,為了系統設計的方便,可以選擇SCl6IS752的數據發(fā)送所采用的查詢(xún)方式;而接收數據是通過(guò)芯片的IRQ引腳觸發(fā)處理器的外部中斷,產(chǎn)生中斷信號,通知處理器接收和處理數據。其工作程序流程如圖4所示。 5 擴展UART接口實(shí)例 采用SPI擴展出的UART可滿(mǎn)足標準串行端口UART的要求,而且操作簡(jiǎn)單。設置串口的波特率、數據位、停止位和校驗位,數據的發(fā)送與接收都可由用戶(hù)自行定義。筆者在無(wú)線(xiàn)數據采集集中器系統中,對擴展UART的可行性和實(shí)用性進(jìn)行了論證。下面以無(wú)線(xiàn)數據采集集中器為例,說(shuō)明SCl6IS752的實(shí)際應用。 5.1 可行性 在設計無(wú)線(xiàn)數據采集集中器過(guò)程中,選用了NXP公司的LPC2148作為集中器的處理器。LPC2148自帶2個(gè)UART口,而無(wú)線(xiàn)數據采集集中器需要4個(gè)UART,分別為RS232數據傳輸、紅外數據傳輸、接收數據UART和無(wú)線(xiàn)通信UART口。很明顯,需要擴展UART口才能滿(mǎn)足要求。微處理器LPC2148有標準的SPI/I2C總線(xiàn),因此筆者就選擇了SCl6IS752作為UART的擴展芯片。 SCl6IS752具有16C450可兼容的寄存器集,擴展出的UART引腳分別為T(mén)X、RX、RTS和CTS。這些都和標準的UART一樣,只是初始化的設置不同。初始化完成后,具體操作函數和標準的UART接口操作類(lèi)似。只是芯片在讀取和發(fā)送數據時(shí),與微處理器的數據交互是通過(guò)SPI總線(xiàn)進(jìn)行的。 5.2 應用設計 集中器系統具體設計硬件連接圖如圖5所示。SCl6IS752的IRQ直接與LPC2148的外部中斷EINTl連接。擴展的UART接收到數據后,就會(huì )通過(guò)IRQ產(chǎn)生一個(gè)低電平觸發(fā)外部中斷,而在處理器的外部中斷服務(wù)程序中處理接收到的數據。在實(shí)際集中器測試中,擴展出的UART口與標準的UART具有同樣功效。芯片的晶振頻率采用1.843 2 MHz,與晶振連接的是22 pF的電容,芯片需要采用3.3 V電源供電。與CPU連接的引腳共有6個(gè),功能如表1所列。其中,SPI配置必需的引腳是MO-SI、MISO、SCK。因為選用芯片的功能是SPI轉UART,所以直接把12C/SPI引腳接地。 6 結 語(yǔ) UART廣泛用于Modem、手持工業(yè)設備、條形閱讀器、測試設備、消費產(chǎn)品與PC機之間,以及小型網(wǎng)絡(luò )之間的通信。本文結合微處理器的SPI或I2C接口功能,設計了一種擴展UART接口;微處理器沒(méi)有標準的SPI或I2C接口時(shí),也可通過(guò)普通的I/O來(lái)模擬SPI/I2C總線(xiàn)。擴展出的UART應用于實(shí)際無(wú)線(xiàn)數據采集系統,實(shí)驗結果表明,完全能夠達到標準UART接口的要求。處理器的UART口不夠用時(shí),也可通過(guò)此方案達到設計的要求。 |