关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 采用MC13192的无线传感器网络节点设计方案

采用MC13192的无线传感器网络节点设计方案

作者: 时间:2011-07-31 来源:网络 收藏

  SSPDR = (uint8)(u8Addr 0x3f);/*写入要访问的6位地址,设置写*/
  while((SSPSR 0x01) == 0);/*等待发送栈为空*/
  while((SSPSR 0x10) != 0);/*等待状态寄存器空闲*/
  u8TempValue = SSPDR;/*清空地址中的内容*/
  SSPDR = (uint8)(u16Content >> 8);/*写高字节*/
  while((SSPSR 0x01) == 0);
  while((SSPSR 0x10) != 0);
  u8TempValue = SSPDR;
  SSPDR = (uint8)(u16Content 0x00FF);/*写低字节*/
  while((SSPSR 0x01) == 0);
  while((SSPSR 0x10) != 0);
  u8TempValue = SSPDR;
  IO1SET =_CE;/*禁止SPI*/
RestoreInterrupts(); /*恢复MC13192中断状态*/
}
uint16 SPIDrvRead (uint8 u8Addr) {/*SPI读函数*/
  uint8 u8TempValue;
  uint16 u16ret;
  SPIClearRecieveStatReg(); /*清状态寄存器*/
  SPIClearRecieveDataReg();/*清接收数据寄存器*/
  MC13192DisableInterrupts(); /*禁止MC13192产生中断请求*/
  IO1CLR = MC13192_CE;/*使能MC13192 SPI */
  SSPDR = (uint8)((u8Addr 0x3f) | 0x80);/*写入要访问的6位地址,设置读*/
  while((SSPSR 0x01) == 0); /*等待发送栈为空*/
  while((SSPSR 0x10) != 0);/*等待状态控制器空闲*/
  u8TempValue = SSPDR;
  SSPDR = (uint8)0xFF;
  while((SSPSR 0x01) == 0);
  while((SSPSR 0x10) != 0);
  u8TempValue = SSPDR;/*存放高字节数据*/
  SSPDR = (uint8)0xFF;
  while((SSPSR 0x01) == 0);
  while((SSPSR 0x10) != 0);
  u16ret = SSPDR;/*存放低字节数据*/
  u16ret=u16ret+u8TempValue*256;/*存放一个完整字*/
  IO1SET = MC13192_CE;/*禁止MC13192 SPI*/
  MC13192RestoreInterrupts();/*恢复MC13192中断状态*/
  return u16ret;
}

本文引用地址://m.amcfsurvey.com/article/161711.htm

按此在新窗口浏览图片
图4 发送程序流程    图5 接收程序流程

3.3 实验结果

  图6为硬件实物图。该电路板经过仿真调试应用良好,可以实现多个间的通信;在实验电路板上设置了一个LED,可以通过灯的闪烁来指示信息接收的质量以及接收的成败;能够利用串行接口与计算机进行通信,并且可以通过JTAG接口电路进行程序的固化。初步的实验表明: 通信距离基本达到预期目标,在空旷地带以最大功率传输,可以以较小误码率传输60多米。1节电压为3.6 V、容量为2 100 mAh的干电池供电时,连续工作的时间为3~4天。如果使得该节点始终工作在超低功耗的工作状态,则其工作时间可以超过1年,能够满足特定应用场合对电池寿命的要求。

按此在新窗口浏览图片
图6 硬件节点实物图

结语

  经实验证明,以MC13192和LPC2138为核心构造的节点,在功耗、传输距离以及传输速率等性能上都能满足应用要求。在此基础之上,通过移植ZigBee协议栈,可以构建ZigBee层、应用层及安全层,再配以满足特定要求的便可实现具体的应用网络。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭