ST意法半导体
直播中

莫循虎

7年用户 916经验值
私信 关注
[问答]

lsm6dsox如何以轮询方式读取数据?

支持团队。

在我的项目中,我想尽快从 lsm6dsox 读取加速度和角速率。
在轮询模式示例中,lsm6dsox_xl_flag_data_ready_get 函数在 lsm6dsox_acceleration_raw_get 之前被调用。
为了加快该过程,我考虑跳过 lsm6dsox_xl_flag_data_ready_get 并仅通过 lsm6dsox_acceleration_raw_get 读取原始数据。

不检查读取状态就读取数据可以吗?

除了上述问题,还有一个问题。
我将加速度和角度的 ODR 设置为 1667Hz。
I2C 时钟为 400kHz。
在轮询模式下读取加速度和角速率而不检查就绪状态。
看起来新数据的读取速度比 1667Hz 快。
我不确定是否可以。
你对这种现象有什么想法吗?








回帖(1)

张文

2023-1-16 10:27:22
>> 不检查读取状态就读取数据可以吗?
相对于标称 ODR 1.667kHz,您读取数据的速度有多快?顺便说一下,如果您正在使用这个示例lsm6dsox_read_data_polling.c,跳过数据就绪检查应该是相当安全的,因为您已经启用了 BDU 并且数据被阻止,直到内部逻辑详细说明了一个新示例。因此,如果输出端的数据发生变化,则意味着内部逻辑已更新数据。
>> 你对这种现象有什么看法吗?
这可能与标称 ODR 为 1.667kHz 这一事实有关,但实际 ODR 可能与该值不同,在 ODR=1.667kHz 时通常为 +-4%,范围为 1.6kHz 至 1.73kHz。但是,要检查这一点,您可以在中断引脚上启用数据就绪 DRDY 中断,例如在 INT1 引脚上 ( lsm6dsox_read_data_int.c )
关于如何使采集速度更快,您可以在 FIFO 中运行更多:在填充 FIFO 的同时,您一起读取批次的样本。Github 上有一个示例,您可以从中获取灵感,lsm6dsox_fifo.c
举报

更多回帖

发帖
×
20
完善资料,
赚取积分