본문 바로가기

개발환경

(17)
ADC 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. ADC 설정 개념 1. Mode ADC 하나에는 여러 채널이 있다. 위 그림을 보면 9개의 채널과 내부적으로 연결된 2개의 채널이 있는 것을 확인할 수 있다. EXTI Conversion Trigger는 ADC의 값이 변환되면 Trigger를 발생시키겠다는 것이다. 2. Configuration - Parameter Settings ① ADCs_Common_Settings Mode: Independent Mode ADC1, ADC2가 독립적으로 작동할 경우 사용되는 모드 ② ADC_Settings ⓐ Clock Prescaler 사용하려는 ADC peripheral의 최대속도(fADC)와 어느 clock 도메인(APB1..
ADC 설정 - NUC029SGE MCU는 NUC029SGE를 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 코드 분석 1) CLK_EnableModuleClock(ADC_MODULE); ADC_MODULE 모듈의 Clock을 활성화시키겠다. 2) CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADCSEL_HIRC, CLK_CLKDIV0_ADC(7)); CLK_SetModuleClock(Module index, Clock source, Divider); ADC 모듈을 HIRC Clock source로 설정하고, clock divider는 7로 설정하겠다. 즉, 22.1184/7 MHz로 설정하겠다. 3) GPIO_DISABLE_DIGITAL_PATH(PB, (uint32_t)(BIT11)); 지정된 GP..
UART(RS-485) 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 1. 모드 선택 여기서는 Asynchronous(비동기 방식)을 선택했다. https://powerdeng.tistory.com/204 동기(Synchronous)와 비동기(Asynchronous) 방식 비동기(Asynchronous) 방식 송신 측과 수신 측의 clock에 상관없이 시간을 쪼개서 서로 송수신 속도를 Baud rate을 정해서 맞춘다. 이때 한 번에 한 문자씩 송수신하며 아래 그림1과 같이 데이터 길이, 시 powerdeng.tistory.com 2. Parameters 설정 1) Baud Rate 초당 전송하는 심볼(의미있는 데이터 묶음)의 수 https://powerdeng.tistory.com/20..
UART 설정 - NUC029SGE MCU는 NUC029SGE를 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 코드 분석 SYS_ResetModule(UART0_RST); /* Enable UART module clock */ CLK_EnableModuleClock(UART0_MODULE); /* Select HXT as the clock source of UART0 */ CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_HIRC, CLK_CLKDIV0_UART(1)); /* Set multi-function pins for UART0 RXD and TXD */ SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD1MFP_Msk ); SYS->GPD_MFPL |= (SYS_GPD_M..
타이머 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. STM32CubeMX 설정 1) 타이머 선택 및 활성화 범용 타이머인 TIM14를 선택한 뒤 Activated를 체크한다. 2) Prescaler(PSC) 타이머에 공급하는 입력 클럭의 속도를 조절한다. 분주기라고도 하는데 분주기라는 말 자체가 의미하듯이 클럭을 쪼갠다는, 즉 속도를 느리게 한다는 의미이다. 위 그림1처럼 1000을 나누려고 한다면 -1을 해줘야 한다. 그 이유는 0부터 시작이기 때문이다(0~999). 그리고 이 말은 클럭을 1000번 보내면 카운터를 1개 올리겠다는 뜻이 된다. 3) Counter Mode 여기서는 카운터의 값이 증가하면서 카운팅을 하는 업 카운팅 모드를 선택했다. 범용 카운터의 모드 ..
타이머 설정 - NUC029SGE MCU는 NUC029SGE를 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 코드 분석 static void sSysTimer_Init(void) { /* Enable TIMER0 module clock */ CLK_EnableModuleClock(TMR0_MODULE); /* Select TIMER module clock source */ CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, MODULE_NoMsk); TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000); TIMER_EnableInt(TIMER0); /* Enable Timer0 NVIC */ NVIC_EnableIRQ(TMR0_IRQn); } 1) CLK..
Clock 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 1. 핀 설정 1) 회로도 확인 회로도에서 외부에 8MHz의 crystal oscillator가 있는 것을 확인한다. 그리고 PF0, PF1핀에 XIN, XOUT으로 연결되는 것을 확인한다. 2) 데이터 시트 확인 위 그림에서 표시된 clock source 중 빨간색으로 표시된 clock source를 사용한다. ※ 용어 정리 HSI RC(8 MHz): High Speed Internal RC oscillator HSE OSC(4~32 MHz): High Speed External OSCillator LSE OSC(32.168 kHz): Low Speed External OSCillator LSI RC(40 kHz): ..
Clock 설정 - NUC029SGE MCU는 NUC029SGE를 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 코드 분석 static void sSysClk_Init(void) { //Unlock protected registers SYS_UnlockReg(); /*Disable clock source*/ CLK_DisableXtalRC(CLK_PWRCTL_HXTEN_Msk); if(!(CLK->STATUS & CLK_STATUS_HXTSTB_Msk)) { SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF3MFP_Msk | SYS_GPF_MFPL_PF4MFP_Msk); SYS->GPF_MFPL |= (SYS_GPF_MFPL_PF3MFP_GPIO | SYS_GPF_MFPL_PF4MFP_GPIO); } /* Enable HIR..