新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 利用捕獲比較功能實(shí)現(xiàn)MSP430與微機(jī)串行通信的研究

利用捕獲比較功能實(shí)現(xiàn)MSP430與微機(jī)串行通信的研究

作者: 時(shí)間:2009-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/157756.htm

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

上述方法可以在滿足的同時(shí)達(dá)到非常低的功耗。

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

工作及能耗狀態(tài)FORCEONFORCEOFFEN接收器輸入信號(hào)Rin驅(qū)動(dòng)器狀態(tài)接收器狀態(tài)
完全待機(jī)狀態(tài)最低功耗X00X關(guān)閉激活
X01X關(guān)閉關(guān)閉
正常工作狀態(tài)人工調(diào)節(jié)能耗110X激活激活
111X激活關(guān)閉
器件自理狀態(tài)自動(dòng)調(diào)節(jié)能耗010有效自動(dòng)激活激活
011有效自動(dòng)激活關(guān)閉
010無(wú)效關(guān)閉激活
011無(wú)效關(guān)閉關(guān)閉

注:驅(qū)動(dòng)器將MOS電平轉(zhuǎn)換為RS232電平,接收器將RS232電平轉(zhuǎn)換為MOS電平

4 結(jié)束語(yǔ)
應(yīng)用上述的設(shè)計(jì)方法和電路,很好地與微機(jī)之間的,并且達(dá)到了非常理想的功耗水平。實(shí)踐證明該方法對(duì)于沒(méi)有硬件UART的MSP430系列單片機(jī)進(jìn)行串行通信非常有效,并給需要擴(kuò)展串口的其他類型MSP430單片機(jī)提供了一種可行的方案。此外,文中的超低功耗電路設(shè)計(jì)方法對(duì)于功耗敏感的應(yīng)用是一種很好的解決方案。

參考文獻(xiàn):
[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位單片機(jī)原理與應(yīng)用,北京航空航天出版社,2001。
[4] 胡大可. MSP430系列FLASH型超低功耗16位單片機(jī),北京航空航天出版社,2001。

附錄:異步串行通信的程序代碼:
;------------------------------------------------------------------------------

說(shuō)明:
硬件連接如圖3,P1.0作為發(fā)送引腳,P1.1作為接收引腳,二者共用模塊0
Tbit1 是1位時(shí)間間隔數(shù)據(jù)(T1),Tbit_5是半位時(shí)間間隔數(shù)據(jù)。(由公式1得出)
RTbuff 是接收發(fā)送緩沖字單元,存放接收和發(fā)送的數(shù)據(jù)
Counter 是收發(fā)過(guò)程中使用的計(jì)數(shù)器
;------------------------------------------------------------------------------

發(fā)送子程序

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

;------------------------------------------------------------------------------
接收準(zhǔn)備子程序

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

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

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

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


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉