色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 利用捕獲比較功能實現MSP430與微機串行通信的研究

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

          作者: 時間:2009-11-27 來源:網絡 收藏

          本文引用地址:http://cafeforensic.com/article/157756.htm

          發(fā)送信號時,即Rin輸入有效,接收器會自動打開,并產生有效的INVALID信號。該信號將觸發(fā)P1.2引腳的中斷。在中斷處理程序中將F413的功耗模式設定為模式3(功耗電流0.7μA),這時頻率為32768的ACLK時鐘工作就可以完成低速的任務。當接收、處理完的數據后需要將結果返回給。這時可以打開MAX3221的驅動器,關閉接收器完成此工作。當發(fā)送完畢后可以將和MAX3221再設定為準備接收信息的最低功耗狀態(tài)。

          上述方法可以在滿足的同時達到非常低的功耗。

          表1:MAX3221收發(fā)器工作控制及其工作狀態(tài)對照表

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

          注:驅動器將MOS電平轉換為RS232電平,接收器將RS232電平轉換為MOS電平

          4 結束語
          應用上述的設計方法和電路,很好地與微機之間的,并且達到了非常理想的功耗水平。實踐證明該方法對于沒有硬件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作為發(fā)送引腳,P1.1作為接收引腳,二者共用模塊0
          Tbit1 是1位時間間隔數據(T1),Tbit_5是半位時間間隔數據。(由公式1得出)
          RTbuff 是接收發(fā)送緩沖字單元,存放接收和發(fā)送的數據
          Counter 是收發(fā)過程中使用的計數器
          ;------------------------------------------------------------------------------

          發(fā)送子程序

          MOVTAR,CCR0; 將當前定時器值存入CCR中(T0)
          ADD#Tbit1,CCR0; 將1位時間間隔加入CCR中(T0+T1)
          RLARTbuff; 將帶發(fā)送的字節(jié)數據左移一位,構造最低位為起始位
          BIS#0200h, RTbuff; 將停止位數據放入待發(fā)送字的第10位
          MOV#10,Counter; 初始化數據幀計數器為10
          MOV#OUTMOD0+CCIE,CCTL0; 標記發(fā)送狀態(tài),打開中斷,啟動發(fā)送
          RET; 返回

          ;------------------------------------------------------------------------------
          接收準備子程序

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

          ;------------------------------------------------------------------------------

          捕獲比較模塊0的中斷服務程序
          ;------------------------------------------------------------------------------

          ADD#Tbit1,CCR0; 將1位時間間隔加入CCR0中
          BIT#CCIS0,CCTL0; 判斷接收、發(fā)送狀態(tài)
          JNZUART_RX; 是接收狀態(tài),轉接收處理
          UART_TXCMP#00h,Counter; 是發(fā)送狀態(tài),判斷幀發(fā)送是否結束
          JNETX_Next; 沒有結束,轉入發(fā)送
          BIC#CCIE,CCTL0; 幀發(fā)送結束,關閉中斷
          RETI; 中斷返回
          TX_NextRRARTbuff; 待發(fā)送位移入進位位C
          JCTX_One; 該位為1?跳轉
          BIS#OUTMOD2,CCTL0; 該位為0,發(fā)送0
          JMPTX_nxt2; 跳轉繼續(xù)處理
          TX_OneBIC#OUTMOD2,CCTL0; 該位為1,發(fā)送1
          TX_nxt2DECCounter; 發(fā)送幀計數器減1
          RETI; 中斷返回
          ;
          UART_RXBIT#CAP,CCTL0; 判斷是否是捕獲到起始位
          JZRX_Bit; 接收的不是起始位,轉入處理
          RX_StartBIC#CAP,CCTL0; 捕獲到起始位,將狀態(tài)轉為比較模式
          ADD#Tbit_5,CCR0; 再增加半位時間間隔(T0+T1.5),以1.5 時間間隔
          RETI; 中斷返回
          RX_BitBIT#SCCI,CCTL0; 將接收到的位存入進位位C
          RRCRTbuff; 將接收到位,移入收發(fā)緩沖字
          RX_TestDECCounter; 接收數據計數器減1
          JNZRX_Next; 判斷是否接收了所有數據位,沒有跳轉到后續(xù)處理
          BIC#CCIE,CCTL0; 接收到所有數據位,關閉捕獲比較中斷
          RX_NextRETI; 中斷返回


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉