stm32에 내장된 ADC 멀티 채널 기능 실습을 정리하고자 합니다.
사용 툴 : stm32cubeide
ADC1 컨트롤러 - 채널 IN0 , IN1, IN6, IN7 사용
ADC Parameter Settings
- 여러 채널을 샘플링 하는 경우 -> Scan Conversion Mode : Enable
- 계속 샘플링을 진행할 경우 -> Continuous Conversion Mode: Enable
- DMA 를 같이 사용하는 경우 -> DMA Continuous Requests : Enable
- EOC : Single Channel Conversion
- Number Of Conversion : 4
- Sampling Time : 28 Cycles(임의 값, Sampling Time 높을 수록 정교한 데이터 값을 얻을 수 있지만, 고성능이 필요)
ADC DMA Settings : Circular
int main(void)
{
/* USER CODE BEGIN 1 */
uint32_t VR[4] = {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_DMA_Init();
MX_USART2_UART_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
HAL_ADC_Start_DMA(&hadc1, VR, 4);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
printf("%d , %d\n", (uint16_t)VR[0], (uint16_t)VR[1]); //2바이트만 출력(형변환)
printf("%d , %d\n", (uint16_t)VR[2], (uint16_t)VR[3]); //2바이트만 출력(형변환)
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
'Stm32 > 실제 구동(stm32cubeide)' 카테고리의 다른 글
[HAL Driver] 내부 플래시 메모리 읽고 쓰기 (0) | 2024.12.18 |
---|---|
UART 실습[2] (0) | 2024.06.30 |
Timer Interrupt (0) | 2024.06.18 |
UART (Polling, Interrupt , DMA) [HAL-DRIVER 이용] (0) | 2024.05.08 |
[1]GPIO 입출력 레지스터 직접 제어 (0) | 2024.05.02 |