LM75A CHIP은 내부적으로 Sigma-delta ADC와 I2C 인터페이스 내장, 9bit 온도 읽을 수 있다.
데이터 시트를 보면 핀 별 기능을 볼수 있다.
O.S : 과다한 온도상태에서 SHUT DOWN
A2, A1, A0 : I2C 장치 주소 하위 3bits 결정
CJMCU-75의 경우 A2,A1,A0이 그라운드 연결-> 0
장치 주소 : 0x1001000 << 1 -> 0x90
레지스터 주소 : 온도 레지스터 : 0x00 , 1 바이트
사용 툴 : STM32CUBEIDE
- I2C3 컨트롤러 사용
- STANDARD MODE
1초마다 LM75A CHIP으로부터 온도를 읽어 출력하는 코드입니다.
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t buffer[3] = {0, };
uint16_t temp = 0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C3_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_I2C_Mem_Read(&hi2c3, LM75_ADDRESS, 0x00, 1, buffer, 2, HAL_MAX_DELAY);
temp = (buffer[0] << 8);
temp |= buffer[1];
printf("%d\n", temp);
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}