如何从设备数据 sheet 格式化 I2C 数据?

How to format I2C data from device data sheet?

我最近用 Nordic NRF52832 DK 开始了一个项目。我在该板上连接了一个 DRV2605 线性谐振执行器驱动器。在我转向 Nordic 开发板之前,我正在使用为 DRV2605 提供的库在 Arduino 上制作原型,所以这非常简单。

现在,我正在尝试通过写入 device setup guide 中的指定寄存器来自行初始化和控制 DRV2605。

Section 1.6.2 是我一直在看的。假设我想写入 反馈控制寄存器 。我知道地址是 0x1A 并且我需要写入一个对应于列出的四个设置的值。我坚持的是如何实际创建我需要写入的数据。 table 有一列我假设是我将为每个设置修改的位范围?

从图表(使用默认设置)来看,我假设我需要写入的数据是 13331122。如果我将该值插入十进制到十六进制转换器,我会得到 CB6AB2。该值的 "B6" 部分与图表中的 "Value (Hex)" 列相关还是巧合?

这是我用来写入 FC reg 的代码:

#define DRV_ADDR 0x5A
uint8_t fc_reg[2] = {0x1A, 13331122};
nrf_drv_twi_tx(&m_twi, DRV_ADDR, fc_reg, sizeof(fc_reg), false);

通过一些 research 看来位掩码可能是我所缺少的?这仍然不能真正解释图表中的值不匹配。

如果我能在这方面得到任何帮助,我将不胜感激!

根据提供的屏幕截图,您可以看到反馈控制寄存器的地址为 0x1A,而且该寄存器包含 1 个字节的信息。它有效地充当位标志,其中每个位代表不同的东西。例如只有第 7 位代表 LRA。所以,如果你要将 0x80(DEC 128) 写入该寄存器,它会打开 LRA,如果你想 enable/configure 其他东西,它只是 0x80 的按位或。您对构建的框架有正确的想法,但是,对于 LRA,它应该看起来像这样。

uint8_t fc_reg[2] = {0x1A, 0x80};

显然,将 0x80 替换为您想要设置的任何标志。