본문 바로가기

목록

(199)
GPIO(LED) 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. GPIO output level - Low/High GPIO 내장 주변장치의 레지스터 설정의 초기화가 끝난 이후에 해당 GPIO 핀의 출력 상태를 지정할 수 있는 속성이다. 위의 회로는 GPIO 핀이 논리값 High 일 때 점등이 되고, 논리값 Low일 때 소등되는 구조로 동작한다. 만약 여기서 GPIO output level을 Low로 설정한다면, GPIO 내장 주변장치의 레지스터 설정의 초기화가 끝난 이후에 해당 GPIO 핀의 출력 상태가 Low가 되어 LED가 소등되어 있는 상태가 된다. 하지만 High로 설정한다면 해당 GPIO 핀의 출력 상태가 High이므로 LED가 점등되어 있는 상태가 된다. 정리하면, Lo..
Debug 설정 - STM32F030F4P6 MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다. 개념 - JTAG과 SWD JTAG(Joint Test Action Group)과 SWD(Serial Wire Debug)는 MCU에서 주로 활용되는 디버깅 통신 방식으로 디버깅과 플래시 프로그래밍을 가능하게 해주는 인터페이스이다. JTAG과 SWD는 서로 다른 프로토콜이며, JTAG은 여러 디바이스에 널리 사용된다는 장점이 있고 SWD는 비교적 간단한 구성을 가지고 있다는 장점이 있다. VCC와 GND 제외 필수 연결 핀은 다음과 같다. 설정 Pinout & Configuration 탭에서 SYS를 선택한다. 그리고 Mode에서 Debug Serial Wire를 체크한다. Debug Serial Wire를 체크하면 위..
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..
ADC 아날로그가 디지털로 변환되는 과정 1. 필터링 위 그림처럼 노이즈가 생겼을 때 이를 제거하는 과정이다. 2. 샘플링 X축을 의미하며 어느 정도의 시간 간격으로 아날로그를 디지털화할 건지 결정하는 과정이다. 샘플링 시간과 디지털화 할 아날로그 그래프의 교차점을 찍는다. 3. 양자화 Y축을 의미하며 값의 단위를 정하는 과정이다. 샘플링 시간과 양자화한 값의 단위의 교차점 중에서 디지털화 할 아날로그 그래프와 가장 근사한 값을 최종적으로 찍는다. 이것을 연결하면 아날로그가 디지털화 되는 것이다. 여기서 보기엔 뭔가 각지고 자연스럽지 않게 보이지만 X, Y축의 간격을 더 촘촘하게 하면 눈으로 보기에 아날로그와 비슷하게 보이게 된다. 4. 부호화 최종적으로 찍은 값은 (8, 9)와 같은 좌표이다. 하지만 이를 전..
RS-485 통신 RS-485 통신이란? RS-232는 전송 속도가 낮고 전송 거리가 짧으며 1대1 통신만 가능하다. 이를 보완하기 위해 개발된 RS-422는 한 개의 마스터 장치와 슬레이브 장치 간에 데이터를 주고 받는 방식으로 통신한다. 반면, RS-485는 모든 장치들이 같은 라인에서 데이터 전송 및 수신을 할 수 있다. 결선 방식 통상 2개의 선을 사용하여 반이중 통신 방식으로 사용하나 2개의 RS-485 통신망을 사용하면 전이중 통신도 가능하다. 참고로 그림1처럼 선이 2개라서 전이중 통신이 가능한 것 같지만, 2개의 선으로 한 신호를 만들어내는 차동신호 방식을 사용하므로 사실상 선이 1개라고 생각하면 된다. 전기적 특성: 차동신호 방식 RS-232 통신과 다르게 데이터가 한 선이 아니라 두 선이라서 차동으로 데..
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..