打印
[应用相关]

Sensor Tile & Matlab GUI 调试过程

[复制链接]
761|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灯的亮灭 时间来测量的,不太准确,但是对我来说 也只是想知道这段时间是多少而已:

可以看到这是轮询的10ms (源程序是100ms , 我做了修改/* Data acquisition period [ms] */
#define DATA_PERIOD_MS (10))
上图 的波形 实际上 我还在 Accelero_Sensor_Handler( LSM6DSM_X_0_handle );这个程序里面添加了LED的亮灭 ,来区分接收数据的时间(起始高电平的时间 62us)和USB发送数据的时间(后面低电平的一段时间205us)。

总共在
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 可以干别的事呢。(比如姿态解算)。
看下效果吧:

流畅运行,MATLAB GUI 不是盖的,动态绘图一点不卡。
文末我把我的MATLAB GUI 源码贴上,感兴趣的可以自己DIY 一下,我自己做的也很粗糙。(PS重要的地方我都注释了)

使用特权

评论回复
沙发
天灵灵地灵灵| | 2020-12-14 22:26 | 只看该作者
高手啊。

使用特权

评论回复
板凳
两只袜子| | 2020-12-15 16:35 | 只看该作者

MATLAB GUI 显示的是什么值啊  MATLAB GUI 是串口接收的数据么

使用特权

评论回复
地板
powerantone| | 2020-12-15 17:13 | 只看该作者
很好的分享,期待进一步进展

使用特权

评论回复
5
nawu| | 2021-1-7 20:47 | 只看该作者
ODR的大门是什么意思呢

使用特权

评论回复
6
qcliu| | 2021-1-7 20:56 | 只看该作者
发送数据的最短时间间隔是多少呀

使用特权

评论回复
7
tfqi| | 2021-1-7 21:01 | 只看该作者
楼主真是高手啊  看波形 效果非常不错

使用特权

评论回复
8
wiba| | 2021-1-7 21:04 | 只看该作者
怎么会这么低的频率呢

使用特权

评论回复
9
zljiu| | 2021-1-7 21:06 | 只看该作者
这个函数的功能是什么啊

使用特权

评论回复
10
两只袜子| | 2021-1-12 16:29 | 只看该作者
哈哈,楼主的确是高手

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1339

主题

3897

帖子

0

粉丝