嗨,
我使用I2C接地压力传感器MS5607-02BA03。根据数据表,我能够读取来自传感器的校准系数(通过发出命令0xA0 - 0xAE)。但在发出ADC转换命令之后,我插入了20ms的延迟,之后读取转换的压力值。我面临的问题是,数据读取的数据是0.正在使用以下代码片段:
I2C_ERROR_CODE CODE1,CODE2,CODE3,CODE4,CODE5,CODE6,CODE7,CODE8,CODE9,CODE10,CODE11,CODE12;
// uint16_t data1,data2,data3,data4;
UINT8_T DATA1 [2],DATA2 [2],DATA3 [2],DATA4 [2],DATA5 [2],DATA6 [2],DATA7 [2],DATA8 [2];
UINT8_T DATA9 [3],DATA10 [3];
UINT32_T BYTES_READ1,BYTES_READ2,BYTES_READ3,BYTES_READ4,BYTES_READ5,BYTES_READ6,BYTES_READ7,BYTES_READ8,BYTES_READ9;
空隙测试(空白){
i2c_eeprom_init(0x77,i2c_speed_mode,i2c_address_mode,i2c_address_size);//从地址= 0x77
i2c错误代码code4 = i2c_eeprom_write_byte(0x77,0x1e);// rest命令1e发布
//阅读校准系数
code1 = i2c_eeprom_read_data(data1,0xa0,2,&bytes_read1);
code2 = i2c_eeprom_read_data(data2,0xa2,2,&bytes_read2);
code3 = i2c_eeprom_read_data(data3,0xa4,2,&bytes_read3);
code4 = i2c_eeprom_read_data(data4,0xa6,2,&bytes_read4);
code5 = i2c_eeprom_read_data(data5,0xa8,2,&bytes_read5);
code6 = i2c_eeprom_read_data(data6,0xaa,2,&bytes_read6);
code7 = i2c_eeprom_read_data(data7,0xac,2,&bytes_read7);
code8 = i2c_eeprom_read_data(data8,0xae,2,&bytes_read8);
//通过4096的采样率发出温度covions命令
code9 = i2c_eeprom_write_byte(0x77,0x48);
systick_wait(20000);//延迟20ms引入,以便为ADC转换提供时间
code11 = i2c_eeprom_read_data(data9,0x00,1,&bytes_read9);//命令0x00发出读取压力数据
}
由于ADC转换,传感器必须返回24位输出。但是我面临的问题是错误代码输出是0x00(i2c_no_error),但Data9数组中的内容是{0x00,0x00,0x00}。请建议其原因。
谢谢
Wisilica.
嗨Wisilica,
我想你遇到的是传感器以及传感器如何响应而且没有585,也许传感器遵循特定协议以响应,我无法判断为什么传感器在发送时报告0x00特定命令以来,您提供的信息似乎似乎该问题涉及传感器而不是585.您还使用与内存接口的函数,并且它涉及检查内存大小,但如果这是任何情况传感器响应的是在0x00之后应该有一个ACK,你在585上获得我建议使用逻辑分析仪才能仔细看,验证您是否正在发送传感器期望的数据。
谢谢mt_dialog.