新聞中心

        EEPW首頁 > 嵌入式系統 > 學習方法與實踐 > PIC單片機軟件異步串行口實現技巧

        PIC單片機軟件異步串行口實現技巧

        ——
        作者:美國微芯科技咨詢(上海)有限公司 張明峰 時間:2007-12-29 來源:《單片機與嵌入式系統應用》 收藏

               在用開發各種應用系統時,串行通信是經常要用到的一種通信模式,很多應用中還要求實現多路串行通信。大家平時熟悉的各種廠家的,絕大部分片上只提供一個硬件UART模塊,利用它可以方便實現一路串行通訊。

                系列也不例外,在其豐富的產品家族成員中,除高端系列(17/18)一些型號片上帶有兩路硬件UART模塊外,其它大部分型號片上只有一路UART,一些低端廉價的單片機甚至還不帶硬件UART。為了提高系統的性能價格比,就要求設計工程師用增加實現一路或多路串行通信。很多工程師對用實現的UART在可靠性和效率方面持懷疑態度,其實關鍵問題是看采用何種方式來實現可靠的UART功能。 
          

               在討論具體實現方式前,我們先來簡單回顧一下異步串行通信的格式定義。發送一個完整的字節信息,必須有“起始位”、“若干數據位”、“奇偶校驗位”和“停止位”;必須定義每位信息的時間寬度——每秒發送的信息位個數,即為“波特率”。單片機系統中常用的波特率從300~19 200 b/s。當波特率為1200b/s時,每個信息位的時間寬度為 1/1200≈833μs;無數據通信時,數據線空閑狀態應該是高電平,“起始位”為低電平,數據位低位先發且后跟奇偶校驗位(若有),“停止位”為高電平,如圖1所示。


                     
                                               圖1

          按圖1最基本的異步串行通信時序,軟件實現UART在不同架構的單片機上有多種方法。其中數據接收是關鍵,因異步通信沒有可參照的時鐘信號,發送方隨時都可能發送數據,任何時刻串行數據到來時,系統都應該及時準確地接收。比較而言,本機發送串行數據相對容易,只要對發送出去的電平做持續時間的定時即可。按不同的接收技巧并針對PIC單片機的特點,這里介紹兩種常用且十分可靠的方法。

          1  三倍速采樣法

          三倍速采樣法顧名思義就是以三倍于波特率的頻率對接收引腳Rx進行采樣,保證檢測到“起始位”,又可以調整采樣的時間間隔;將有效數據位的采樣點控制在碼元的中間1/3處,最大限度地減少誤碼,提高接收的準確性。我們把圖1的起始位和部分數據位放大,如圖2所示,把每個信息位分成三等份,每等份的時間寬度設為ts,以方便分析。


                 
                                                 圖2

          以三倍頻對信息位進行采樣時,每個信息位都將可能被采樣到三次。當處于空閑狀態并檢測起始位時,最早檢測到起始位低電平的時刻必將落在S0陰影區,雖然每次具體的采樣點會在此S0陰影區隨機變化。檢測到起始位低電平后,間隔4

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通州区| 荔波县| 邳州市| 建平县| 宜良县| 昭通市| 靖江市| 舟曲县| 洛阳市| 太谷县| 新邵县| 桦甸市| 高唐县| 河北省| 梨树县| 吉水县| 屯昌县| 湄潭县| 荔波县| 浦北县| 桃源县| 会东县| 栾川县| 武宁县| 辽宁省| 泰兴市| 庆阳市| 星座| 兴义市| 华蓥市| 泰来县| 天气| 美姑县| 砀山县| 洮南市| 岑巩县| 肥乡县| 仁化县| 亚东县| 出国| 满洲里市|