1 概述 當前,以單片機為核心構成的智能化測控系統及電子產品不斷涌現,為了滿足數字化及智能化要求,許多外圍電路功能模塊、部件、器件及傳感器也具備了UART串口通信功能。而現階段的8位、16位、32位單片機卻大部分僅提供一個UART串口,這樣就很難滿足系統中一方面要與具有UART功能的串口部件通信,另一方面又要與上位機通信的要求。利用SP2338DP多串口擴展器,可很好地解決此問題。 2 工作特性 SP2338DP是采用低功耗CMOS工藝設計的UART多串口擴展芯片。該器件可將一個高波特率的UART串口擴展為3個較高波特率的UART串口,從而為系統需要多個串口時提供了很好的解決方案。該器件的主要特性如下: *可將1個UART串口擴展為3個UART串口。 *全雙工異步工作:4個UART串口都為全雙工異步工作模式。 *高工作速度:1200~9600b/s(可由晶振頻率設定任意非標準波特率)。 *波特率設置簡單:不需軟件設置,只需更改輸入時鐘頻率即可。 *波特率誤差小:每個串口的數據輸出波特率誤差小于0.25%。 *接收波特率范圍寬:要求每個串口數據波特率小于2.5%即可。 *數據傳輸誤碼率極低:小于10 -9(接收的數據波特率誤差小于2%時)。 *具有節電模式:進入節電模式后典型靜態電流為0.5μA。 *可自動喚醒:任意串口的接收端有數據出現時自動喚醒。 *寬工作電源電壓:2.4~5.5V。 *低工作電流:典型工作電流為4.4mA。 3 封裝及引腳說明 該器件具有DIP、SOIC和SSOP多種封裝形式。下面以DIP封裝形式為例,給出元件的封裝及引腳排列,如圖1所示。引腳功能及說明見表1。 表1 SP2338 DIP引腳功能
4 應用說明 SP2338DP在使用時應遵循以下原則: ①SP2338DP適用于串行數據為8位的應用領域(如數據位7為位,可選用SP2337DP器件); ②串口0~2為較高波特率的串口(子串口)。 ③串口3為高波特率串口(母串口),它的數據傳輸速率是子串口的4倍。如輸入時鐘頻率foscin為10MHz,則串口3的波特率為19 200bps,串口0~2的波特率為19 200bps/4=4800 bps;如果需要在串口0~2上獲得波特率K,則需按以下公式改變時鐘頻率即可。 K=4800×foscin/10(bps) 其中foscin≤20MHz ④ADRI1、ADR10為下行地址線,ADRI1、ADRI0=00、01、10時,分別對應子串口0、1、2、ADR1、ADR0=11時,為串口3的地址;同時,它也是SP2338DP的命令/數據口地址。 ⑤ADRO1、ADRO0為上行數據的串口地址線,ADRO1、ADRO0=00、01、10時,分別對應子串口0、1、2。當上位機UART 接收到由串口3發送來的數據時,立即讀取地址線ADRO1和ADRO0的狀態。根據ADRO1和ADRO0的狀態即可判斷出數據是由哪個串口發送來的。 ⑥芯片喚醒條件為:向串口0~串口3的任意一個數據接收端口寫入1個字節數據。由于SP2338DP的喚醒時間為25ms左右,故用于芯片喚醒的數據將不能被正確接收,因此應采用下面的芯片喚醒流程;先發送1個字節數據,用于喚醒芯片,延時25ms后再發送有效的數據。 ⑦為了快速可靠地傳輸批量數據,可以采用下面的方法,實現數據快速可靠的接收、發送。 如上位機只需要向一個串口發送數據,則可向該串口發送完1個字節數據后再向地址11(串口3的地址)連續發送4個字節“0X00”。其后向需要發送數據的串口發送1個字節數據,再向串口3發送4個字節“0X00”,按此方式循環發送即可。 如果此位同需向兩個串口分別發送兩個數據塊,則可分別向兩個相應的子串口發送1個字節的數據后再向串口3發送4個字節的“0X00”,然后分別將兩個數據塊的下一個字節發送到兩個子串口上。 如果上位機有3個數據塊需要分別向3個子串口發送,則可先向3個子串口分別發送1個字節的有效數據后再向串口3發送2個字節的“0X00”,然后循環向3個子串口發送有效的數據。 注意:寫入串口3用于延時的數據只能是“0X00”,寫入其它數據將產生可預料的結果。 ⑧SP233DP數據發送工作過程如下:如果上位機需要將數據“0X28”由串口2發送出去,則需先將ADRI1置為“1”,ADRI0置為“0”,再將數據“0X28”通過上位機的UART口發送到串口3即可。 ⑨SP2338DP可執行的命令僅有兩種,即復位和睡眠命令。當上位機通過串口3(地址為“11”)寫入數據“0X35”或“0XB5”時,則芯片執行軟件復位,復位時間約為21.75ms;當寫入的數據為“0X55”或“0XD5”時,芯片將進入睡眠狀態。 圖2 利用SP2338DP擴展的3串口電路 5 典型應用電路 利用SP2338DP可將僅具有一個UART串口的單片機擴展為具有3個UART串口的單片機。下面以常用的AT89C52單片機為例,給出相應的串口擴展電路,如圖2所示。 圖2中AT89C52的全雙工串口與SP2338DP的串口3相連。串口3同時也做為命令/數據口。ADRI1和ADRI0與AT89C52的 P3.3、P3.2口線相連,用于發送數據時相應串口0~2的選擇。ADRO1和ADRO0與AT89C52的P3.4、P3.5口線相連,用于判斷接收的數據來自串口0~2的哪一個。SP2338DP的時鐘頻率選為20MHz,此時串口3的波特率為19 200bps,串口0~2的波特率為9600bps。網絡補充版(http://www.dpj.com.cn)中,給出與上述電路配套的通信程序,程序采用C51編制。 結語 SP2338多串口擴展器可廣泛應用于工業控制、數據采集、儀器儀表、智能家電、計算機RS232口擴展、有線及無線數據傳輸等領域。由該器件構成的多串口電路具有硬件成本低、性價比高、工作速度高、波特率設置簡單等特點,因而選擇該器件是多串口應用系統的良好解決方案。 作 者:黑龍江八一農墾大學 孟臣 李敏 來 源:單片機與嵌入式系統應用2003(7) |