STM32 ( 101 ) STM32L4R9 . MIPI DSI HOST . Display Serial Interface DSI HOST - STM32L4+ 시리즈 중 STM32L4R9 에서만 지원 STM32L4+ DSI 소개 문서 https://www.st.com/resource/en/product_training/STM32L4Plus_Peripheral_DSIHOST.pdf STM32L4+ DSI 소개 영상 DSI Application Notes https://www.st.com/resource/en/application_note/an4860-introduction-to-dsi-host-on-stm32-mcus-and-mpus-stmicroelectronics.pdf 연관 STM32L4R9 개발보드 소개영상 상위정리 STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리. STM32. nRF52.. 2023. 9. 22. STM32L4R7 / 9 . LCD TFT Controller (LTDC) LCD TFT Controller (LTDC) - STM32L4R7 , STM32L4R9 의 LTDC - 24bit parallel digital RGB • Two displays layers with dedicated FIFO (64 x 32-bit) • Color look-up table (CLUT) up to 256 colors (256 x 24-bit) per layer • Up to 8 input color formats selectable per layer • Flexible blending between two layers using alpha value (per pixel or constant) • Flexible programmable parameters for each layer • C.. 2023. 9. 19. STM32CubeIDE . 디버그 콘솔에 printf 출력 STM32CubeIDE 디버그 콘솔에 printf 출력 - 아래 화면처럼 코드상의 printf 출력이 SWV ITM Data Console 에 출력되게 하기. 코드에서 추가할 사항 프로젝트에 아래 코드 추가. ITM_SendChar 이 디버그 창에 표현되게 하는 핵심. #include "stm32l4xx_hal.h" // for ITM_SendChar int _write(int32_t file, uint8_t *ptr, int32_t len) { for(int32_t i = 0; i < len; ++i) { ITM_SendChar(*ptr++); } return len; } 이후 코드상에서 printf() 호출하면 상기 함수에 의하여 디버그 창으로 출력된다. 디버그 설정 Debug Configuratio.. 2023. 8. 16. STM32CubeIDE . FPU 설정부 STM32CubeIDE 에서 FPU 설정부 프로젝트 Properties 에서 아래 경로에 있는 Floating-point unit 에 FPv.. 선택하면 FPU 사용 활성화. None 선택하면 FPU 사용하지 않는것. 기본설정은 FPU 선택으로 되어있음. 연관 상위정리 1 STM32CubeIDE STM32CubeIDE. STM32CubeIDE - 이클립스기반 STM32 C/C++ 개발 플랫폼. STM32 칩 제조사가 직접 관리, 배포 주체. - 무료. features Integration of services from STM32CubeMX: STM32 microcontroller, microprocessor, development platform and example projec igotit.tistor.. 2023. 7. 29. STM32 . i2c DMA STM32CubeMX 에서 i2c DMA 설정. - 본 예는 I2C4 Master 로 사용하는 경우, - I2C Configuration 에서 DMA Setting 에서 I2C4_RX, I2C4_TX 추가 NVIC 설정에서 I2C event interrupt, I2C error Interrupt 필수 체크하여 활성화 . 활성화 하지 않으면, 코드에서 함수 HAL_I2C_Master_Transmit_DMA(,,,) 호출 반환값이 HAL_ERROR 반환되고 정상 데이터 송신 안됨. 코드 생성 main.c 의 MX_DMA_INIT() 함수를 보면 DMA1 Ch3 , 4 활성화 추가 된다. 사용자 코드 i2c 데이터 송신 , 수신용으로 함수 이름에 _DMA 부착된 함수 호출하면 된다. main.c 등에 송신 ,.. 2023. 7. 27. STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리. STM32. nRF52. ESP32. EFM8. EFM32. PSoC 총정리 제조사 칩 주요특징 실리콘랩 8bit MCU EFM8 시리즈 32bit EFM32 시리즈 EFM8 싸다. STM STM32 . 최고 항상 만족. Cypress pSoC pSoC6 은 기대해볼만. NORDIC nRF52 블투 무선솔루션. espressif ESP32 WiFi,BT,Dual CPU MCU 중요도 1순위 : STM32 2순위 : nRF52 실리콘 랩과 Cypress 것은 "개인"적으로는 별루 안중요한 곳에 사용되었음. 반면 STM32 는 고신뢰도 확고한 동작에서 만족감, 성취도 최대. nRF52 는 무선통신기능이 핵심임. STM사가 무선솔루션에서는 아직은 약함(개인적 주관적 평가). 노르딕사는 무선솔루션에 목숨건 업체.. 2023. 7. 22. STM32CubeIDE . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. 참고 : 본 포스팅의 다른 프로젝트 복사 하여 새 프로젝트 만드는 방법은 STM32CubeIDE 외에도 이클립스 기반한 다른 IDE (예 : Simplicity Studio ) 들에서도 동일하게 적용됨. STM32CubeIDE . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. 프로젝트 소스 폴더 위치에 따라 2가지 상황이 있다. 상황1. - 새로만들 프로젝트 소스 폴더 와 복사할 프로젝트 소스 폴더가 동일한 경우 STM32CubeIDE 에서 프로젝트 복사 붙여넣기 하면서 프로젝트 이름을 새로 지정해주고, STM32CubeMX 파일인 .ioc 파일명 수정하여 프로젝트명과 동일하게 수정한다. 복사할 프로젝트 마우스 우클릭하여 뜬 메뉴(아래 화면) 위 화면에서 Copy 하고 Pate 하면 아래처럼 프로젝트.. 2023. 7. 16. STM32 USB DFU . STM32CubeProgrammer 이용 가능 개요 STM32 펌웨어 업데이트 하는 수단 중의 하나인 USB DFU 위한 PC 측 소프트웨어 는 DfuSe 외에도 STM32CubeProgrammer 에서도 가능하다. STM32CubeProgrammer 에서 USB DFU 방법 사전준비 1. 칩에 기록할 펌웨어 파일 - 펌웨어 파일 확장자 : .hex, .elf 2. 타겟보드에서 STM32 를 DFU 모드로 부팅된 상태. - 핀 BOOT0 에 로직로우 인가한 상태에서 핀 리셋하면 USB DFU 모드로 부팅됨 ( 핀 BOOT0 에 로직 하이 인가한 상태에서 핀 리셋하면 노말 모드로 부팅됨 ) . STM32L4+ 계열의 부트로더 상세 STM32CubeProgrammer 에서 USB 선택 - 아래 화면에서 붉은 박스 부분을 USB 로 선택( 기본 ST-LI.. 2023. 7. 15. STM32CubeIDE . Debug . SWV 활성화 . 데이터 그래프로 보기 Serial Wire Viewer (SWV) 활성화 STM32CubeIDE 메뉴 : Run - Debug Configurations ... 클릭하여 뜬 아래 창에서, 탭 Debugger 의 Serial Wire Viewer 에 enable 체크하고 Core Clock 에는 프로젝트에서 설정한 HCLK 값을 MHz 단위로 기록한다. SWV 데이터 트레이스 타임라인 그래프 디버그 모드에서 메뉴 : Window - Show View - SWV - SWV 데이터 트레이스 타임라인 그래프 클릭하면 아래 화면 의 파란 박스 처럼 창이 추가된다. 이 창에는 코드내의 전역 변수의 값을 플로팅 해주기 때문에 매우 편리하게 코드 작동 상황을 확인할 수 있다. 플로팅할 전역변수를 설정하기 위해서는 아래 그림의 붉은 박스 클.. 2023. 7. 14. STM32CubeIDE . 오류 해결 . Debug . No source available for "main() at 0x8000262" 오류 증상 STM32CubeIDE 에서 프로젝트 메뉴 : Run - Debug 클릭하면 아래 화면 처럼 보이고 디버깅 불가 상태 해결책 메뉴 : Run - Debug Configurations... 클릭하여 뜬 창(아래 그림)에서 버튼 Searach Project... 클릭하여 경로 Debug/ 에 있는 것을 선택한다. 포럼 관련글. - 아래 답글 중에 프로젝트 옵티마제이션 설정으로 해결했다는 내용도 있는데, 옵티마이제이션 수정 할 필요없이 위의 설정만으로도 해결됨. Debug: "No source available for main()" I am trying to debug my code, but it just ain't working the way it's working in e.g. the STM32.. 2023. 7. 14. STM32CubeIDE . 프로젝트 생성 방법 STM32CubeIDE 에서 프로젝트 생성 방법 사전 준비 1. PC 에 STM32CubeIDE 설치된 상태 2. ST LINK V2 를 PC 에 연결하고 하기 타겟보드에 연결. 3. 타겟칩 . (본 예에서는 STM32L4R5VI 사용. 타켓칩 품번이 무엇이든 전체적인 방법론은 동일) 이 장착된 타겟 보드. - 본 예에서는 아래 사진의 보드 . 24MHz 외부 크리스탈 장착되어있고 32.768kHz 는 장착 가능한 패드는 마련되어있으나 부품 장착은 하지 않았음. 전원 공급은 마이크로 USB 커넥터로 이뤄지고 3.3 V 레귤레이터 출력 전압이 MCU 로 공급됨. * 기타 : 프로젝트에서 만든 펌웨어 칩에 기록하지 않고 프로젝트 생성만 하는 경우에는 타겟보드와 ST-LINK V2 는 없어도 됨. ST-LIN.. 2023. 7. 13. STM32 . USB 클럭 설정 외부크리스탈 혹은 내장 오실레이터 . Custom HID STM32 의 USB 활용시 클럭 설정 타겟칩 STM32L4R5 계열 (품번예 : STM32L4R5VI) 지원 페리페랄 중 USB 를 enable 하여 활용 하려는 경우 클럭 설정방식 2가지 (외부 크리스탈 혹은 내장 오실레이터) 가능하다. 통상 USB 사용하는 경우 정밀 외부 크리스탈 필수인 경우가 많은데, STM32L4R5 계열 칩은 외부 크리스탈 필수 요구되지는 않는다. 본 포스팅에서는 STM32CubeMX (STM32CubeIDE 내장된 것을 활용하는 예이나, 단독으로 STM32CubeMX 실행하여 설정하는 경우에도 동일함.) 에서 USB 클럭 설정하는 2가지 방식 모두 보인다. 1. 외부 크리스탈 활용하는 경우의 USB 클럭 설정. 24MHz 크리스탈 을 STM32 에 연결 한 경우의 설정. 아.. 2023. 7. 12. STM32CubeIDE . 임베디드 코드에서 C++ 클래스 활용 STM32 펌웨어 C++ 로 개발하기 STM32CubeIDE 에서 프로젝트에 적용할 컴파일러를 C 나 C++ 로 선택 가능하다. C++ 컴파일러로 선택하면 C++, C 컴파일도 같이 이뤄지는 것이고 C 컴파일러로 선택되어있다면 C++ class 는 인지 하지도 못하는 순수 C 언어 컴파일만 가능하다. STM32CubeIDE 의 프로젝트에 적용할 C/C++ 컴파일러 선택 방법 STM32CubeIDE 에서 생성되어있는 프로젝트 마우스 우 클릭 메뉴에서 Convert to C++ (아래 그림 붉은 라인) 이 보이면 현재 프로젝트 C 컴파일러가 선택되어있는 상태고, Convert to C++ 클릭하면 즉시 C++ 컴파일러가 적용된다. 반대로 현재 프로젝트의 컴파일러가 C++ 이 적용중이면 Convert to C.. 2023. 7. 6. STM32CubeIDE. STM32CubeIDE - 이클립스기반 STM32 C/C++ 개발 플랫폼. STM32 칩 제조사가 직접 관리, 배포 주체. - 무료. features Integration of services from STM32CubeMX: STM32 microcontroller, microprocessor, development platform and example project selection Pinout, clock, peripheral, and middleware configuration Project creation and generation of the initialization code Software and middleware completed with enhanced STM32Cube Expansion.. 2023. 7. 4. STM32CubeMX. SPI SPI 설정법. - STM32CubeMX 버전 5.0.1 SPI 기본설정방법. SPI DMA 설정방법. SPI Chip Select 핀 설정예. - 일반적인 GPIO Out 설정과 동일. 연관 SPI mode 4종. CPOL, CPHA SPI Mode 4종. SPI master 와 SPI Slave 의 모드가 동일해야 정상 SPI 통신 가능함. ( -동시에 SPI 클럭도 칩마다 최고 속도가 다르며 최고속도 이하에서만 정상통신 가능) SPI 통신 규격의 CPOL(0, 1) , CPHA(0,.. igotit.tistory.com STM32. SPI 읽기 쓰기. 동작특성. 개요. STM32 의 SPI 이용하여 Keil MDK-ARM 에서 읽기 쓰기 간단한 코드와 쓰기 , 읽기 동작 특성 스코프로 확인. SPI.. 2020. 1. 20. STM32. 힙 , 스택 사이즈 설정 . KEIL. SW4STM32. CubeMX 개요 STM32 에서 사용가능한 힙 과 스택 메모리 사이즈 설정하기. 사용하는 IDE 에 따라서 힙 , 스택 사이즈 설정되는 곳이 다르다. - KEIL MDK-ARM 에서는 파일 startup_stm32xxx.s 에서 힙과 스택 최대 사이즈 지정한다. - SW4STM32 에서는 파일 STM32xxx_FLASH.ld 에서 힙과 스택 최대 사이즈 지정한다. 설정된 최대 힙사이즈 이하에서만 메모리 동적할당 가능하다. 초과하는 경우 malloc 반환값이 null 로 메모리 할당 실패한다. 코드내에서의 스택 메모리 할당량이 지정된 스택사이즈 초과하는 경우에는 컴파일 단계에서 알 수 있기에 조치하기 편리하나, 코드내에서 동적 할당되는 경우에는 컴파일 단계에서 알 수 없기에 동적 할당 할때마다 malloc 함수의 반.. 2019. 12. 29. STM32. EXTI (Extented Interrupts and events controller) 본 글 설명의 STM32 칩시리즈 : STM32L4+ - 다른 시리즈의 STM32도 개념은 유사. EXTI - event/interrupt 가능 총수량 : 39 - - cinfigurable line 수 : 26 - - direct line 수 : 9 - 각 line 별로 개별적으로 mask 가능. - Configurable line - - 상승, 하강에지 설정가능. - GPIO 에 할당가능한 EXTI 라인 : 0~15 (총 16개) Interrupt 와 event - Interrupt : 코드상에서 인터럽트 핸들러 함수 실행되게 하는것. 즉 CPU 관여되는 처리. - event : 페리페랄 하드웨어상으로 직접 신호 전송되어 CPU 관여없이(즉, 핸들러 코드없이) 처리되게하는것. EXTI Block Di.. 2019. 12. 22. STM32. System tick timer 인터럽트 사용방법. 개요 STM32 코딩시 간단하게 일정 시간격으로 인터럽트 발생시키는 방법 전체 절차. 1. STM32CubeMX 에서 System tick timer 에서 IRQ Handler 코드 생성 하도록 선택. 2. IDE (SW4STM32 , KEIL MDK-ARM 등) 에서 IRQ Handler 함수 사용자 구현. 즉, 별도의 타이머 페리페랄 활성화 하지 않아도 간단하게 구현가능함. STM32CubeMX 에서 System tick timer 설정. 아래 동영상 처럼 STM32CubeMX 에서 NVIC 설정부에 있는 Time base : System tick timer 체크된 상태에서 코드 생성하면 자동으로 관련 코드 만들어져 있다. 인터럽트 핸들러 코드 구현 상기 STM32CubeMX 에서 설정한 후 코드 생.. 2019. 12. 15. 이전 1 2 3 4 ··· 6 다음