機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
MSP430點(diǎn)對(duì)多點(diǎn)通信原理
MSP430點(diǎn)對(duì)多點(diǎn)通信原理
 更新時(shí)間:2009-12-2 16:53:04  點(diǎn)擊數(shù):0
【字體: 字體顏色
MSP430系列的多機(jī)通信有兩種實(shí)現(xiàn)方式:一種是用地址位來(lái)指示地址字符,另一種是用線(xiàn)路足夠長(zhǎng)的空閑來(lái)指示地址字符。以下的點(diǎn)對(duì)多點(diǎn)多機(jī)通信實(shí)例,采用地址位方式實(shí)現(xiàn)主機(jī)對(duì)多機(jī)的尋址。一般從機(jī)以總線(xiàn)方式和主機(jī)連接。每次主機(jī)以某一地址呼叫,只有地址相符的從機(jī)能識(shí)別呼叫并作出響應(yīng)。

為以下的多機(jī)通訊實(shí)例設(shè)計(jì)的簡(jiǎn)單的協(xié)議:

通信幀結(jié)構(gòu)

   隨機(jī)字節(jié)  0xFF0xAA0x55   地址    數(shù)據(jù)    結(jié)束
 
 隨機(jī)字節(jié):在傳輸?shù)拈_(kāi)始發(fā)送的任意字節(jié)

 先導(dǎo)字段:先導(dǎo)字段有0xFF、0xAA和0x55

 地址:取值1—16,即主機(jī)可以呼叫16個(gè)從機(jī)之一,發(fā)送時(shí)地址位有效

 結(jié)束:0
 
主機(jī)功能:以從機(jī)地址呼叫,接著發(fā)送字符串,最后以發(fā)送0結(jié)束。

從機(jī)功能:識(shí)別呼叫地址,發(fā)現(xiàn)相符時(shí)接收后續(xù)數(shù)據(jù),接收到0時(shí)結(jié)束。

本例值實(shí)現(xiàn)了主機(jī)向多個(gè)從機(jī)發(fā)送字符串的功能。如果要實(shí)現(xiàn)主機(jī)接收從機(jī)數(shù)據(jù),可以修改以上通信協(xié)議,增加以下功能:

 主機(jī)以特定字符串請(qǐng)求從機(jī)發(fā)送數(shù)據(jù),在幀發(fā)完一定時(shí)間內(nèi)等待從機(jī)響應(yīng)。

 如果主機(jī)在請(qǐng)求從機(jī)發(fā)送后規(guī)定時(shí)間內(nèi)未收到響應(yīng),即認(rèn)為超時(shí)錯(cuò),結(jié)束等待。

 從機(jī)在收到請(qǐng)求發(fā)送字符串后,發(fā)送數(shù)據(jù)幀響應(yīng),可以仍用以上幀格式。

以下是點(diǎn)對(duì)多點(diǎn)通信系統(tǒng)的主程序:

/*******************************/

/*說(shuō)明:UART點(diǎn)對(duì)多點(diǎn)多機(jī)通信主機(jī)程序                        */

/*UART1以9600bps,8位數(shù)據(jù),1位地址,1位停止模式發(fā)送。       */

/*發(fā)送地址位時(shí),地址位為1,接著發(fā)送字符串,以字符串末的0結(jié)束。*/

/*****************************************************************/

Include <msp430x14x.h>

Void Init(void);                                          //聲明UART初始化函數(shù)

Char Data[11]=”MSP430 Demo”;

Void main()
{
  Unsigned int i;
  WDTCTL=WDTPW+WDTHOLD;                //關(guān)閉看門(mén)狗
  Init();

  While(1)
{
 UTCTL1|=TXWKE;
 TXBUF1=0x01;
 While((UTCTL1&0x01)==0);

 UTCTL&=~TXWAKE;
 For(i=0;i<=11;i++)
  {
   TXBUF1=Data;

    While((UTCTL1&0x01)==0);
   }
 }
}

 

Void Init(void)
{
 UCTL1&=~SWRST;       //SWRDT復(fù)位,UART允許
 UCTL1=0x10+MM;       //8位數(shù)據(jù)位,1位停止位,地址位模式
 UBR01=0x03;
 UBR11=0x00;
 UMCTL1=0x4A;         //使用32kHZ晶振,波特率為9600bps

UTCTL1=0x10;           //選定ACLK(32kHZ晶振)為時(shí)鐘源

ME2|=0x30;             //UART發(fā)送,接收模塊允許。

P3SEL=0xC0;            //P3.6、P3.7由UART1發(fā)送模塊占用

P3DIR=0x40;             // P3.6輸出

}

-------------------------------------------------------------------------------
以下是點(diǎn)對(duì)多點(diǎn)通信系統(tǒng)的從程序。
/**************************************************************/
/*說(shuō)明:UART點(diǎn)對(duì)多點(diǎn)多機(jī)通信從機(jī)程序                        */
/*UART1以9600bps,8位數(shù)據(jù),1位地址,1位停止模式發(fā)送。       */
/*當(dāng)?shù)刂肺粫r(shí),確認(rèn)呼叫,接收后面字符,并檢查結(jié)束0。           */
/***************************************************************/

Include <msp430x14x.h>

Void Init(void);  
#define ADDR 0x01;
Char Data[20],Buffer[20];
Unsigned charj,count;

Void main()
{
 WDTCTL=WDTPW+WDTHOLD;                //關(guān)閉看門(mén)狗
  Init();
  _EINT();
  While(1);
}

 
Void Init(void)
{
 UCTL1&=~SWRST;             //SWRDT復(fù)位,UART允許
 UCTL1=0x10+MM;              //8位數(shù)據(jù)位,1位停止位,地址位模式
 UBR01=0x03;
 UBR11=0x00;
 UMCTL1=0x4A;                //使用32kHZ晶振,波特率為9600bps
 UTCTL1=0x10;                 //選定ACLK(32kHZ晶振)為時(shí)鐘源
 ME2|=0x30;                   //UART發(fā)送,接收模塊允許。
 P3SEL=0xC0;                  //P3.6、P3.7由UART1發(fā)送模塊占用
 P3DIR=0x40;                  // P3.6輸出
 IE2=URXIE1;                  //接收允許中斷
 }

 #pragma vector=UART1RX_VECTOR
 __interrupt void UART1RX(void)
{
  If(URCTL&URXWIE)               //接收為地址方式時(shí)等待正確的地址出現(xiàn)
 {
    If(RXBUF1==ADDR)            //地址正確,改變?yōu)榻邮諗?shù)據(jù)方式,準(zhǔn)備接收
    {
     URCTL1&=~URXWIE;
     Count=0;
    }
}

else                               //接收為數(shù)據(jù)方式時(shí)
{  
 Data[count]=RXBUF1;                //數(shù)據(jù)存入Data數(shù)組中
 If(Data[count++]==0)               //是否到達(dá)末尾
  {
   URCTL1|=URXWIE;                 //到達(dá)末尾時(shí)改變接收為地址方式
   For(j=0;j<count;j++)
    Buffer[j]=Data[j];           //復(fù)制字符串
   }

 }

}
  • 上一篇: 基于MSP430的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究
  • 下一篇: 沒(méi)有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話(huà):0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1