4854|21

2721

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

我的SD传感器数据怎么来的? [复制链接]

 
 
今天不经意间在手机SD卡里面看到保存的.CSV格式的传感器数据,打开一看,确认就是SensorTile开发板数据,于是今天再看了看程序。记录如下
SD保存文件如下,每个传感器一个文件

打开气压传感器,数据如下

其中时间戳值变化感觉和手机界面的曲线的横坐标值变化挺像的
其中RawData值是怎么转成pressure值的?我是没找到方法。另外,时间戳是怎么加上去的?SensorTile上无时钟芯片啊,STM32L476内部晶振?但没见设置的程序啊?又想了一下,这个日期显示是我第一次上电连接APP使用时间,也就是说官方出厂程序既支持蓝牙通信,又支持SD存储。但是目前又发现核心板、mini板、arduino板三个不能同时使用啊。我后面专门发过一篇返回出厂程序的帖子,见
https://bbs.eeworld.com.cn/thread-521170-1-1.html
可是,三个板子确实不能同时使用啊。这个数据是怎么保存进SD卡的?用哪个程序?让我捋一捋

之前发帖讨论过使用DataLog_USB程序未能成功在SD中保存数据,见
蓝牙搜素无设备,SD卡无数据记录 - 意法半导体AMG SensorTile开发大赛 - 电子工程世界-论坛 https://bbs.eeworld.com.cn/thread-520890-1-1.html
注意程序说明
  1. This application contains an example which shows how to obtain data from the various sensors on the SensorTile. The data can either be streamed to the PC via USB or saved on SD Card
复制代码

这个例程是不带BLE的,蓝牙搜不到,这个例程是通过USB虚拟串口发送到电脑或是存到SD卡中,也就是二选一。
当SD存储选择时,见下说明,数据会保存为.tsv文件,但是我明明是.CSV啊
  1. If SD Card is selected, the data stream is logged on a tsv file (Tab Separated Values).
  2. After the application is started:
  3. - the user can view/record data from the on-board environmental sensors like Temperature,
  4. Humidity (if available) and Pressure.
  5. - the user can view/record data from the on-board MEMS sensors like Accelerometer,
  6. Gyroscope and Magnetometer.
  7. - the user can view/record data from the Gas Gauge IC to monitor the battery status.
复制代码

不知道存储的电池电量监测数据是什么样的?大家有兴趣看一下

下来看程序,打开DataLog工程,有一个头文件是
#include    /* trunc */
trunc是一种函数,功能是截取日期或数字,返回指定的值。语法TRUNC(number,num_digits)
Number 需要截尾取整的数字
Num_digits 用于指定取整精度的数字


宏定义数据请求周期100ms
  1. #define DATA_PERIOD_MS (100)
复制代码

这两句很重要,初始值是1
  1. /* SendOverUSB = 0  --> Save sensors data on SDCard (enable with double click) */
  2. /* SendOverUSB = 1  --> Send sensors data via USB */
复制代码

关于RTC_Config定义如下,采用12小时制
  1. static void RTC_Config( void )
  2. {
  3.   RtcHandle.Instance = RTC;

  4.   RtcHandle.Init.HourFormat     = RTC_HOURFORMAT_12;
  5.   RtcHandle.Init.AsynchPrediv   = RTC_ASYNCH_PREDIV;
  6.   RtcHandle.Init.SynchPrediv    = RTC_SYNCH_PREDIV;
  7.   RtcHandle.Init.OutPut         = RTC_OUTPUT_DISABLE;
  8.   RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  9.   RtcHandle.Init.OutPutType     = RTC_OUTPUT_TYPE_OPENDRAIN;
  10.   
  11.   if ( HAL_RTC_Init( &RtcHandle ) != HAL_OK )
  12.   {
  13.    
  14.     /* Initialization Error */
  15.     Error_Handler();
  16.   }
  17. }
复制代码


后面RTC_TimeStampConfig定义中,初始时间默认2000-1-1 00:00:00,星期一
main中,变量初始定义
  1. uint32_t msTick, msTickPrev = 0;
  2.   uint8_t doubleTap = 0;//双击核心板标志,
复制代码

NVIC:嵌套中断向量控制器,优先级4

如果数据传到串口,LED1亮
  1. if(SendOverUSB)
  2.   {
  3.     /* Initialize LED */
  4.     BSP_LED_Init(LED1);
  5.     BSP_LED_On(LED1);
  6.   }
复制代码

紧接着初始化USB库,否则初始化SD

只有SendOverUSB为0的时候才会判断SD_Log_Enabled是否为1,进而写入数据
  1. if(SD_Log_Enabled)
  2.       {
  3.         DATALOG_SD_NewLine();
  4.       }
复制代码

如下关于双击核心板中断,保存文件的操作
  1. if(MEMSInterrupt)
  2.     {
  3.       MEMSInterrupt = 0;
  4.       BSP_ACCELERO_Get_Double_Tap_Detection_Status_Ext(LSM6DSM_X_0_handle,&doubleTap);
  5.       if(doubleTap) { /* Double Tap event */
  6.         if (SD_Log_Enabled)
  7.         {
  8.           DATALOG_SD_Log_Disable();
  9.           SD_Log_Enabled=0;
  10.         }
  11.         else
  12.         {
  13.           while(SD_Log_Enabled != 1)
  14.           {
  15.             if(DATALOG_SD_Log_Enable())
  16.             {
  17.               SD_Log_Enabled=1;
  18.             }
  19.             else
  20.             {
  21.               DATALOG_SD_Log_Disable();
  22.             }
  23.             HAL_Delay(100);
  24.           }
  25.         }
  26.       }
  27.     }
复制代码



后面initializeAllSensors( void )中关于双击核心板硬件使能
  1. if(!SendOverUSB)
  2.   {
  3.     BSP_ACCELERO_Enable_Double_Tap_Detection_Ext(LSM6DSM_X_0_handle);
  4.     BSP_ACCELERO_Set_Tap_Threshold_Ext(LSM6DSM_X_0_handle, LSM6DSM_TAP_THRESHOLD_MID);
  5.   }
复制代码


函数BSP_ACCELERO_Enable_Double_Tap_Detection_Ext定义,设置ODR 416HZ,不知道这里ODR是引脚电平输出的寄存器吗?
DrvStatusTypeDef BSP_ACCELERO_Enable_Double_Tap_Detection_Ext( void *handle )
{

  DrvContextTypeDef *ctx = (DrvContextTypeDef *)handle;

  if(ctx == NULL)
  {
    return COMPONENT_ERROR;
  }

  if ( ctx->pExtVTable == NULL )
  {
    return COMPONENT_ERROR;
  }

  /* At the moment this feature is only implemented for LSM6DS3 */
  if ( ctx->who_am_i == LSM6DSM_ACC_GYRO_WHO_AM_I )
  {
    LSM6DSM_X_ExtDrv_t *extDriver = ( LSM6DSM_X_ExtDrv_t * )ctx->pExtVTable;

    if ( extDriver->Enable_Double_Tap_Detection == NULL )
    {
      return COMPONENT_ERROR;
    }

    else
    {
      return extDriver->Enable_Double_Tap_Detection( ctx );
    }
  }

  else
  {
    return COMPONENT_ERROR;
  }
}


把程序看完也没明白当时这个文件是怎么保存的,当时确实将SD插到SD上试了一下,没反应又拔了,当时未刷程序
不明白是怎么SD卡新建.tsV文件?还请指点,我之前操作SD卡都是txt文件

最新回复

我想知道datalog传出来的数据是什么一种格式,是直接寄存器读出来的,16位的数据吗,还是转换过了,文件太大,不好读啊  详情 回复 发表于 2017-3-22 21:35
点赞 关注
 
 

回复
举报

2721

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
分享其中一个文件供参考,编辑帖子真是费时间,花了我2个半小时 20170218_124902_AccelerationEvent.csv (210 Bytes, 下载次数: 22)

点评

花费时间最多的在哪个步骤?  详情 回复 发表于 2017-3-13 09:57
啥问题啊,说说,我们完善一下  详情 回复 发表于 2017-3-13 09:52
 
 
 

回复

2万

帖子

74

TA的资源

管理员

板凳
 
suoma 发表于 2017-3-12 16:09
分享其中一个文件供参考,编辑帖子真是费时间,花了我2个半小时

啥问题啊,说说,我们完善一下
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

sensorTile的问题,就是不知道这个.CSV文件当时是怎么创建的?因为arduino底板、核心板、SD板不能同时使用  详情 回复 发表于 2017-3-13 14:12
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

9161

帖子

6

TA的资源

管理员

4
 
suoma 发表于 2017-3-12 16:09
分享其中一个文件供参考,编辑帖子真是费时间,花了我2个半小时

花费时间最多的在哪个步骤?
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

发现问题很容易, 就是编辑帖子费时间,你要告诉别人  详情 回复 发表于 2017-3-13 14:10
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

5
 
eric_wang 发表于 2017-3-13 09:57
花费时间最多的在哪个步骤?

发现问题很容易, 就是编辑帖子费时间,你要告诉别人

点评

我看你的帖子中有文字、代码和图片 花费时间最多的地方在哪个步骤?  详情 回复 发表于 2017-3-13 14:16
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

6
 
soso 发表于 2017-3-13 09:52
啥问题啊,说说,我们完善一下

sensorTile的问题,就是不知道这个.CSV文件当时是怎么创建的?因为arduino底板、核心板、SD板不能同时使用
 
 
 

回复

9161

帖子

6

TA的资源

管理员

7
 
suoma 发表于 2017-3-13 14:10
发现问题很容易, 就是编辑帖子费时间,你要告诉别人

我看你的帖子中有文字、代码和图片
花费时间最多的地方在哪个步骤?
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

这个帖子是一个经验分享,有点弄巧成拙 我该如何把问题写清楚,让别人明了,还有对程序的解释,这些都是费时间的。其实我1min就知道怎么回事,但是你要编辑告诉别人,这些都是费时的  详情 回复 发表于 2017-3-13 18:28
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

8
 
eric_wang 发表于 2017-3-13 14:16
我看你的帖子中有文字、代码和图片
花费时间最多的地方在哪个步骤?

这个帖子是一个经验分享,有点弄巧成拙
我该如何把问题写清楚,让别人明了,还有对程序的解释,这些都是费时间的。其实我1min就知道怎么回事,但是你要编辑告诉别人,这些都是费时的

点评

写内容时,如果直接可以从剪切板上粘贴图片, 而不是用专门的工具按钮去选择一个已经生成好的图片,这样的话才方便。  详情 回复 发表于 2017-3-14 13:37
辛苦啦 这种经验对其他坛友来说太宝贵了,代表SOSO感谢你  详情 回复 发表于 2017-3-14 10:37
明白了  详情 回复 发表于 2017-3-14 08:49
 
 
 

回复

9161

帖子

6

TA的资源

管理员

9
 
suoma 发表于 2017-3-13 18:28
这个帖子是一个经验分享,有点弄巧成拙
我该如何把问题写清楚,让别人明了,还有对程序的解释,这些都是 ...

明白了
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

2万

帖子

74

TA的资源

管理员

10
 
suoma 发表于 2017-3-13 18:28
这个帖子是一个经验分享,有点弄巧成拙
我该如何把问题写清楚,让别人明了,还有对程序的解释,这些都是 ...

辛苦啦   这种经验对其他坛友来说太宝贵了,代表SOSO感谢你
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

我要吃烤鸭  详情 回复 发表于 2017-3-14 10:57
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

11
 
soso 发表于 2017-3-14 10:37
辛苦啦   这种经验对其他坛友来说太宝贵了,代表SOSO感谢你

我要吃烤鸭

点评

没问题 等你来北京时 不赶趟了请你吃  详情 回复 发表于 2017-3-14 11:24
 
 
 

回复

2万

帖子

74

TA的资源

管理员

12
 

没问题  等你来北京时 不赶趟了请你吃
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

34

帖子

1

TA的资源

一粒金砂(中级)

13
 
本帖最后由 uniquey 于 2017-3-14 13:55 编辑

1.RawData值是怎么转成pressure值的?
  LPS22HB DataSheet中:
  Psens(Pressure sensitivity)=4096LSB/hPa----每hPa需要4096个RawData值
  理论上RawData/Psens即是hPa单位的气压值

点评

拿60910100/4096来算和后面数据也对不上啊  详情 回复 发表于 2017-3-14 20:27
 
 
 

回复

34

帖子

1

TA的资源

一粒金砂(中级)

14
 
本帖最后由 uniquey 于 2017-3-14 13:58 编辑
suoma 发表于 2017-3-13 18:28
这个帖子是一个经验分享,有点弄巧成拙
我该如何把问题写清楚,让别人明了,还有对程序的解释,这些都是 ...

写内容时,如果直接可以从剪切板上粘贴图片,就方便啦。
当前是选择一个已经生成好的图片,就需要我们先将图片保存下来,是有点耗时间。

点评

@soso 同学提建议了  详情 回复 发表于 2017-3-14 20:23
 
 
 

回复

34

帖子

1

TA的资源

一粒金砂(中级)

15
 
2. 时间戳是怎么加上去的?
 我知道的是LSM6DS3的FIFO有输出时间戳功能。
 HostTimestamp也许是MCU的系统时间。

3. SD卡新建.tsV文件
 这些数据是给我们分析用的吧
 至于研究一个文件怎么生成应该不是重点。

点评

HostTimestamp我觉得是获取的手机时间 关于新建tsv文件,我之前操作过SD卡,只知道可以建txt文件,不知道可以建tsv文件啊,不知道他们是怎么建的  详情 回复 发表于 2017-3-14 20:30
 
 
 

回复

34

帖子

1

TA的资源

一粒金砂(中级)

16
 
4.设置ODR 416HZ,不知道这里ODR是引脚电平输出的寄存器吗?
 Sensor都有一个选项叫ODR,就是工作频率,或采样频率。
 ODR为0就PowerDown了。ODR值越大,频率越快,越累,功耗越高
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

17
 
uniquey 发表于 2017-3-14 13:37
写内容时,如果直接可以从剪切板上粘贴图片,就方便啦。
当前是选择一个已经生成好的图片,就需要我们先 ...

@soso 同学提建议了
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

18
 
uniquey 发表于 2017-3-14 13:30
1.RawData值是怎么转成pressure值的?
  LPS22HB DataSheet中:
  Psens(Pressure sensitivity)=4096LSB/h ...

拿60910100/4096来算和后面数据也对不上啊
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

19
 
uniquey 发表于 2017-3-14 13:46
2. 时间戳是怎么加上去的?
 我知道的是LSM6DS3的FIFO有输出时间戳功能。
 HostTimestamp也许是MCU的系 ...

HostTimestamp我觉得是获取的手机时间
关于新建tsv文件,我之前操作过SD卡,只知道可以建txt文件,不知道可以建tsv文件啊,不知道他们是怎么建的
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 
厉害,膜拜大神!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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