4585|2

3416

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

【ATMEL SAM R21 】LWMESH-WSNDEMO应用实验 [复制链接]

本帖最后由 ljj3166 于 2015-1-24 17:08 编辑

今后一个月只能够使用老掉牙的古董电脑,编译一次得5分钟
昨晚折腾好久,终于搞定一个LWMESH的简单应用
大概的结构是 LCD——SAMR21......SAMR21——串口助手
主要作用是采集LCD上的描点,并通过ZIGBEE传输到另一块R21,再通过串口转发给PC串口助手
---------------------------------------------------简单分析-----------------------------------------------
WSNDEMO的应用手册真是赞,虽然没有深入讲解
但是LWMESH的基本用法介绍得非常详细
这里简单小结一下:
0、基本代码结构
下面的代码,就是使用LWMESH的基本结构
  1. static void APP_TaskHandler(void)
  2. {
  3.   // Put your application code here
  4. }

  5. int main(void)
  6. {
  7.   SYS_Init();

  8.   while (1)
  9.   {
  10.     SYS_TaskHandler();
  11.     APP_TaskHandler();
  12.   }
  13. }
复制代码
各种初始化,然后是系统任务和应用程序的循环调用
WSNDEMO中初始化和系统任务都已经搞定了,如果需要添加自己的代码
修改APP_TaskHandler就好了

1、网络的初始化
这里要配置一大堆的基础网络数据
瞧瞧
NWK_SetAddr(),配置network address
NWK_SetPanId(),配置PAN ID
PHY_SetChannel(),配置frequency channel
PHY_SetBand(),配置频率frequency band
PHY_SetModulation(),配置调制模式
PHY_SetTxPower(),配置发射能量(发射功率?)
PHY_SetRxState(),配置接收端的状态
NWK_SetSecurityKey(),配置密匙
如果需要接收数据的话,还需要制定一个回调函数并使用
  1. static bool appDataInd(NWK_DataInd_t *ind)
  2. {
  3.   // process the frame
  4.   return true;
  5. }

  6. NWK_OpenEndpoint(1, appDataInd);
复制代码
初始化就是这么一大堆参数

2、发送数据、接收数据
WSNDEMO定制了一些列发送和接收的结构体,成员变量类型各异
所以要发送数据的话,必须要格式相同
代码中自带的AVR2130_LWMesh_Developer_Guide_v1.2.1.pdf文件中有比较详细的描述
使用前建议看看

3、系统服务
主要是系统的计时器,其实是个软件定时器,
如果没有特殊要求的话,个人觉得完全可以不用改动了
其他的底层类型定义、宏定义、基础配置参数之类的,这里就不深究了

---------------------------------------------改造DEMO------------------------------------------------
添加各种驱动LCD和触摸屏的头文件和c文件
在APP_TaskHandler中撸上自己的代码
  1. static void APP_TaskHandler(void)
  2. {
  3.         GetDisplayPoint(&display, Read_Ads7846(), &matrix );
  4.         if((temp.x != display.x)||(temp.y != display.y)){
  5.                 printf("%d,%d\r\n",display.x,display.y);temp.x = display.x;temp.y = display.y;
  6.                 appMsg.SetX = display.x;
  7.                 appMsg.SetY = display.y;
  8.         }
  9.         else {temp.x = display.x;temp.y = display.y;}
  10.         //        Touch_Debug();
  11.         if((display.y)>290)
  12.         {
  13.                 for(is=0;is<10;is++)
  14.                 {
  15.                         if((21*is<display.x) && display.x<21*(is+1) )
  16.                         {
  17.                                 touch_OpenColor = Table_Color[is];
  18.                         }
  19.                 }
  20.                 if((21*10<display.x) && (display.x)<240 )
  21.                 {
  22.                         Color_Box        (0,16,239,274,Blue,Blue2);
  23.                 }
  24.         }
  25.         if(16<(display.y)&& (display.y)<290 ){
  26.                 TP_DrawPoint(display.x,display.y,touch_OpenColor);
  27.         }
  28.         
  29.         switch (appState) {
  30. ……
复制代码

WSNDEMO中sio2host已经定义EDBG为串口,并重定向,可使用printf
不用白不用,哈哈
发送数据的结构体中加上X、Y坐标SetX和SetY
  1. typedef struct  AppMessage_t {
  2.         uint8_t commandId;
  3.         uint8_t nodeType;
  4.         uint64_t extAddr;
  5.         uint16_t shortAddr;
  6.         uint32_t softVersion;
  7.         uint32_t channelMask;
  8.         uint16_t panId;
  9.         uint8_t workingChannel;
  10.         uint16_t parentShortAddr;
  11.         uint8_t lqi;
  12.         int8_t rssi;
  13.         uint8_t led_flag;
  14.         uint16_t SetX;
  15.         uint16_t SetY;
  16.         struct {
  17.                 uint8_t type;
  18.                 uint8_t size;
  19.                 int32_t battery;
  20.                 int32_t temperature;
  21.                 int32_t light;
  22.         } sensors;

  23.         struct {
  24.                 uint8_t type;
  25.                 uint8_t size;
  26.                 char text[APP_CAPTION_SIZE];
  27.         } caption;
  28. } AppMessage_t;
复制代码
发送端准备就绪

接收端按部就班修改即可,这里不多讨论了

编译,run

--------------------------------运行结果及残余问题-----------------------------------------
上个视频吧(审核中):


ZigBee目前还不能实时传输,看两块板的串口输出

左边是接收板,右边是采集板
看得出来,只有几个数据被发送到接收端了
估计要重新了解一下系统服务的相关参数
或者直接采集多个数据,一次性发送
后边再研究吧
先到这



最新回复

你们好给力 我已经有段时间没弄了  详情 回复 发表于 2015-1-24 16:44

赞赏

1

查看全部赞赏

点赞 关注
个人签名

So TM what......?

 

回复
举报

5979

帖子

8

TA的资源

版主

沙发
 
你们好给力 我已经有段时间没弄了

点评

大神出马,那不就是几天搞定  详情 回复 发表于 2015-1-24 16:55
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复

3416

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
chenzhufly 发表于 2015-1-24 16:44
你们好给力 我已经有段时间没弄了



大神出马,那不就是几天搞定
 
个人签名

So TM what......?

 

 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表