工具/软件:Linux
这是我的应用程序中当前运行的代码段。
我们正在设计中使用 MRAA I2C 库。
(小部分
//打开 I2C 上下文
SensorI2cBus = mraa_i2c_init_raw (sensor_bus); //sensor_bus = 0
//配置 hdc1080器件
状态= mraa_i2c_address (SensorI2cBus、HDC1080_ADDR); //HDC1080_ADDR = 0x40
if (MRAA_SUCCESS!=状态)
{
//在总线上设置设备地址失败
返回 false;
}
状态= mraa_i2c_write_word_data (SensorI2cBus、default_CFG、CFG_REG); /default_CFG = 0x1000
if (MRAA_SUCCESS!=状态)
{
//写入配置数据失败
返回 false;
}
状态= mraa_i2c_address (SensorI2cBus、HDC1080/ADDR);
int nData = mraa_i2c_read_word_data (SensorI2cBus、0xFE);
nData = mraa_i2c_read_word_data (SensorI2cBus、DEV_ID_REG);
nData = mraa_i2c_read_word_data (SensorI2cBus、SN_REG_1);
nData = mraa_i2c_read_word_data (SensorI2cBus、SN_REG_2);
nData = mraa_i2c_read_word_data (SensorI2cBus、SN_REG_3);
//如果我调用此函数,则下一行返回状态变量中的错误。
状态= mraa_i2c_write_byte_data (SensorI2cBus、0x00、TEMP_REG);
/n 数据始终为-1 (无数据读取)
nData = mraa_i2c_read_word_data (SensorI2cBus、TEMP_REG);
(小部分
我可以毫无问题地读取 MFG_ID、DEV_ID 和 SN 寄存器。 但是、我始终会遇到尝试读取温度或湿度的错误。 在读取温度寄存器之前、我在使用和不使用写入函数的情况下都尝试了这种方法。 我已经在 GDB 中使用单步调试完成了这一操作、因此我确定在对 Temp Reg. 这里出了什么问题? 我在这里尝试了许多不同的东西,但没有取得任何进展。