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