4733|18

524

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【Atmel SAM R21创意大赛周计划】第4周 无线部分初探 [复制链接]

本帖最后由 770781327 于 2015-1-13 22:43 编辑

这周开始进入R21的重点学习了,了解他的无线通信部分。看了不少坛友分享的,其实我也差不多,先从例程跑起。

说道跑例程,老规矩,先用AtmelStudio。不过话说R21的例程确实很多,但RF相关的太少了。说来汗颜,我来回寻了几遍才给我找到。
打算从WsnDemo这个简单点的工程入手展开研究。
具体步骤就不说了,跟其他的工程一样,唯一比较让我惊讶的,这个工程编译时间好长呀

不停的编译,持续了好一会,我都要开始怀疑是不是哪出问题了,编译成功了

两块板子烧写程序的区别主要在config.h文件
  1. #if APP_ADDR == 0
  2. #define APP_CAPTION     "Coordinator"
  3. #define APP_NODE_TYPE   0
  4. #define APP_COORDINATOR 1
  5. #define APP_ROUTER      0
  6. #define APP_ENDDEVICE   0
  7. #elif APP_ADDR < 0x8000
  8. #define APP_CAPTION     "Router"
  9. #define APP_NODE_TYPE   1
  10. #define APP_COORDINATOR 0
  11. #define APP_ROUTER      1
  12. #define APP_ENDDEVICE   0
  13. #else
  14. #define APP_CAPTION     "End Device"
  15. #define APP_NODE_TYPE   2
  16. #define APP_COORDINATOR 0
  17. #define APP_ROUTER      0
  18. #define APP_ENDDEVICE   1
  19. #endif
复制代码
由这段代码可知判断板子所属的角色主要是通过 设定的APP_ADDR,这在config.h的开头部分修改
  1. #define APP_ADDR                0x0000
  2. #define APP_PANID               0x1234
  3. #define APP_SENDING_INTERVAL    2000
  4. #define APP_ENDPOINT            1
  5. #define APP_SECURITY_KEY        "TestSecurityKey0"
复制代码
  1. #define APP_ADDR                0x9000
  2. #define APP_PANID               0x1234
  3. #define APP_SENDING_INTERVAL    2000
  4. #define APP_ENDPOINT            1
  5. #define APP_SECURITY_KEY        "TestSecurityKey0"
复制代码
我就改了下APP_ADDR,然后分别下载程序到两块板子中。两块板子分别接在笔记本的两个usb端口上。
这现象怎么说呢,作为End Device的板子的led每闪一次,作为Coordinator板子的led状态就改变一次,可以看出End Device板子控制Coordinator板子led的亮灭。现象还是很明显。
看下具体程序
  1. int main(void)
  2. {
  3.         #if SAMD || SAMR21
  4.         system_init();
  5.         delay_init();
  6.         #else
  7.         sysclk_init();
  8.         board_init();
  9.         #endif
  10.         irq_initialize_vectors();
  11.         wsndemo_main();
  12. }
复制代码
这是主函数,总体上看还是比较清晰的。
个人觉得SAMR21的判断就蛮有特色的,其他厂家的芯片上就没见过这种表示,一步步切进去看了下
  1. /** SAMR21 Family */
  2. #define SAMR21 (SAMR21G || SAMR21E)
复制代码
  1. /**
  2. * \name SAMR21 series
  3. * @{
  4. */
  5. #define SAMR21G ( \
  6.                 SAM_PART_IS_DEFINED(SAMR21G16A) || \
  7.                 SAM_PART_IS_DEFINED(SAMR21G17A) || \
  8.                 SAM_PART_IS_DEFINED(SAMR21G18A) \
  9.         )

  10. #define SAMR21E ( \
  11.                 SAM_PART_IS_DEFINED(SAMR21E16A) || \
  12.                 SAM_PART_IS_DEFINED(SAMR21E17A) || \
  13.                 SAM_PART_IS_DEFINED(SAMR21E18A) \
  14.         )
复制代码
  1. /**
  2. * \name Convenience macros for part checking
  3. * @{
  4. */
  5. /* ! Check GCC and IAR part definition for 8-bit AVR */
  6. #define AVR8_PART_IS_DEFINED(part) \
  7.         (defined(__ ## part ## __) || defined(__AVR_ ## part ## __))

  8. /* ! Check GCC and IAR part definition for 32-bit AVR */
  9. #define AVR32_PART_IS_DEFINED(part) \
  10.         (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __))

  11. /* ! Check GCC and IAR part definition for SAM */
  12. #define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __))
  13. /** @} */
复制代码
切到这就切不下去了,似乎是GCC和IAR编译器关于SAM的一种用法,具体的原理等我有时间研究下在附上。
扯远了,再回到主函数
  1. system_init();
  2.         delay_init();
复制代码

这是常见的初始化操作,不用说了
  1. irq_initialize_vectors();
复制代码
这个函数是干嘛的?
  1. /**
  2. * \brief Initialize interrupt vectors
  3. *
  4. * For NVIC the interrupt vectors are put in vector table. So nothing
  5. * to do to initialize them, except defined the vector function with
  6. * right name.
  7. *
  8. * This must be called prior to \ref irq_register_handler.
  9. */
  10. #  define irq_initialize_vectors()   \
  11.         do {                             \
  12.         } while(0)
复制代码
有这边注释可知是中断这边得有的
  1. int wsndemo_main(void)
  2. {
  3.         SYS_Init();
  4. #if APP_ENDDEVICE
  5.         sm_init();
  6. #endif
  7. #if APP_COORDINATOR
  8.         sio2host_init();
  9. #endif
  10.         cpu_irq_enable();
  11.         while (1) {
  12.                 SYS_TaskHandler();
  13.                 APP_TaskHandler();
  14.         }
  15. }
复制代码
这便是无线通信的精华了,得好好研究研究。
不早了,明天再重点研究这块的使用,大家晚安啦!

最新回复

有什么电路图ma  详情 回复 发表于 2015-5-9 14:39
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
项目里面还有一个PC程序的。

点评

也是例程里面的么?名字也是WsnDemo?  详情 回复 发表于 2015-1-14 08:29
 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
dcexpert 发表于 2015-1-13 23:24
项目里面还有一个PC程序的。

也是例程里面的么?名字也是WsnDemo?


 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 
ASF之所以很慢,就是因为打包了太多的东西。这个WsnDemo就打包了PC端软件和PDF说明,在项目文件中可以看到的。

点评

这软件无法安装么[attachimg]186079[/attachimg] 我点开就这样,每一个都点过,不大对呀  详情 回复 发表于 2015-1-16 21:29
恩,这应用程序和pdf看到的,恩应该好好看看的,当时没注意,看来这ASF功能真的很强大  详情 回复 发表于 2015-1-14 12:47
 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

5
 
dcexpert 发表于 2015-1-14 09:47
ASF之所以很慢,就是因为打包了太多的东西。这个WsnDemo就打包了PC端软件和PDF说明,在项目文件中可以看到的。

恩,这应用程序和pdf看到的,恩应该好好看看的,当时没注意,看来这ASF功能真的很强大


点评

使用上位机软件需要注意一下串口设置,不然连不上。  详情 回复 发表于 2015-1-14 13:25
 
 
 

回复

1万

帖子

25

TA的资源

版主

6
 
770781327 发表于 2015-1-14 12:47
恩,这应用程序和pdf看到的,恩应该好好看看的,当时没注意,看来这ASF功能真的很强大



使用上位机软件需要注意一下串口设置,不然连不上。
 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

7
 
原本还指望今天接下去研究来着,结果ASF升级一直到现在,不断失败,不断重下,算了,希望晚上能升级成功

点评

楼主加油。在调试中遇到的问题或者解决方法到下面这个贴发表出来可好,有奖励哦 https://bbs.eeworld.com.cn/thread-454136-1-1.html  详情 回复 发表于 2015-1-15 10:46
在线升级确实有点奇怪,刚开始使用atmelstduio的时候也升级过,没成功过应该和什么代理服务有关系,最好就是下载最新的软件直接安装的好,或者翻墙看看能不能在线更新,这是我猜测的原因 现在已经不折腾as了,  详情 回复 发表于 2015-1-15 10:20
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

8
 
770781327 发表于 2015-1-14 22:19
原本还指望今天接下去研究来着,结果ASF升级一直到现在,不断失败,不断重下,算了,希望晚上能升级成功

在线升级确实有点奇怪,刚开始使用atmelstduio的时候也升级过,没成功过应该和什么代理服务有关系,最好就是下载最新的软件直接安装的好,或者翻墙看看能不能在线更新,这是我猜测的原因

现在已经不折腾as了,用iar比较清爽一些



点评

恩,每次升级都很困难,昨天到晚上11点多,突然有次能顺利下载完全了,终于结束。 我也尝试用IAR,但将asf库移植到IAR有点无从下手,还在网上找找有没什么操作例程。直接操作寄存器挑战有点大  详情 回复 发表于 2015-1-15 10:40
 
个人签名电工
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

9
 
lyzhangxiang 发表于 2015-1-15 10:20
在线升级确实有点奇怪,刚开始使用atmelstduio的时候也升级过,没成功过应该和什么代理服务有关系,最好就是下载最新的软件直接安装的好,或者翻墙看看能不能在线更新,这是我猜测的原因

现在已经不折腾as了,用iar比较清爽一些

恩,每次升级都很困难,昨天到晚上11点多,突然有次能顺利下载完全了,终于结束。
我也尝试用IAR,但将asf库移植到IAR有点无从下手,还在网上找找有没什么操作例程。直接操作寄存器挑战有点大




点评

下载这个包asf-standalone-archive-3.20.1.101里面有iar的例子,直接用,没啥区别的和as  详情 回复 发表于 2015-1-15 12:02
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

10
 
770781327 发表于 2015-1-14 22:19
原本还指望今天接下去研究来着,结果ASF升级一直到现在,不断失败,不断重下,算了,希望晚上能升级成功



楼主加油。在调试中遇到的问题或者解决方法到下面这个贴发表出来可好,有奖励哦
https://bbs.eeworld.com.cn/thread-454136-1-1.html
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 
770781327 发表于 2015-1-15 10:40
恩,每次升级都很困难,昨天到晚上11点多,突然有次能顺利下载完全了,终于结束。
我也尝试用IAR,但将asf库移植到IAR有点无从下手,还在网上找找有没什么操作例程。直接操作寄存器挑战有点大

下载这个包asf-standalone-archive-3.20.1.101里面有iar的例子,直接用,没啥区别的和as


 
个人签名电工
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

12
 
dcexpert 发表于 2015-1-14 09:47
ASF之所以很慢,就是因为打包了太多的东西。这个WsnDemo就打包了PC端软件和PDF说明,在项目文件中可以看到的。

这软件无法安装么
我点开就这样,每一个都点过,不大对呀



点评

在AS6中不能直接点,要这样 [attachimg]186081[/attachimg] [attachimg]186082[/attachimg]  详情 回复 发表于 2015-1-16 21:38
 
 
 

回复

1万

帖子

25

TA的资源

版主

13
 
770781327 发表于 2015-1-16 21:29
这软件无法安装么
我点开就这样,每一个都点过,不大对呀

在AS6中不能直接点,要这样





点评

原来如此,已经可以了,谢谢版主。真及时呀  详情 回复 发表于 2015-1-16 21:43
 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

14
 
dcexpert 发表于 2015-1-16 21:38
在AS6中不能直接点,要这样

原来如此,已经可以了,谢谢版主。真及时呀


 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

15
 
顺利安装WSNMonitor。不过配置遇到了问题
打开软件如图

选择连接

协议选择,参考坛里其他网友的选择安装的路径

后面的null空,是说没选中么,那选哪个?

TCP/IP的下啦菜单也没,不好用呀。不清楚哪设置有问题
 
 
 

回复

1万

帖子

25

TA的资源

版主

16
 
这个软件的确有些小bug,也不知道是不是windows版本问题,参考一下这篇:

https://bbs.eeworld.com.cn/thread-452982-1-1.html

点评

参考了,null可以删除,但我的没有串口选项,不好选呀[attachimg]186103[/attachimg]  详情 回复 发表于 2015-1-16 22:40
 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

17
 
dcexpert 发表于 2015-1-16 22:10
这个软件的确有些小bug,也不知道是不是windows版本问题,参考一下这篇:

https://bbs.eeworld.com.cn/thread-452982-1-1.html

参考了,null可以删除,但我的没有串口选项,不好选呀



 
 
 

回复

524

帖子

0

TA的资源

一粒金砂(高级)

18
 
WsnMonitor软件终于可以正常使用了。

解决方式:软件兼容性不行,我笔记本是win8的,得将软件设置为win7兼容,软件打开就能看见串口设置了



设置好最后一个不能选null


全选ok后没实现。

直接把程序重烧了便

配置成功,配置端口得注意是Coordinator的而不是End Device的,不过这次成功了的端口选择中也只有Coordinator的一个端口,这倒是让人费解设备管理器明明两个都显示了

WsnMonitor这软件小问题还是比较多的。而且这设备间的间距原以为是两者间 距离呢,结果将设备 放近了,距离又是反倒远了

 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(初级)

19
 
有什么电路图ma
 
 
 

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

随便看看
查找数据手册?

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