|
|
|
@ -59,7 +59,21 @@ static void MX_I2C1_Init(void); |
|
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/ |
|
|
|
/* USER CODE BEGIN 0 */ |
|
|
|
HAL_StatusTypeDef i2c_write(uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) { |
|
|
|
//printf("I2C WRITE | address=0x%04x | size=0x%04x\n", DevAddress, Size);
|
|
|
|
return HAL_I2C_Master_Transmit(&hi2c1, DevAddress, pData, Size, Timeout); |
|
|
|
} |
|
|
|
|
|
|
|
HAL_StatusTypeDef i2c_read(uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) { |
|
|
|
//printf("I2C READ | address=0x%04x | size=0x%04x\n", DevAddress, Size);
|
|
|
|
return HAL_I2C_Master_Receive(&hi2c1, DevAddress, pData, Size, Timeout); |
|
|
|
} |
|
|
|
|
|
|
|
float getTemp(uint8_t * buf) { |
|
|
|
int32_t ret = ((uint32_t)buf[0] << 24) | ((uint32_t)buf[1] << 16) | |
|
|
|
((uint32_t)buf[2] << 8) | (uint32_t)buf[3]; |
|
|
|
return (1.0 / (1UL << 16)) * ret; |
|
|
|
} |
|
|
|
/* USER CODE END 0 */ |
|
|
|
|
|
|
|
/**
|
|
|
|
@ -105,10 +119,43 @@ int main(void) |
|
|
|
/* Infinite loop */ |
|
|
|
/* USER CODE BEGIN WHILE */ |
|
|
|
int index = 0; |
|
|
|
HAL_StatusTypeDef i2c_status; |
|
|
|
int ADAFRUIT_ADDR = 0x36 << 1; |
|
|
|
const int BUF_LEN = 4; |
|
|
|
uint8_t buf[BUF_LEN]; |
|
|
|
uint8_t prefix[2]; |
|
|
|
prefix[0] = 0x0; |
|
|
|
prefix[1] = 0x4; |
|
|
|
|
|
|
|
while (1) |
|
|
|
{ |
|
|
|
printf("test %d\n\r", index++); |
|
|
|
//printf("test %d\n\r", index++);
|
|
|
|
//HAL_Delay(100);
|
|
|
|
|
|
|
|
HAL_Delay(10); |
|
|
|
|
|
|
|
i2c_status = i2c_write(ADAFRUIT_ADDR, prefix, 2, 1000); |
|
|
|
if (i2c_status != HAL_OK) { |
|
|
|
printf("ERROR: %d\n", (int)i2c_status); |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
|
|
|
|
HAL_Delay(100); |
|
|
|
|
|
|
|
i2c_status = i2c_read(ADAFRUIT_ADDR, buf, BUF_LEN, 1000); |
|
|
|
if (i2c_status != HAL_OK) { |
|
|
|
printf("ERROR: %d\n", (int)i2c_status); |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
|
|
|
|
//printf("Buffer: ");
|
|
|
|
for (int i = 0; i < BUF_LEN; i++) { |
|
|
|
//printf("%d ", buf[i]);
|
|
|
|
} |
|
|
|
//printf("\n");
|
|
|
|
|
|
|
|
printf("Temperature: %2.2f degree celsius\n", getTemp(buf)); |
|
|
|
|
|
|
|
/* USER CODE END WHILE */ |
|
|
|
|
|
|
|
/* USER CODE BEGIN 3 */ |
|
|
|
|