主题中讨论的其他器件: MSP430WARE、 MSP-EXP430F5529、 MSP-EXP430FR2433
TI 朋友和家人、
我们有一位客户将 LIS3DH 加速计与 MSP430FR2433一起用作 I2C 主设备。 I2C 读取工作,因此可以读取“WHO _AM_I”寄存器。 问题在于从器件地址和正确设置 UCTR 位。 之前的 e2e 帖子提到了这一点、最后、答案是地址应为0x18、而不是0x30或0x31。 启用和禁用 UCTR 位会将 R/W 位自动添加到地址中。 MSP 要求用户仅设置前一个 e2e 帖子中提供的7位从器件地址。
现在、下一个问题似乎是了解如何实际读取寄存器、而不是在 Resource Explorer 上找到的示例代码。
我们发现 MSP-EXP430-5529评估板实际上会填充相同的板载 ST 加速计。 下面是用户指南,其中包含了实际上显示 LIS3DH 的原理图: http://www.ti.com/lit/ug/slau330b/slau330b.pdf [TI.com
此位置有 I2C 示例代码(用于基于第一代 PCB 板上使用的早期 CMA3000加速计显示的代码):
TI Resource Explorer 中还提供了此电路板的 I2C 示例代码:
http://dev.ti.com/tirex/explore/node?node=ADTYw270qSFytYyTslHVKw__IOGqZri__LATEST [ dev.ti.com
但老实说、我们认为最适用的是这个专门针对 MSP430讲解 I2C 的论坛帖子以及读取寄存器的示例代码:
查看此代码段(使用 MSP430 USCI B0):
|
void ReadFromI2CSlave (const uint8_t slave_address、const uint8_t register_address、const uint8_t size) { rxMasterSize =大小; rxMasterCount = rxMasterSize; pRxMasterData = rxMasterData; UCB0I2CSA = SLAVE_ADDRESS; //设置从器件地址 UCB0CTL1 |= UCTR + UCTXSTT; //进入写入模式并发送启动 UCB0TXBUF = REGISTER_ADDRESS; //发送寄存器地址 while (UCB0IFG & UCTXIFG); //等待 TX 缓冲区清空 UCB0IFG &=~UCTXIFG; while (UCB0CTL1 & UCTXSTT); UCB0CTL1 &=~UCTR; //进入读取模式 UCB0CTL1 |= UCTXSTT; // I2C 启动条件 } |
然而,我们希望也许已经这样做的人提供任何额外的评论或指导。 此加速计是论坛和 F5529 EVB 上常见的器件、因此可能有人认为这一切都正常工作、并可能提供意见。
提前感谢您的光临。
Ty、
是的