STM32CubeIDE를 사용해 보자 How To STM32CubeIDE 일본어판 (8) I2C를 사용해 보자 1 I2C Scan편
4929 단어 STM32CubeIDESTM32I2Cnucleo
이번에는 I2C를 사용해 보겠습니다.
먼저 STM32Nucleo에 센서를 연결해 봅시다.
이번에는 Si7020을 사용했습니다.
먼저 Nucleo 보드에 점퍼 와이어로 센서를 연결합시다.
이때 배선을 잘못하면 타는 경우가 있으므로 요주의입니다.
SCL과 SDA, 3V 또는 5V와 GND를 연결한다.
절대로 GND와 3V/5V는 반대로 연결하지 마십시오.
연결 상태입니다.
다음으로, 무엇이 연결되어 있는지 확인하고 싶습니다. Github의 i2c_bus_scan 코드를 사용하여 프로그램을 만들어 보겠습니다.
htps : // 기주 b. 이 m/P로지ぇctsByJRP/stm32_는 l_이 2c_부 s_s칸
앞으로 여러분이 프로그램을 쓸 때도 먼저 기존 프로그램을 만져 움직여 봅시다.
(덧붙여 움직이지 않는 것도 많이 있으므로 요주의입니다)
우선 설정을 합시다.
새 프로젝트를 시작하여 I2C를 설정합니다.
I2C1을 I2C로 설정합니다.
PB8, PB9에는 I2C SCL과 SDA가 할당됩니다.
자, CodeGenerate하자.
그런 다음 main.c에 프로그램을 추가합니다.
이제 i2c_bus_scan에서 필요한 부분을 복사합니다.
htps : // 기주 b. 이 m/P로지ぇctsByJRP/stm32_는 l_이 2c_부 s_s칸
99행
char uart2Data[24] = "Connected to UART Two\r\n";
/*
* Output to uart2
* use screen or putty or whatever terminal software
* 8N1 115200
*/
HAL_UART_Transmit(&huart2, (uint8_t *)&uart2Data,sizeof(uart2Data), 0xFFFF);
printf("\r\n");
printf("Scanning I2C bus:\r\n");
HAL_StatusTypeDef result;
uint8_t i;
for (i=1; i<128; i++)
{
/*
* the HAL wants a left aligned i2c address
* &hi2c1 is the handle
* (uint16_t)(i<<1) is the i2c address left aligned
* retries 2
* timeout 2
*/
result = HAL_I2C_IsDeviceReady(&hi2c1, (uint16_t)(i<<1), 2, 2);
if (result != HAL_OK) // HAL_ERROR or HAL_BUSY or HAL_TIMEOUT
{
printf("."); // No ACK received at that address
}
if (result == HAL_OK)
{
printf("0x%X", i); // Received an ACK at that address
}
}
printf("\r\n");
60행
/* USER CODE BEGIN 0 */
/* Direct printf to output somewhere */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
#ifndef __UUID_H
#define __UUID_H
//#define STM32_UUID ((uint32_t *)0x1FF0F420)
#define STM32_UUID ((uint32_t *)UID_BASE)
#endif //__UUID_H
/* USER CODE END 0 */
302행
/* USER CODE BEGIN 4 */
/**
* @brief Retargets the C library printf function to the USART.
* @param None
* @retval None
*/
PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART2 and Loop until the end of transmission */
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 4 */
이것을 움직이면 teraTerm에서 이런 표시가 된다고 생각합니다.
0x40이라는 것이 Si7020 온습도 센서가 됩니다.
다음은 데이터시트입니다.
htps //w w. 시 bs. 코 m / 도쿠 멘 ts / 푸 b ぃ c / 다타 - 〇 ts / 7020- 20. pdf
이것을 읽으면 센서 데이터를 읽을 수 있지만 읽을 수 있습니까?
보통은 (라고 할까, 초보자는) 무리군요.
그렇다면 다음은 센서 데이터를 살펴 보겠습니다.
그럼 다음은 이것을 바탕으로 I2C 디바이스와 이야기를 해보겠습니다.
STM32CubeIDE를 사용해 보자 How To STM32CubeIDE 일본어판 (9) I2C를 사용해 보자 2 si7020편에 계속됩니다.
htps : // 코 m / 우사시로 / ms / f59b4b82d7d4086b8936
Reference
이 문제에 관하여(STM32CubeIDE를 사용해 보자 How To STM32CubeIDE 일본어판 (8) I2C를 사용해 보자 1 I2C Scan편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/usashirou/items/0a67b6cbb541cf1cbe4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)