Comunicação I2C com sensor IR MLX90614 .

Olá a todos,
Estou testando alguns sensores de temperatura IR, e já consegui comunicar com o TMP007 via I2C, mas o mesmo possui a taxa de amostragem muito lenta.
E agora estou tentando comunicar com o sensor MLX90614 que também é I2C, porem não estou conseguindo comunicar, pois o mesmo trava na função I2C1_Write.
Alguém tem alguma sugestão do que estaria errado?
O microcontrolador que estou utilizando é o STM32F030R8T6 com o compilador "Mikroc Pro for ARM".
Segue o código que fiz para testar a comunicação, a saída está sendo lida em hexa pela serial.
Estou testando alguns sensores de temperatura IR, e já consegui comunicar com o TMP007 via I2C, mas o mesmo possui a taxa de amostragem muito lenta.
E agora estou tentando comunicar com o sensor MLX90614 que também é I2C, porem não estou conseguindo comunicar, pois o mesmo trava na função I2C1_Write.
Alguém tem alguma sugestão do que estaria errado?
O microcontrolador que estou utilizando é o STM32F030R8T6 com o compilador "Mikroc Pro for ARM".
Segue o código que fiz para testar a comunicação, a saída está sendo lida em hexa pela serial.
- Código: Selecionar todos
/*******************************************************************************
Leitura de temperaruta IR do sensor MLX90614
*******************************************************************************/
#define MLX90614_I2C_ADDR 0x5A
// Endereços do sensor MLX90614
const IR_THERMO_ADDR = 0x5A;
const AMB_TEMP = 0x06;
const OBJ_TEMP = 0x07;
unsigned char tmp_data[2];
//******************************************************************************
// Main function
//******************************************************************************
void main() {
I2C1_Init_Advanced(100000, &_GPIO_MODULE_I2C1_PB67); // Inicialização I2C1
delay_ms(100);
UART1_Init(115200);
UART1_Write_Text("Start");
while(1){
tmp_data[0] = 0x07; // Endereço do registrador da temperatura do objeto
I2C1_Start(); // Inicializa o sinal da I2C
I2C1_Write(MLX90614_I2C_ADDR,tmp_data[0] ,1,END_MODE_RESTART); // Envia o endereço (tmp_data[0])
I2C1_Read(MLX90614_I2C_ADDR,tmp_data,2,END_MODE_STOP); // Lê buffer I2C e grava em tmp_data
UART1_Write(tmp_data[0]); // Imprime 1º Byte
UART1_Write(tmp_data[1]); // Imprime 2º Byte
UART1_Write(10);
UART1_Write(13);
delay_ms(10);
}
}