<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    利用捕獲比較功能實現MSP430與微機串行通信的研究

    發布時間:2008-1-1 13:34    發布者:MSP430
    關鍵詞: MSP430 , 比較 , 捕獲 , 串行通信 , 微機
    本文介紹了一種利用MSP430捕獲比較功能實現串行通信的方法,研究了實現該方法的硬件以及軟件特點。介紹了MSP430F413與TI的通信接口器件MAX3221構成的與微機進行串行通信的超低功耗方案,并介紹了該方法在其中的具體應用。通過實驗證明,該方法為沒有硬件UART模塊的MSP430系列單片機實現串行通信提供了一種有效的方法。并對有UART模塊,但需要擴展串口的應用提供了新的思路。
    1 引言:
    MSP430系列單片機是美國TI公司于2000年推出的新一代超的低功耗16位單片機。由于它具有功能完善、超低功耗、開發簡便、成本低廉等特點,目前已經在國內得到了廣大工程技術人員的關注和應用。工程師們在進行機型選擇時主要考慮該機型的性能和成本,因此在小型儀表以及普通應用中MSP430的11x系列、31x系列、41x系列受到了許多工程師的青睞。這些機型有一個共同的特點就是內部沒有硬件UART模塊。這就帶來一個問題,這些單片機怎樣實現串行通信呢?本文就針對這一問題進行研究,分析研究了MSP430中捕獲比較功能的特點,以及利用捕獲比較功能實現串行通信的方法。并以MSP430F413為例介紹了實現它與微機之間進行串行通信的軟件代碼和硬件電路。
    1 捕獲比較功能的介紹:
    MSP430系列單片機中都集成了捕獲比較的功能模塊。捕獲比較功能的引入主要是為了提高I/O端口處理事務的能力和速度。捕獲比較并不是非常新的概念,使用過Intel的16位單片機中如80196MC的讀者就會發現,MSP430中的捕獲比較功能和80196系列單片機中的EPA功能有一些相似之處。以下結合實現串行通信的需要,簡要介紹有關捕獲比較的有關概念。
    捕獲比較模塊用于捕獲應用事件的發生時間,或產生定時間隔。如果相應的中斷允許,那么完成一個時間捕獲或一次定時間隔,捕獲/比較模塊都將產生中斷。每一個捕獲比較模塊都可以對應一組硬件引腳。圖1是捕獲比較模塊的結構框圖。
    捕獲功能可以捕捉選定輸入引腳的狀態的變化,它可以選擇捕捉上升沿、下降沿、前后沿。如果捕捉到了相應的變化,則定時器計數值將被復制到捕獲比較寄存器CCR中,并會產生相應的中斷。在串行通信中,正是利用捕獲功能的特點來捕捉起始位的信息。




    圖1:捕獲比較模塊結構框圖比較功能是借助比較器不斷地將CCR中的設定值與定時器中的計數值相比較,當二者相等時,就產生中斷,并產生設定的輸出。利用比較功能,可以獲得精確的時間間隔,利用該特性可以構造一個精確的波特率發生器,為串行通信提供時間基準。
    2 利用捕獲比較實現串行通信的方法
    本節具體介紹實現異步串行通信時,捕獲和比較功能是如何工作的。
    2.1 接收過程



    圖2:在串行通信接收過程中捕獲比較功能時序分析示意圖在異步串行通信中,每個數據幀一般由1位起始位、8位數據位、1位奇偶校位、1位停止位組成。圖2所示為一個數據幀前3位的時序。在接收這種格式的數據幀時,首先要確定起始位,用來進行幀同步。在MSP430中是利用捕獲功能來捕捉起始位的下跳沿(詳見附錄程序代碼)。如圖2,在A點捕獲到起始位,系統將此刻的定時器值(T0)存放入CCR中,并產生中斷。對A點所產生中斷的處理非常重要。在該中斷處理程序中,將捕獲功能轉換為比較功能,并將1.5位的時間間隔(T1.5)加到CCR中,即CCR=T0+T1.5。這樣當到達1.5位時間間隔時(B點),即定時器的值等于T0+T1.5。將會由此比較功能觸發一次中斷,這樣就實現了1.5位時間間隔的精確定時。在該中斷處理程序中,可以讀取輸入引腳的狀態,從而接收到Bit1的信息,然后再利用比較功能產生1位時間間隔(T1)的定時。此后,當下一個T1時間到達時,比較功能又會觸發一次中斷(C點)。在這時的中斷服務程序中可以讀取Bit2的信息。如此重復8次,就可以完成一個字節數據的接收。
    2.2 發送過程
    相對于接收過程,發送過程比較簡單。利用比較功能產生一個間隔為1位時間(T1)的時序,相當于一個波特率發生器。在每一次比較功能觸發的中斷服務程序中發送一位數據,如此循環執行,這樣就可以完成一個數據幀的發送。異步串行通信的一個數據幀往往是10位或11位。對于這點可以利用MSP430是16位機的特點,將數據幀的所有位安排在一個待發送字中,然后移位發送,而不需要專門編程產生起始位和停止位。(詳見附錄中的程序代碼及說明)
    2.3 波特率的確定以及中斷的安排
    從以上的分析可以看出,串行通信的波特率主要是與1位時間間隔T1有關,T1可以通過以下公式確定:
    公式1
    其中Tclk是指與該捕獲比較模塊相對應的定時器的基準頻率,如使用ACLK作為時基則Tclk=32768;使用MCLK作為時基則Tclk=1M。式中的Baud就是期待的波特率值。MSP430每個捕獲比較模塊中的捕獲和比較對應同一個中斷地址,因此兩者需要共享一段中斷服務程序。這樣就要求在中斷服務程序中能區分觸發中斷的類別。主要是通過CCTL控制寄存器中的CAP位來區分[3]。另一方面接收和發送的也都需要在這段服務程序中處理,應該加以區分。(詳見附錄中的程序代碼及說明)
    3 超低功耗串行通信實例
    3.1電路結構及其特點
    本文中使用上述的原理和方法,在MSP430F413和MAX3221構成的電路中實現了與微機的串行通信,電路原理如圖3。該電路不但完成了串行通信,還進一步實踐了超低功耗的應用原理。MSP430單片機的一大特點就是超低功耗,它有多種功耗狀態可以編程控制[4]。MAX3221也是具有低功耗特點的接口器件,通過EN、FORCEON、FORCEOFF引腳可以控制驅動器、接收器的工作狀態,啟動或禁止自動降低功耗功能,從而使其工作在不同的能耗狀態,達到降低功耗的目的[2]?刂萍捌錉顟B詳見表1

    圖3 MSP430F413超低功耗串行通信電路原理圖3.2超低功耗的解決方案
    選擇了低功耗的器件,還要合理的控制才能達到最低的能耗[1]。對于本應用,MSP430處于從機工作狀態。針對這種應用以下方案可以有效地降低能耗:初始化程序結束后,設定MSP430F413工作在功耗模式4等待P1.2引腳的中斷。這時CPU將關閉,其能耗最低(0.1μA)。另一方面,初始控制MAX3221進入自動調節能耗狀態。如果微機不發送信號,即Rin輸入無效,驅動器和接收器都將關閉,進入很低功耗的待機狀態(1μA)。
    當微機發送信號時,即Rin輸入有效,接收器會自動打開,并產生有效的INVALID信號。該信號將觸發P1.2引腳的中斷。在中斷處理程序中將MSP430F413的功耗模式設定為模式3(功耗電流0.7μA),這時利用頻率為32768的ACLK時鐘工作就可以完成低速的串行通信任務。當接收、處理完微機的數據后需要將結果返回給微機。這時可以打開MAX3221的驅動器,關閉接收器完成此工作。當發送完畢后可以將MSP430和MAX3221再設定為準備接收信息的最低功耗狀態。
    利用上述方法可以在滿足串行通信的同時達到非常低的功耗。
    表1:MAX3221收發器工作控制及其工作狀態對照表

    工作及能耗狀態FORCEONFORCEOFFEN接收器輸入信號Rin驅動器狀態接收器狀態
    完全待機狀態最低功耗X00X關閉激活
    X01X關閉關閉
    正常工作狀態人工調節能耗110X激活激活
    111X激活關閉
    器件自理狀態自動調節能耗010有效自動激活激活
    011有效自動激活關閉
    010無效關閉激活
    011無效關閉關閉

    注:驅動器將MOS電平轉換為RS232電平,接收器將RS232電平轉換為MOS電平4 結束語
    應用上述的設計方法和電路,很好地實現了MSP430與微機之間的串行通信,并且達到了非常理想的功耗水平。實踐證明該方法對于沒有硬件UART的MSP430系列單片機進行串行通信非常有效,并給需要擴展串口的其他類型MSP430單片機提供了一種可行的方案。此外,文中的超低功耗電路設計方法對于功耗敏感的應用是一種很好的解決方案。
    參考文獻:
    [1] Brian Merritt. Ultralow Power Thermostat ([R]). Texas, U.S.A. : Texas Instruments Incorporated, 2001.
    [2] MAX3221 3-V TO 5.5-V single-channel RS-232 line driver/receiver(Manual). Texas, U.S.A. : Texas Instruments Incorporated, 2001.
    [3] 胡大可. MSP430系列超低功耗16位單片機原理與應用,北京航空航天出版社,2001。
    [4] 胡大可. MSP430系列FLASH型超低功耗16位單片機,北京航空航天出版社,2001。
    附錄:利用捕獲比較實現異步串行通信的程序代碼:
    ;------------------------------------------------------------------------------
    說明:
    硬件連接如圖3,P1.0作為發送引腳,P1.1作為接收引腳,二者共用捕獲比較模塊0
    Tbit1   是1位時間間隔數據(T1),Tbit_5是半位時間間隔數據。(由公式1得出)
    RTbuff  是接收發送緩沖字單元,存放接收和發送的數據
    Counter 是收發過程中使用的計數器
    ;------------------------------------------------------------------------------
    發送子程序

    MOV&TAR,&CCR0; 將當前定時器值存入CCR中(T0)
            ADD#Tbit1,&CCR0; 將1位時間間隔加入CCR中(T0+T1)
            RLARTbuff; 將帶發送的字節數據左移一位,構造最低位為起始位
            BIS#0200h, RTbuff; 將停止位數據放入待發送字的第10位
            MOV#10,Counter; 初始化數據幀計數器為10
            MOV#OUTMOD0+CCIE,&CCTL0; 標記發送狀態,打開捕獲比較中斷,啟動發送
    RET ; 返回
    ;------------------------------------------------------------------------------
    接收準備子程序

    MOV#08,Counter; 初始化接收數據計數器為8(接收一個字節數據)
    MOV#SCS+CCIS0+OUTMOD0+CM1+CAP+CCIE,&CCTL0;初始化捕獲比較控制字,
    ; 設定為下降沿捕獲模式,標記接收狀態,打開中斷,啟動接收  
            RET ; 返回

    ;------------------------------------------------------------------------------捕獲比較模塊0的中斷服務程序
    ;------------------------------------------------------------------------------
    ADD#Tbit1,&CCR0; 將1位時間間隔加入CCR0中
    BIT#CCIS0,&CCTL0; 判斷接收、發送狀態
    JNZUART_RX; 是接收狀態,轉接收處理
    UART_TXCMP#00h,Counter; 是發送狀態,判斷幀發送是否結束
    JNETX_Next; 沒有結束,轉入發送
    BIC#CCIE,&CCTL0; 幀發送結束,關閉中斷
    RETI ; 中斷返回
    TX_NextRRARTbuff; 待發送位移入進位位C
    JCTX_One; 該位為1?跳轉
    BIS#OUTMOD2,&CCTL0; 該位為0,發送0
    JMPTX_nxt2; 跳轉繼續處理
    TX_OneBIC#OUTMOD2,&CCTL0; 該位為1,發送1
    TX_nxt2DECCounter; 發送幀計數器減1
    RETI ; 中斷返回
    ;
    UART_RXBIT#CAP,&CCTL0; 判斷是否是捕獲到起始位
    JZRX_Bit; 接收的不是起始位,轉入處理
    RX_StartBIC#CAP,&CCTL0; 捕獲到起始位,將狀態轉為比較模式
    ADD#Tbit_5,&CCR0; 再增加半位時間間隔(T0+T1.5),以實現1.5 時間間隔
    RETI ; 中斷返回
    RX_BitBIT#SCCI,&CCTL0; 將接收到的位存入進位位C
    RRCRTbuff; 將接收到位,移入收發緩沖字
    RX_TestDECCounter; 接收數據計數器減1
    JNZRX_Next; 判斷是否接收了所有數據位,沒有跳轉到后續處理
    BIC#CCIE,&CCTL0; 接收到所有數據位,關閉捕獲比較中斷
    RX_NextRETI ; 中斷返回
    本文地址:http://www.portaltwn.com/thread-2840-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 利用模擬開發工具生態系統進行安全電路設計
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
    • 更佳設計的解決方案——Microchip模擬開發生態系統
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷