[应用相关] Sensor Tile & Matlab GUI 调试过程

[复制链接]
882|9
 楼主| cr315 发表于 2020-12-14 10:29 | 显示全部楼层 |阅读模式
昨天经过论坛大神 小虾(@littleshrimp )的指点,终于找到修改源码中修改ODR的大门。原先的ODR是104hz , 我测试了一下,在这个ODR下的 获取数据 及串口发送的时间(只是ACC的,别的我都去掉了):

  • // RTC_Handler( &RtcHandle );
  •       Accelero_Sensor_Handler( LSM6DSM_X_0_handle );
  •      // Gyro_Sensor_Handler( LSM6DSM_G_0_handle );
  •     //  Magneto_Sensor_Handler( LSM303AGR_M_0_handle );
  •      // Pressure_Sensor_Handler( LPS22HB_P_0_handle );

复制代码



这里我是通过测量LED灯的亮灭 时间来测量的,不太准确,但是对我来说 也只是想知道这段时间是多少而已:
142159znn8zp22no5o9p2w.bmp
可以看到这是轮询的10ms (源程序是100ms , 我做了修改/* Data acquisition period [ms] */
#define DATA_PERIOD_MS (10))
上图 的波形 实际上 我还在 Accelero_Sensor_Handler( LSM6DSM_X_0_handle );这个程序里面添加了LED的亮灭 ,来区分接收数据的时间(起始高电平的时间 62us)和USB发送数据的时间(后面低电平的一段时间205us)。
142200vemv3kw6eveemk3c.bmp
总共在
if(msTick % DATA_PERIOD_MS == 0 && msTickPrev != msTick)
{
。。。
}
这个里面花的时间是270us 。(注意:我还把USB的虚拟串口波特率改成了921600,原来是115200;把Accelero_Sensor_Handler( LSM6DSM_X_0_handle ); 里面串口发送的数据简化到只传数据结尾\n)。
270us 什么概念,3.7Khz 也就是理论上 最大ODR可以达到3.7Khz 。 当然实际上不需要,而且3.7Khz 也绝对不是最大值。
我最后把 DATA_PERIOD_MS 改成了5ms ; ODR改成了208hz 。串口波特率还是921600bps。 在这个条件下,5ms 的轮询还有4.73ms 可以干别的事呢。(比如姿态解算)。
看下效果吧:
143701jmjygmmjr25occgb.jpg.thumb.jpg
流畅运行,MATLAB GUI 不是盖的,动态绘图一点不卡。
文末我把我的MATLAB GUI 源码贴上,感兴趣的可以自己DIY 一下,我自己做的也很粗糙。(PS重要的地方我都注释了)
144133zp55kktkpqtpupkt.png.thumb.jpg
天灵灵地灵灵 发表于 2020-12-14 22:26 | 显示全部楼层
高手啊。
两只袜子 发表于 2020-12-15 16:35 | 显示全部楼层

MATLAB GUI 显示的是什么值啊  MATLAB GUI 是串口接收的数据么
powerantone 发表于 2020-12-15 17:13 | 显示全部楼层
很好的分享,期待进一步进展
nawu 发表于 2021-1-7 20:47 | 显示全部楼层
ODR的大门是什么意思呢
qcliu 发表于 2021-1-7 20:56 | 显示全部楼层
发送数据的最短时间间隔是多少呀
tfqi 发表于 2021-1-7 21:01 | 显示全部楼层
楼主真是高手啊  看波形 效果非常不错
wiba 发表于 2021-1-7 21:04 | 显示全部楼层
怎么会这么低的频率呢
zljiu 发表于 2021-1-7 21:06 | 显示全部楼层
这个函数的功能是什么啊
两只袜子 发表于 2021-1-12 16:29 | 显示全部楼层
哈哈,楼主的确是高手
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1466

主题

4964

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部