10501|25

9805

帖子

24

TA的资源

版主

楼主
 

【TI首届低功耗设计大赛】第二个外设程序 MSP430FR5969读取ADXL362数据通过CC1101发送 [复制链接]

 
本帖最后由 littleshrimp 于 2014-12-27 13:24 编辑

世界上最低功耗的MCUMSP430FR5969+世界最低功耗的加速度传感器ADXL362堪称完美组合。组合完能嘎蛤?谁知道,先跑起来再说。
MSP430FR5969就不介绍了,那不是一搬的强大。
ADXL362是一款超低功耗、3轴MEMS加速度计,输出数据速率为100 Hz时功耗低于2 μA,在运动触发唤醒模式下功耗为270 nA。与使用功率占空比来实现低功耗的加速度计不同,ADXL362没有通过欠采样混叠输入信号;它采用全数据速率对传感器的整个带宽进行采样。
ADXL362通常提供12位输出分辨率;在较低分辨率足够时,还提供8位格式化数据以实现更高效的单字节传送。测量范围为±2g、±4 g及±8 g,±2 g范围内的分辨率为1 mg/LSB。噪声电平要求低于ADXL362正常值550 μg/√Hz的应用可以选择两个低噪声模式(典型值低至175μg/√Hz)之一,电源电流增加极小。
除了超低功耗以外,ADXL362还具有许多特性来实现真正的系统级节能。该器件包含了一个深度多模式输出FIFO、一个内置微功耗温度传感器和几个运动检测模式,其中包括可调阙值的睡眠和唤醒工作模式,在该模式下当测量速率为6HZ(大约)时功耗低至270nA。如有需要,可在检测到运动时提供一个引脚输出来直接控制外部开关。此外,ADXL362还支持对采样时间和/或外部时钟进行外部控制。
ADXL362可以在1.6V至3.5V的宽电源电压范围内工作,并且必要时可以与采用独立低电源电压工作的主机接口。ADXL362采用3 mm ×3.25 mm × 1.06 mm封装。
这么先进的传感器请问在哪里才能买的到?
ADI官网就可以申请。
这款传感器的价格不便宜,所以如果对功耗要求不高就贝选这颗了。

要调试这个传感器首先要做个PCB,封装方面ADI官方提供了BXL文件
装一个Ultra Librarian的软件就可以把BXL文件转换成任何你想要的格式,应该是任何。


PCB解决了就开始调程序,ADI所以招人欣恨的一点就是除了提供BXL封闭库,还提供了器件驱动。
瑞萨的代码看起来比较舒服,所以我下了这个原码。
打开压缩包会看到这些文件
ADXL362.C和ADXL362.H不用动,把Communication.c里的SPI改成MSP430FR5969的
再把MAIN.H里的配置代码摘出来放到工程里就可以使用了。是不是非常简单?
调试好ADXL362后为了方便测试,把它和我的第一个外设程序
MSP430FR5969 +CC1101 https://bbs.eeworld.com.cn/thread-453143-1-1.html
结合到一起实现ADXL362加速度数据的无线采集。
主程序是这样写的:
  1. <font face="宋体" size="4">void adxl362(void)
  2. {
  3.     uint8_t i = 0;
  4.      LED_TOG();
  5.      LED_TOG();
  6.     /* Init device. */
  7.     if(ADXL362_Init())
  8.     {
  9.        i++;
  10.         //ADI_Component("ADXL362 OK");
  11.     }
  12.     else
  13.     {
  14.         i--;
  15.         //ADI_Component("ADXL362 Err");
  16.     }
  17.     /* Put the device in standby mode. */
  18.      ADXL362_SetPowerMode(0);
  19.     /* Set accelerometer's output data rate to: 12.5 Hz. */
  20.     ADXL362_SetOutputRate(ADXL362_ODR_12_5_HZ);
  21.     /* Setup the activity and inactivity detection. */
  22.     ADXL362_SetRegisterValue(
  23.                   ADXL362_ACT_INACT_CTL_LINKLOOP(ADXL362_MODE_LINK),
  24.                   ADXL362_REG_ACT_INACT_CTL,
  25.                   1);
  26.     ADXL362_SetupActivityDetection(1, 30, 1);
  27.     ADXL362_SetupInactivityDetection(1, 700, 25);
  28.     /* Start the measurement process. */
  29.     ADXL362_SetPowerMode(1);
  30.     /* Clear ACT and INACT bits by reading the Status Register. */
  31.     ADXL362_GetRegisterValue(&adxl362_status,
  32.                              ADXL362_REG_STATUS,
  33.                              1);
  34.    
  35.     while(1)
  36.     {
  37.       /* Wait for the detection of an activity or inactivity or for available
  38.         data. */
  39.         do
  40.         {
  41.             ADXL362_GetRegisterValue(&adxl362_status, ADXL362_REG_STATUS, 1);
  42.            
  43.         }while(
  44.                ((adxl362_status & ADXL362_STATUS_DATA_RDY) == 0) &&
  45.                ((adxl362_status & ADXL362_STATUS_INACT) == 0)    &&
  46.                ((adxl362_status & ADXL362_STATUS_ACT == 0)));
  47.         /* Get the data from the device and display it. */   
  48.         if(adxl362_status & ADXL362_STATUS_DATA_RDY)
  49.         {   
  50.             ADXL362_GetXyz(&xAxis, &yAxis, &zAxis);
  51.             memset(str_buffer,0,sizeof(str_buffer));
  52.             sprintf(str_buffer,"x:%d,y:%d,z:%d",xAxis,yAxis,zAxis);
  53.             send_packet_string(str_buffer);
  54.             LED_TOG();
  55.             //temperature = ADXL362_ReadTemperature();
  56.         }
  57.         /* Display the activity/inactivity adxl362_status. */
  58.         if(adxl362_status & ADXL362_STATUS_INACT)
  59.         {
  60.         }
  61.         else if(adxl362_status & ADXL362_STATUS_ACT)
  62.         {

  63.         }         
  64.         LED1_TOG();
  65.         delay_s(1);
  66.     }
  67. }
  68. int main( void )
  69. {
  70.     // Stop watchdog timer to prevent time out reset
  71.     WDTCTL = WDTPW + WDTHOLD;

  72.     PM5CTL0 &= ~LOCKLPM5;
  73.    
  74.    
  75.    
  76.     CC1101_Init();                                                              //始始化cc1101
  77.     CC1101_SetRx();                                                             //配置cc1101进入接收模式
  78.     send_packet_string("Acceleration sensor is running!");
  79.     adxl362();
  80. }</font>
复制代码


下面附上一段演示视频和ADXL362在不同角度时采集数据的图片







IMG_20141227_124303335.jpg (410.24 KB, 下载次数: 1)

IMG_20141227_124303335.jpg

IMG_20141227_124311355.jpg (554.1 KB, 下载次数: 0)

IMG_20141227_124311355.jpg

最新回复

楼主,我现在用adxl362,读取器件内的id寄存器没有问题,就是三轴加速度读不出来,寄存器其他地方也写不进去,请教一下,希望能收到你的回复,谢谢!  详情 回复 发表于 2017-8-21 17:56
 
点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复
举报

3416

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
看上去好好玩的样子
价格怎么样?

点评

实验阶段,还没买过,据说12块人民币左右  详情 回复 发表于 2014-12-28 07:17
 
个人签名

So TM what......?

 


回复

1119

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
过来看看~~~~~~~~~~~~~~~~~~~
 
 
 

回复

9805

帖子

24

TA的资源

版主

4
 
实验阶段,还没买过,据说12块人民币左右
 
 
 

回复

6

帖子

2

TA的资源

一粒金砂(初级)

5
 
瑞萨的代码哪里可以找到?

点评

你可以加一下论坛的QQ群 瑞萨MCU DIY活动交流 383376398  详情 回复 发表于 2015-8-12 10:45
 
 
 

回复

9805

帖子

24

TA的资源

版主

6
 
hekang889988 发表于 2015-8-12 09:42
瑞萨的代码哪里可以找到?

你可以加一下论坛的QQ群
瑞萨MCU DIY活动交流 383376398


或者发贴提问哦
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

6

帖子

2

TA的资源

一粒金砂(初级)

7
 
这个ADXL362的例程能给一份吗?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼主的帖子真是超级有帮助!
不过作为一个菜鸟还是有一些疑惑希望楼主可以帮帮忙,指点一二:
    完全按照楼主的程序进行的初始化,为什么我读出的数据一直跳变的很厉害,即使传感器姿态不变,三个轴读出来的数据也在不停的变化,而且变化的很厉害?不知道楼主遇到过这种情况吗?
    还有就是你主循环中的dxl362_status是从哪里得来的,表示什么意思?

点评

主循环里的第一句话,读取ADXL362的状态寄存器  详情 回复 发表于 2015-9-22 13:37
 
 
 

回复

9805

帖子

24

TA的资源

版主

9
 
北斗下的枫叶 发表于 2015-9-21 16:41
楼主的帖子真是超级有帮助!
不过作为一个菜鸟还是有一些疑惑希望楼主可以帮帮忙,指点一二:
  ...
  1.       /* Wait for the detection of an activity or inactivity or for available
  2.         data. */
  3.         do
  4.         {
  5.             ADXL362_GetRegisterValue(&adxl362_status, ADXL362_REG_STATUS, 1);
  6.             
  7.         }while(
  8.                ((adxl362_status & ADXL362_STATUS_DATA_RDY) == 0) &&
  9.                ((adxl362_status & ADXL362_STATUS_INACT) == 0)    &&
  10.                ((adxl362_status & ADXL362_STATUS_ACT == 0)));
复制代码

主循环里的第一句话,读取ADXL362的状态寄存器
我测量的结果比较稳定
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

9805

帖子

24

TA的资源

版主

10
 
hekang889988 发表于 2015-8-12 19:52
这个ADXL362的例程能给一份吗?

ExampleCode_iMEMS_ADXL362 (3).zip (584.44 KB, 下载次数: 166)
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 
littleshrimp 发表于 2015-9-22 13:37
主循环里的第一句话,读取ADXL362的状态寄存器
我测量的结果比较稳定

再请教一个蠢蠢的问题,我读取的ADXL362状态寄存器的值,始终是ox40或是0x00,所以无法跳出这个do while循环,不太明白是为什么

点评

看一下传感顺的片选信号是不是低电平,再看一下通信波型是否正确,再参照数据手册看状态码对应的信息。 我觉得没通信上的可能性比较大。  详情 回复 发表于 2015-9-25 16:14
 
 
 

回复

9805

帖子

24

TA的资源

版主

12
 
北斗下的枫叶 发表于 2015-9-25 16:09
再请教一个蠢蠢的问题,我读取的ADXL362状态寄存器的值,始终是ox40或是0x00,所以无法跳出这个do while ...

看一下传感顺的片选信号是不是低电平,再看一下通信波型是否正确,再参照数据手册看状态码对应的信息。
我觉得没通信上的可能性比较大。
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
楼主您好,能分享下瑞萨ADXL362的代码吗?十分感谢,小弟最近也在DIY这方面的项目,求参考

点评

在10楼了哦  详情 回复 发表于 2015-10-30 11:40
 
 
 

回复

9805

帖子

24

TA的资源

版主

14
 
dianzifly 发表于 2015-10-30 10:27
楼主您好,能分享下瑞萨ADXL362的代码吗?十分感谢,小弟最近也在DIY这方面的项目,求参考

在10楼了哦
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
有没有可以替代362性价比高一点芯片
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

16
 
正在调试SPI,mark!
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

17
 
分享下你的代码吧,大神!
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

18
 
在调5969的SPI,但是总是通信失败,楼主能分享下你的SPI驱动嘛?先行谢过!

点评

这里有一个CC1101的程序你可以先看一下哦 https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=453143&mobile=2  详情 回复 发表于 2016-4-28 21:44
我用手机上网 不方便发代码 等我用电脑时再给你发吧  详情 回复 发表于 2016-4-28 21:41
 
 
 

回复

9805

帖子

24

TA的资源

版主

19
 


我用手机上网 不方便发代码
等我用电脑时再给你发吧
 
 
 

回复

9805

帖子

24

TA的资源

版主

20
 


这里有一个CC1101的程序你可以先看一下哦
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=453143&mobile=2
 
 
 

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

随便看看
查找数据手册?

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