馮軍波
(中航工業(yè)西安航空計算技術研究所,陜西西安,710068)
串行通訊接口(俗稱COM 接口或串口),是采用串行通訊方式的擴展接口。數(shù)據(jù)一位一位地順序傳送,最少只需一根傳輸線即可完成,成本低但傳送速度慢。其通信方式分為同步串行(Serial Peripheral interface)、異步串行(UART)。同步通信是指通信雙方由統(tǒng)一時標控制數(shù)據(jù)傳送。異步通信要求統(tǒng)一操作時間,采用應答方式,即主模塊發(fā)出請求,一直等待從模塊反饋回來的“響應”后,才開始通信。
常用的串行通訊接口包括以下幾種:
RS-232:不平衡傳輸方式,即單端通訊,為點對點通訊而設計,適合本地設備間通訊,最大傳輸速率20kb/s。
RS-422:平橫傳輸方式,點對多雙向通訊,即一個主設備,多個從設備,從設備之間不能通訊。最多接10 個節(jié)點,最大傳輸速率10Mb/s。
RS-485:在RS-422 的基礎上發(fā)展而來,可多接32 個設備,最大傳輸速率10Mb/s。
國微電子的串行通訊接口芯片SMHK381 是雙通道,圖中用通道A、通道B 標識。該芯片兼容EXAR 公司XR-88C681、Motorola 公 司MC2681 以 及Signetics 公 司SCC2692。其內部結構如圖1 所示。
圖1 SMHK381 芯片內部結構圖
通道A 和通道B 分別包含全雙工異步接收器和發(fā)送器,兩個通道可以獨立地選擇工作頻率和工作方式進行數(shù)據(jù)的收發(fā)。
輸入/輸出端口可以作為通用的輸入/輸出端口,也可以作為特殊功能使用。如將輸入端口作為外部時鐘輸入,將輸出端口用來輸出發(fā)送器就緒信號。
數(shù)據(jù)總線緩沖器在(芯片)內部與外部的數(shù)據(jù)總線之間提供數(shù)據(jù)緩沖,由操作控制單元控制,允許數(shù)據(jù)再CPU 與DUART 之間轉移。
操作控制模塊從CPU 收到操作命令,產生合適的信號到DUART 中的各個部分。具體而言,它負責進行DUART內部寄存器地址譯碼和命令譯碼。所有的命令,包括設置波特率、奇偶校驗、通信協(xié)議參數(shù)、啟動或停止Counter/Timer、或通過讀狀態(tài)寄存器監(jiān)視數(shù)據(jù)通信性能。
中斷控制塊允許用戶將DUART 應用到中斷驅動的環(huán)境中。DUART 提供了一個中斷請求輸出信號(-INTR),在發(fā)生下列任何事件的情況下可發(fā)出中斷請求信號:
(1)通道的接收或發(fā)送保持寄存器就緒;
(2)通道的接收先進先出隊列滿;
(3)在通道A 或B 中收到Break 開始或結束;
(4)Counter/Timer 計數(shù)完成;
(5)輸入引腳(IP0,IP1,IP2,IP3)發(fā)生變化。
SMHK381 通道的接收器(由接收移位寄存器RSR 和接收保持寄存器RHR 組成)從RxDn 接收串行數(shù)據(jù),經過RSR 轉換成并行的數(shù)據(jù)格式,送到RHR(RHR 實際上是一個深度為三個字節(jié)的FIFO )。然后,這個字符將通過FIFO進行處理。一旦接收的字符被送到FIFO 的頂部,當CPU讀RHR 時就可以讀取這個字符[1]。接收器示意如圖2 所示。
圖2 接收器RSR 和RHR 示意圖
SMHK381 芯片支持中斷方式接收數(shù)據(jù),接收中斷的觸發(fā)條件如下:
RXRDY(接收器準備好):RHR 里至少有一個字符等待CPU 讀取。
FFULL :接收FIFO 已滿。
軟件可通過設置MR(通道模式寄存器)來選擇RXRDY滿足時發(fā)出中斷還是FFULL 條件滿足時發(fā)出中斷。
在設置了中斷掩碼寄存器IMR[1](A 通道)和IMR[5](B通道)位后,將會使能上述中斷,一旦滿足上述條件,串口將向CPU 發(fā)送中斷請求,軟件可通過中斷服務函數(shù)將數(shù)據(jù)從串口取走。
CPU 把并行數(shù)據(jù)傳給SMHK381 通道的發(fā)送器(發(fā)送移位寄存器TSR 和發(fā)送保持寄存器THR),發(fā)送器將其轉換成串行數(shù)據(jù)流,并根據(jù)異步通信協(xié)議要求,加上用于通知接收器操作的起始位、停止位及可選的校驗位(最高有效位和停止位之間,可通過模式寄存器配置),然后從TxDn 引腳輸出。發(fā)送器示意如圖3 所示。
圖3 發(fā)送器THR 和TSR 示意圖
發(fā)送器可以通過命令寄存器CR 來使能和禁止。當在THR 和TSR 中還有字符時發(fā)出命令禁止發(fā)送器,發(fā)送器仍將繼續(xù)發(fā)送THR 和TSR 中剩余的字符,直到THR 和TSR完全空為止。一旦執(zhí)行了禁止發(fā)送器命令,就不能再向THR 中寫入新的數(shù)據(jù)。
SMHK381 芯片同樣支持中斷方式發(fā)送數(shù)據(jù),工作機制是每發(fā)送完一個字節(jié)的數(shù)據(jù)后會觸發(fā)中斷條件,串口向CPU 產生一次中斷,中斷處理程序再發(fā)送下一個字節(jié),直到數(shù)據(jù)發(fā)送完成。這里有兩點需要注意:一個是在發(fā)送數(shù)據(jù)之前并沒有發(fā)送字節(jié)完成來觸發(fā)中斷,那么第一個字節(jié)是如何發(fā)出的;另一個是怎樣才算數(shù)據(jù)發(fā)送完成。第一個問題涉及中斷在硬件層面的觸發(fā)方式:若為電平觸發(fā)的中斷,當發(fā)送緩沖區(qū)為空時,其所處的電平狀態(tài)就會在中斷被使能后直接觸發(fā),導致第一個字節(jié)在中斷服務函數(shù)中被發(fā)出;如果是電平跳變觸發(fā)的中斷,為了印發(fā)中斷,只好把第一個字節(jié)先手動發(fā)出,由此引發(fā)一個中斷“多米諾”效應,把后面的字節(jié)依次發(fā)送出去[2]。第二個問題的解決是用參數(shù)指定欲發(fā)送字節(jié)數(shù)決定的,待發(fā)送字節(jié)達到指定數(shù)目,在中斷處理函數(shù)禁止相應中斷,于是多米諾效應就會停止。
試驗中將SMHK381 芯片應用在PPC755 處理器上,實現(xiàn)了兩路RS232 接口,按8位數(shù)據(jù)寬度進行訪問,接口的工作時鐘采用3.6864MHz,兩路接口采用三線制傳輸,最大速率115kbps。應用場景連接框圖如圖4 所示。
圖4 SMHK381 芯片應用場景連接框圖
在線路連接上PPC755 處理器通過107 橋片連接FPGA 芯片,F(xiàn)PGA 內部設計PCILBE 橋邏輯,實現(xiàn)PPC750 對LBE 總線上的SMHK381 串口的訪問與控制。SMHK381 芯片引出兩路RS232,一路用于連接PC 的超級終端,用于輸出打印信息,一路用于連接PC 機上的開發(fā)環(huán)境,用于軟件開發(fā)人員進行程序的下載調試。使用超級終端輸出打印信息時設置每秒位數(shù)為115200,數(shù)據(jù)位為8,奇偶校驗為無,停止位為1,數(shù)據(jù)流控制選擇無。當模塊供電后,超級終端上會顯示啟動信息,表明第一路RS232 工作正常,待啟動完畢后,可使用PC機上的軟件開發(fā)環(huán)境通過第二路RS232 連接模塊并下載和調試應用程序,表明第二路RS232 也工作正常。
現(xiàn)代科技離不開芯片,我國在芯片技術領域起步晚且落后于歐美國家,研究芯片結構和原理有助于改變這種現(xiàn)狀。發(fā)展科技的必由之路就是模仿、趕追并且超越,掌握扎實的基礎工藝,弄清復雜的工作原理,才能設計和制造屬于我們的國產芯片。