목차 STM32 개발 환경 정보 STM32F103VGT6 (LQFP100) 사용 STM32CubeMX Version 6.1.2 사용 STM32CubeIDE Version 1.10.0 사용 테스트 목적 회로카드에 Ethernet 케이블만을 을 사용하여 어플리케이션을 다운로드 하기위해 테스트 하였으며, W5500칩 라이브러리의 FTP Client를 수정하여 사용하였다. STM32F103VGT6 Flash 메모리 정보 아래 데이터시트 내용에 따르면 STM32F103xG 모델은 XL-density devices 1024 Kbytes 크기의 내장 Flash 메모리를 탑제하고 있음을 알 수 있다. PM0068 STM32F10xxx XL-density Flash programming (version 2.3) Flas..
사용 MCU: STM32F103 프로젝트명: WHITE BOX-스위치 박스 [상황] 메인보드에서 여섯개의 스위치 박스를 SPI 통신으로 컨트롤 하며 스위치 박스는 컨트롤에 따라 16x16 DOT-Matrix를 TLC5955 LED 드라이버를 이용해 출력한다. 스위치 박스 6개 동시에 전원을 넣었지만 DOT-Matrix 밝기가 각각 다르게 출력되었다. 밝기 오류가 나는 버전에서는 MCU 초기화 부분에 TLC5955_Init 함수를 사용하여 1회 초기화 하였다. 그러나 밝기가 일정치 않아 TLC5955_Refresh 함수(초기화 함수의 일부분)를 추가 하고, TLC5955에 컨트롤 데이터를 LATCH 시킬때마다 TLC5955_Refresh 함수를 호출하여 밝기 설정을 다시 하도록 하였다.
사용 MCU : STM32F103 프로젝트명 : WHITE BOX-스위치 박스 [상황] 메인 보드는 SPI-Master로 동작하고 스위치 박스는 SPI-Slave로 동작한다. 메인보드와 SPI 통신중에 통신에러가 빈번하게 발생하여 도트메트릭스가 번쩍되는 오류를 발생시켜 STM32 커뮤니티에서 구글링 결과 SPI BSY Flag 체크 하는 부분에 레지스트 오류가 있다는 글을 보게되었다. STM32 SPI HAL 라이브러리 에서 위와 같이 SPI_CheckFlag_BSY 함수의 내용을 주석처리 하였다. BSY Flag 감시를 하지 않지만 SPI 통신 동작에는 아무런 영향이 없었다. 에러가 사라지고 앞서 언급한 오류를 해결하였다.
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..
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..