我一直在测试ADXL345加速度计,能够获取设备ID以检查它是否正确连接。现在我正试图在不同的轴上加速,我无法完成它,因为寄存器地址由于某些我不知道而未被发送。
根据加速度计的数据表,为了写一个字节:
使用的代码:
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();
}
}
}
使用逻辑分析仪进行测试,结果如下:
如您所见,所有内容都已发送,但寄存器地址。你能帮我找到错误吗?
谢谢, 哈维尔
答案 0 :(得分:0)
哦,再次阅读数据表我发现我屏蔽了错误的位,因此更改while(I2C0_MCS_R&I2C_MCS_BUSY){};
{{1}}解决了问题。