在TM4C123GH6PM板中未使用I2C发送寄存器地址

时间:2016-12-26 15:58:05

标签: accelerometer i2c texas-instruments

我一直在测试ADXL345加速度计,能够获取设备ID以检查它是否正确连接。现在我正试图在不同的轴上加速,我无法完成它,因为寄存器地址由于某些我不知道而未被发送。

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

enter image description here

使用的代码:

    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();
            }
        }

}

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

enter image description here

如您所见,所有内容都已发送,但寄存器地址。你能帮我找到错误吗?

谢谢, 哈维尔

1 个答案:

答案 0 :(得分:0)

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