STM32 PWM 모드 사용 (feat. open103V) PWM 이란 ? PWM(Pulse Width Modulation)이란, 펄스폭 변조로 만들어지는 신호로서, 한 주기동안 H와 L의 비율(Duty rate)을 변화시켜 변조하는 방식이다. PWM은 신호의 주기, 펄스 폭(Duty rate), 전압 레벨로 정의 할 수 있다. PWM 모드 PA0 핀에 1kHz 에 듀티비 50%의 PWM 파형을 생성한다. TIM2는 APB1 Clock에 따라서 72MHz를 Source로 입력받고 Counter Period 가 999이고 Prescaler가 71이기때문에 1kHz로 동작한다. Pulse 값을 500으로 설정하였기 때문에 Duty Ratio는 500/(999+1) = 50%가 된다. 주기설정 계산은 아래와 ..
STM32F103 Timer(Counter Mode) (feat. open103V) TIMER (TIM2) DataSheet 분석 STM32F103 칩 안에는 여러개의 타이머가 있다. 각 타이머는 아래 DataSheet의 내용과 같이 16bit로 동작한다. 타이머의 기능을 살펴보면 여러가지 모드가 있는데 가장 기본적인 Counter Mode(Upcounting & Downcounting)에 대하여 살펴본다. 1초 단위로 카운터를 세는 일부 코드는 아래와 같다. static void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim2.Insta..
Flash Loader Demonstrator 사용법 (feat. Open103V) 목차 Flash Loader Demonstrator 설치 FLASHER-STM32 - STMicroelectronics FLASHER-STM32 - STM32 Flash loader demonstrator (UM0462) (replaced by STM32CubeProgrammer), FLASHER-STM32, STMicroelectronics www.st.com 위의 링크에 접속한 뒤 아래의 그림과 같이 Download 를 클릭하여 최신버전의 Flash Loader Software를 받는다. 이러한 부트 프로그램이 필요한 이유는 JTAG 디버거는 고가이기도 하고 커넥터 핀 수를 많이 필요로 하기때문에 개발중에는 이와 같이..
TLC5947 Adafruit 24-Channel 12-bit PWM LED Driver (feat. Open103V) TLC5947 많은 수의 LED를 제어하기 위해서는 MCU의 GPIO포트가 많이 필요하다. GPIO포트 사용을 줄이기 위해 PWM을 확장할 수 있는 Driver칩이 TLC5947칩이다. Tip : TLC5947로 LED를 제어할 경우 Anode 타입의 LED를 제어할 수 있다. DataSheet : TLC5947과 MCU의 연결방법은 아래와 같다. DataSheet 1page. TLC5947은 SPI인터페이스를 지원하며, 아래와 같이 Controller에 연결하면 된다. Controller TLC5947 SPIx_MOSI SIN SPIx_SCK SCLKGPIOxXLAT GPIOx BLA..
애노드와 캐소드 차이점 Ancode & Cathod Anode : (+)극으로 전자를 방출하거나 산화(oxidation) 반응이 일어나는 전극 Cathod : (-)극으로 전자가 들어오가나 환원(reduction) 반응이 일어나는 전극 Anode : 양극이 모두 묶여 한꺼번에 전원을 주면 반대 방향의 캐소드에 MCU 포트가 물려 LOW 신호를 주면 동작하는 방식 Cathod : 음극이 모두 묶여 그라운드로 향하게 되는데 MCU에서 HIGH 신호를 주면 동작하는 방식 📌 LED를 여러개 사용할 경우 보통은 Anode방식을 사용하게 된다. 보통 MCU에서 +5V나 3.3V를 내보내게 되는데 LED의 수가 많아질수록 전류 소모량도 많아지고, 제한된 전류로 인해 LED밝기가 줄어들거나 때때로 LED가 동작하지 ..
비트맵 파일 포맷 개요 Open103V 패키지의 TFT(ILI9325) LCD에 비트맵 이미지를 출력하기 위해 16-bit Interface를 지원하는 TFT에 맞게 16비트 비트맵에 대하여 알아볼 필요가 있다. 비트맵 파일 포맷 비트맵 파일은 픽셀 하나를 몇 비트로 저장하느냐에 따라 구조가 달라진다. TFT에 출력을 위하여 16비트 비트맵을 사용하였다. 아래는 비트맵 파일의 구조이다. 비트맵 파일 헤더는 비트맵 파일 식별 정보, 파일 크기, 데이터 위치 등의 정보를 담고 있으며 DIB(Device Independent Bitmap) 헤더는 가로, 세로 크기, 해상도, 픽셀의 비트 수 등 그림의 자세한 정보를 담고 있다. 픽셀 데이터에는 그림 파일의 실제 색상 정보가 들어간다. 단, 픽셀당 색상 수가 1..
TCP/IP 소켓 옵션 feat. SO_REUSEADDR 이슈 📌 Server를 생성하고 Client 가 접속한 후 Client가 접속된 상태에서 Server를 종료시키고자 한다. Server socket과 accept로 생성된 socket을 close() 함수로 종료한 후 Task를 다시실행하였더니 bind error 가 발생하였다. 즉 Socket 이 제대로 닫히지 않은 것 이다. ✨ 4 wat handshake 🎯 4 way handshake 설명 최초에는 서로 통신 상태이기 때문에 양쪽이 ESTABLISHED 상태이다. 통신을 종료하고자 하는 Client가 서버에게 FIN 패킷을 보내고 자신은 FIN_WAIT_1 상태로 대기한다. FIN 패킷을 받은 서버는 해당 포트를 CLOSE_WAIT으로 바꾸..