跳转到主要内容

传感器MS5607-02BA03中i2c读取不工作

DA14585

3年前

传感器MS5607-02BA03中i2c读取不工作

发布的wisilica0点 1回复
0的问题

你好,

我用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], [2], data5 data6 [2], data7 [2], data8 [2];
data10 uint8_t data9 [3], [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);// slave address = 0x77
i2c错误码code4 = i2c_eeprom_write_byte(0x77,0x1E);//重置命令1E发出
//读数校准系数
code1 = i2c_eeprom_read_data (data1、0 xa0 &bytes_read1);
code2 = i2c_eeprom_read_data (data2 0 xa2 &bytes_read2);
code3 = i2c_eeprom_read_data (data3 0 xa4 2 &bytes_read3);
code4 = i2c_eeprom_read_data (data4 0 xa6 2 &bytes_read4);
code5 = i2c_eeprom_read_data (data5 0 xa8 2 &bytes_read5);
code6 = i2c_eeprom_read_data (data6 0 xaa 2 &bytes_read6);
code7 = i2c_eeprom_read_data (data7 0 xac 2 &bytes_read7);
code8 = i2c_eeprom_read_data (data8, 0机加区,2,&bytes_read8);

//发出温度转换命令,采样率为4096
Code9 = i2c_eeprom_write_byte(0x77,0x48);

systick_wait (20000);//延迟20ms,以便为adc转换提供时间
code11 = i2c_eeprom_read_data (data9 0 x00 1, &bytes_read9);//命令0x00发出读取压力数据

由于ADC转换,传感器必须返回24位输出。但我面临的问题是错误码输出是0x00(I2C_NO_ERROR),但data9数组中的内容是{0x00,0x00,0x00}。请说明原因。

谢谢
Wisilica

3年前

MT_dialog -30点

嗨wisilica,

我认为你所经历的与传感器和传感器如何做出反应有关而不是与585有关,也许传感器遵循特定的协议来做出反应,我不能告诉为什么传感器报告0x00时发送特定的命令,因为从您提供的信息看来,问题涉及传感器而不是585。你还在使用一个函数,它与内存接口,它涉及到内存大小的检查,但在任何情况下,如果这是传感器的响应应该是一个ACK 0 x00后得到的585我建议使用逻辑分析仪来一个近距离的观察,确认你发送的数据传感器预计。

由于MT_dialog