This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2433:LIS3DH 加速计 I2C 读取

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430FR2433, MSP-EXP430FR2433

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/795188/msp430fr2433-lis3dh-accelerometer-i2c-reads

器件型号:MSP430FR2433
主题中讨论的其他器件: MSP430WAREMSP-EXP430F5529MSP-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加速计显示的代码):

http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPEXP430F5529UE/latest/index_FDS.html [ software-dl.ti.com

 TI Resource Explorer 中还提供了此电路板的 I2C 示例代码:

http://dev.ti.com/tirex/explore/node?node=ADTYw270qSFytYyTslHVKw__IOGqZri__LATEST [ dev.ti.com

但老实说、我们认为最适用的是这个专门针对 MSP430讲解 I2C 的论坛帖子以及读取寄存器的示例代码:

https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/648418?MSP430F5529-How-to-read-from-a-register-address-on-I2c-[ e2e.ti.com

 

查看此代码段(使用 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、
是的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    MSP430Ware 具有大量 I2C 演示代码、您和客户 可以在此处找到:

    http://www.ti.com/tool/mspware?keyMatch=msp430ware&tisearch=Search-EN-Everything

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的、确实如此; 但是、客户正在寻找一个专门针对上述 I2C 从器件的示例或指南。

    此致、

    是的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Chris:

    正如您所说的、C:\ti\msp430ware_3_80_05_04\examples\boards\MSP-EXP430F5529\MSP-EXP430F5529_UE_Demo_Software\Firmware\Source\MSP-EXP430F5529_HAL 中的"HAL_LIS3DH.c"文件是客户的一个很好的示例。 与 C:\ti\msp430ware_3_80_05_04\examples\boards\MSP-EXP430FR2433\MSP-EXP430FR2433_Software_Examples\Firmware\Source\OutOfBox_MSP430FR2433\driverlib\MSP430FR4xx 中的"eusci_b_i2c.c"进行比较、可以轻松地将它们移植到 MSP430FR4xx 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、斯坦福、

    谢谢! 这很有帮助。 客户现在已经超出了起点、正在开发其应用和其他外设器件驱动程序的代码。 感谢您的意见。

    这种特定的加速计似乎在市场上很受欢迎、甚至我们自己的 TI LP 工具以及各种第三方生态系统板也证明了这一点。 此类论坛链接建议可帮助客户正确开展工作、这非常有用。

    再次感谢、
    Chris