【问题标题】:Register address not sent using I2C in TM4C123GH6PM board在 TM4C123GH6PM 板中未使用 I2C 发送寄存器地址
【发布时间】:2017-05-11 01:17:06
【问题描述】:

我一直在使用 ADXL345 加速度计进行测试,能够获取设备 ID 以检查它是否正确接线。现在我正在尝试获得不同轴的加速度,但由于某种我不知道的原因没有发送寄存器地址,所以我无法完成它。

根据加速度计的datasheet,为了写一个字节:

使用的代码:

    void initialize_accelerometer()
    {
        I2C0_MSA_R |=0x000000A6;    //Specify the slave address of the master and that the next operation is a Transmit or write
        I2C0_MDR_R=0x2D;    //Register address, this is the data not sent
        I2C0_MCS_R=0x00000003;  // (START, RUN);
        while(I2C0_MCS_R&I2C_MCS_BUSBSY){};
        if((I2C0_MCS_R&I2C_MCS_ERROR)==0)
        {
            I2C0_MDR_R=0x08;    //Data -> Set power control to measure
            I2C0_MCS_R=0x00000005;  // (RUN, STOP);
            if((I2C0_MCS_R&I2C_MCS_ERROR)==0)
            {
                set_data_format();
            }
        }

}

用逻辑分析仪测试,结果如下:

如您所见,除了注册地址外,所有内容都已发送。你能帮我找出错误吗?

谢谢, 哈维尔

【问题讨论】:

    标签: accelerometer i2c texas-instruments


    【解决方案1】:

    哦,再次阅读数据表,我发现我屏蔽了错误的位,因此将while(I2C0_MCS_R&I2C_MCS_BUSBSY){}; 更改为while(I2C0_MCS_R&I2C_MCS_BUSY){}; 解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 2018-10-22
      • 2010-11-18
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      相关资源
      最近更新 更多