首页 | 模拟电子 | 单片机 | 电源技术 | 通信/总线 | 工业控制 | 传感器件 | 我要投稿 | 访客留言 | 资料下载 | 内容搜索
>首页 -> 技术文章 -> 单片机

TOP

MSP430点对多点通信原理(上)
[ 录入者:elitist | 时间:2008-02-09 22:00:05 | 作者: | 来源: | 浏览:21次 ]
 

MSP430系列的多机通信有两种实现方式:一种是用地址位来指示地址字符,另一种是用线路足够长的空闲来指示地址字符。以下的点对多点多机通信实例,采用地址位方式实现主机对多机的寻址。一般从机以总线方式和主机连接。每次主机以某一地址呼叫,只有地址相符的从机能识别呼叫并作出响应。

为以下的多机通讯实例设计的简单的协议:

通信帧结构

随机字节

0xFF0xAA0x55

地址

数据

结束

随机字节:在传输的开始发送的任意字节

先导字段:先导字段有0xFF0xAA0x55

地址:取值1—16,即主机可以呼叫16个从机之一,发送时地址位有效。

结束:0

 

主机功能:以从机地址呼叫,接着发送字符串,最后以发送0结束。

从机功能:识别呼叫地址,发现相符时接收后续数据,接收到0时结束。

本例值实现了主机向多个从机发送字符串的功能。如果要实现主机接收从机数据,可以修改以上通信协议,增加以下功能:

l         主机以特定字符串请求从机发送数据,在帧发完一定时间内等待从机响应。

l         如果主机在请求从机发送后规定时间内未收到响应,即认为超时错,结束等待。

l         从机在收到请求发送字符串后,发送数据帧响应,可以仍用以上帧格式。

以下是点对多点通信系统的主程序:

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

/*说明:UART点对多点多机通信主机程序                        */

/*UART19600bps,8位数据,1位地址,1位停止模式发送。       */

/*发送地址位时,地址位为1,接着发送字符串,以字符串末的0结束。*/

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

Include <msp430x14x.h>

 

Void Init(void);                                          //声明UART初始化函数

Char Data[11]=”MSP430 Demo”;

 

Void main()

{

  Unsigned int i;

  WDTCTL=WDTPW+WDTHOLD;                //关闭看门狗

  Init();

  While(1)

{

UTCTL1|=TXWKE;

TXBUF1=0x01;

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

 UTCTL&=~TXWAKE;

For(i=0;i<=11;i++)

{

TXBUF1=Data[i];

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

}

}

}

 

Void Init(void)

{

 UCTL1&=~SWRST;                               //SWRDT复位,UART允许

UCTL1=0x10+MM;                                  //8位数据位,1位停止位,地址位模式

UBR01=0x03;

UBR11=0x00;

UMCTL1=0x4A;                                       //使用32kHZ晶振,波特率为9600bps

UTCTL1=0x10;                                        //选定ACLK32kHZ晶振)为时钟源

ME2|=0x30;                                             //UART发送,接收模块允许。

P3SEL=0xC0;                                           //P3.6P3.7UART1发送模块占用

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

}

[上一篇]i2c 程序(c语言) [下一篇]MSP430点对多点通信原理(下)

相关栏目

最新文章

热门文章

推荐文章

相关文章

广告位