本帖最后由 williamwang_st 于 2012-8-21 14:31 编辑
7# lengyusong
对于前三个问题:
1)*debug命令后,返回是持续采集到的数据、且为readable的。针对iNEMO引擎,我没有在emotion_REL_2.3的代码中没找到,应该是不在。
2)算法数据库涉及到ST的一款软件产品,在官网上的状态为可申请下载,你们可以试下。
3)对传感器数据的处理和使用,肯定是你们项目的一部分。C语言实现的卡尔曼滤波函数网上是找得到的。
至于后面的问题:
首先,你所说是ODR(output data rate)吧,跟采样率应该是2种不同概念。按照emotion_REL_2.3例程,sensor与ARM使用I2C通信。关于速率和数据读取,你看一下tenAxismodule20.C相关的代码,读取A,G,M,P时候的速率虽然不同,但引入变量fastest = GetFastest(actualSpeed, SENSORS_NUMBER),再由*zoff,*start 和*debug的函数定义,不同传感器的读取不是同时的,是由If语句判断。所以应该不存在丢弃的问题。
但是按串口的波特率115200,算下来也就14400字节/M秒,在*start函数中,输出一组buffer[0]~buffer[34] × 8bit, 大概四百多组。正如你所说,这样的速度受串口波特率限制。
输出数据更新模式由CTRL_REG4(LSM303)、CTRL_REG4(l3gd20)、CTRL_REG1(LPS331) 控制,即BDU控制字, Block data update. Default value: 0 (0: continuos update; 1: output registers not updated until MSb and LSb reading)。 |