3781|7

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【Atmel SAM R21创意大赛周计划】+ 6lowpan网络单播/多播测试 [复制链接]

好吧,搞了半个月,终于搞定radio部分驱动,at86rf233的数据手册看了不下3遍,算是基本通了
大家有关于这个radio的问题可以跟帖咨询。

发个图在说话




这是单播的例子,一个发一个收。多播的比较简单,就不发图了。

一些测试代码,凑合看一下吧,也没啥用处,玩contiki的不多

发送端
  1. /**
  2. * brief  unicast_sender_process
  3. * note   单播发送处理线程
  4. * param  None
  5. * retval None
  6. */
  7. PROCESS_THREAD(unicast_sender_process, ev, data)
  8. {
  9.     static struct etimer periodic_timer;
  10.     static struct etimer send_timer;
  11.     uip_ipaddr_t *addr;
  12.    
  13.     PROCESS_BEGIN();
  14.    
  15.     servreg_hack_init();
  16.     set_global_address();
  17.     simple_udp_register(&unicast_connection, UDP_PORT, NULL, UDP_PORT, receiver);
  18.    
  19.     etimer_set(&periodic_timer, SEND_INTERVAL);
  20.     while(1) {
  21.         
  22.         PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer));
  23.         etimer_reset(&periodic_timer);
  24.         etimer_set(&send_timer, SEND_TIME);
  25.         
  26.         PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer));
  27.         addr = servreg_hack_lookup(SERVICE_ID);
  28.         if (addr != NULL) {
  29.             static unsigned int message_number;
  30.             char buf[20];
  31.             
  32.             printf("Sending unicast to ");
  33.             uip_debug_ipaddr_print(addr);
  34.             printf("\n");
  35.             sprintf(buf, "Message %d", message_number);
  36.             message_number++;
  37.             simple_udp_sendto(&unicast_connection, buf, strlen(buf) + 1, addr);
  38.         } else {
  39.             printf("Service %d not found\n", SERVICE_ID);
  40.         }
  41.     }
  42.    
  43.     PROCESS_END();
  44. }
复制代码

发送端接收回调

  1. /**
  2. * brief  receiver
  3. * note   接收回调函数
  4. * param  None
  5. * retval None
  6. */
  7. static void
  8. receiver(struct simple_udp_connection *c,
  9.          const uip_ipaddr_t *sender_addr,
  10.          uint16_t sender_port,
  11.          const uip_ipaddr_t *receiver_addr,
  12.          uint16_t receiver_port,
  13.          const uint8_t *data,
  14.          uint16_t datalen)
  15. {
  16.     printf("Data received on port %d from port %d with length %d\n",
  17.            receiver_port, sender_port, datalen);
  18.    
  19.     printf("Context %s\n", data);
  20. }
复制代码


接收端
  1. /**
  2. * brief  unicast_receiver_process
  3. * note   单播接收处理线程
  4. * param  None
  5. * retval None
  6. */
  7. PROCESS_THREAD(unicast_receiver_process, ev, data)
  8. {
  9.     uip_ipaddr_t *ipaddr;
  10.    
  11.     PROCESS_BEGIN();
  12.    
  13.     servreg_hack_init();
  14.     ipaddr = set_global_address();
  15.     create_rpl_dag(ipaddr);
  16.     servreg_hack_register(SERVICE_ID, ipaddr);
  17.     simple_udp_register(&unicast_connection, UDP_PORT, NULL, UDP_PORT, receiver);
  18.    
  19.     while(1) {
  20.         PROCESS_WAIT_EVENT();
  21.     }
  22.     PROCESS_END();
  23. }
复制代码

接收端接收回调

  1. /**
  2. * brief  receiver
  3. * note   接收回调函数
  4. * param  None
  5. * retval None
  6. */
  7. static void
  8. receiver(struct simple_udp_connection *c,
  9.          const uip_ipaddr_t *sender_addr,
  10.          uint16_t sender_port,
  11.          const uip_ipaddr_t *receiver_addr,
  12.          uint16_t receiver_port,
  13.          const uint8_t *data,
  14.          uint16_t datalen)
  15. {
  16.     printf("Data received from ");
  17.     uip_debug_ipaddr_print(sender_addr);
  18.     printf(" on port %d from port %d with length %d: '%s'\n", receiver_port, sender_port, datalen, data);
  19. }
复制代码


哎,节点太少了,看来要开始买节点了,路由RPL没法测试,后面有机会一定玩一下RIME目前支持俩种算法AODV啥的,和官网那个llmesh使用的算法类似。

最新回复

contiki 2.7好像还没支持到SAM R21吧,没啥例子不好学习啊。 自己从头开始搞的话,楼主能否指点一下怎么搞contiki?6LoWPAN?  详情 回复 发表于 2015-6-19 11:43

赞赏

3

查看全部赞赏

点赞 关注(1)
个人签名电工
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
又想啰嗦几句,这radio太强了
希望价格能在给力一些
 
个人签名电工
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
要是在多一点分析和讲解就更好了。radio部分,是重点啊,可惜时间太少了,没有时间看了。希望楼主给多补充一下。

ATMEL的AT86RF233性能的确不错,但是模块价格好像不低。如果是自己做,要达到同样的性能,需要花不少功夫才行。
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

4
 
感谢楼主分享
 
 
 

回复

3416

帖子

0

TA的资源

纯净的硅(高级)

5
 
这几天破事贼多,缓缓再来折腾R21,先学习一下
 
个人签名

So TM what......?

 

 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
谢谢各位的支持

关于radio部分确实比较麻烦,建议结合ieee-802.15.4官方文档一起看
这样会好很多
 
个人签名电工
 
 

回复

659

帖子

1

TA的资源

纯净的硅(中级)

7
 
这个contiki-os是什么?一个OS? 移植是你做的?太强大了吧
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

8
 
contiki 2.7好像还没支持到SAM R21吧,没啥例子不好学习啊。 自己从头开始搞的话,楼主能否指点一下怎么搞contiki?6LoWPAN?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表