임베디드.일렉트로닉스/STM32 ( 131 ) 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. 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. 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. 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. STM32L4R/S. I2C STM32L4R/S. I2C - 총 4개의 I2C 지원 : I2C1, I2C2, I2C3, I2C4 4개의 I2C 특성차이. 아래표. 4개의 I2C 모두 동일한 특성이며, 유일하게 I2C3 만 Stop1 or Stop2 mode 에서 wakeup 가능. 나머지 3개는 Stop1 모드에서 wakeup 가능. I2C 기능블럭. from : RM0432. STM32L4Rxxx and STM32L4Sxxx 페이지 1647~ 연관 I2C Bus 기본개념. I2C 개요 I2C Bus 양방향 2선통신 규격. 2선의 구성 : SDA 데이터, SCL 클럭. 2선은 풀업저항으로 VDD에 연결되어야 한다. 데이터 전송은 bus 상태가 busy가 아닐때 시작가능하며, non busy 상태란 SCL, SDA 모.. igotit.. 2021. 3. 12. STM32WBx5. STM32 Wireless MCU . BLE5.2 STM32WBx5 레퍼런스 매뉴얼 : pdf 제조사 제품페이지 STM32WB Series - STMicroelectronics ST's STM32WB MCU series features microcontrollers supporting Bluetooth 5.2 and IEEE 802.15.4 wireless standards. Based on Arm Cortex-M4 and ARM Cortex-M0+ cores. www.st.com 연관 개발보드 : ST32WB55RG(뉴클레오 보드에 장착), STM32WB55CG(동글에 장착) P-NUCLEO-WB55. STM32WB55 기반 P-NUCLEO-WB55 The P-NUCLEO-WB55 pack is a multi-protocol wireless and u.. 2021. 3. 7. P-NUCLEO-WB55. STM32WB55 기반 P-NUCLEO-WB55 칩 STM32WB55 기반 개발보드. The P-NUCLEO-WB55 pack is a multi-protocol wireless and ultra-low-power device embedding a powerful and ultra-low-power radio compliant with the Bluetooth® Low Energy (BLE) SIG specification v5.0 and with IEEE 802.15.4-2011. features Nucleo68 STM32WB microcontroller ( STM32WB55RG ) in a VFQFPN68 package . 품번 : 2.4 GHz RF transceiver supporting Bluetooth® specif.. 2021. 3. 7. STLINK-V3MINI. STM32 디버거. 프로그래머. STLINK-V3MINI 사이즈 : 15x 30mm Stand-alone probe Approximately 15 x 30 mm high-density integration PCB Delivered with 1.27 mm pitch STDC14 debug connector and STDC14 to STDC14 flat cable Self-powered through a USB connector (Micro-B) USB 2.0 high-speed compatible interface Direct firmware update support (DFU) JTAG / serial wire debugging (SWD) specific features: 3 V to 3.6 V application voltage su.. 2021. 3. 7. STM32WB5MMG. BLE 5.2 포함 멀티프로토콜 무선통신 모듈. STM32WB5MMG size: 7.3 x 11 x 1.4 mm The STM32WB5MMG is an ultra-low-power and small form factor certified 2.4GHz wireless module. It supports Bluetooth® Low Energy 5.0, Zigbee® 3.0, OpenThread, dynamic and static concurrent modes, and 802.15.4 proprietary protocols. Based on STMicroelectronics STM32WB55VGY wireless microcontroller, the STM32WB5MMG provides best-in-class RF performance thanks to .. 2021. 3. 7. 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. GPIO IDR 레지스터 값 읽기 주의사항 핀설정 : Open drain, 내부풀업. 1. 코드에서 핀 출력 1 "직후" IDR(핀의 전압->슈미트트리거 출력 논리값 기록되는곳 ) 값을 읽은 경우 1 아닌 0 반환. - - 시간지연 1msec 이후 IDR값 읽어보면 정상. 2. 핀 출력 0 직후 IDR 읽는경우에는 정상적으로 0 반환. 핀 출력 응답빠름. 상기 1번은 버그는 아니며 , 핀 주변 회로상황 때문. 내부 풀업저항값이 40k옴 수준으로 높고 C에 의한 느린 응답 보임. 2020. 1. 19. STM32. 버그 해결. SPI 통신. 첫 SPI 송수신 데이터 비트 밀림 . 해결방법. 개요 버그 요점 : STM32 를 SPI Master 로 설정하여 SPI Slave 와 통신시 STM32 부팅후 첫 SPI 통신시 비트 밀림 오류 있음. 버그 상황 상세 환경. STM32 라이브러리 버전 : STM32Cube FW_L4 V1.14.0 (2020년 1월 18일 최신버전) STM32 칩 품번 : STM32L4R5VI STM32 측 SPI 설정 - SPI 1번. (SPI 1번만의 문제가 아니라 다른 SPI 들도 동일할 것임 ) - SPI Master full duplex. - SPI Clock : 15MHz / 7.5MHz / 이하 낮은 주파수 모두 동일 오류 발생하였음. STM32 와 통신하는 SPI Slave 측 : nRF52840 - nRF52840 의 SPI Slave 측의 오류 일 수.. 2020. 1. 19. GCC 컴파일러 optimization 위험성. 예 : SW4STM32 에서 optimization 에 따라 float 변수 바이트 단위 접근시. GCC 기반툴( SW4STM32 등) 에서 컴파일러 셋팅에 있는 Optimization 설정(아래그림)에 따라 프로그램 작동결과가 심각하게 다른 결과가 나오는 경우 있다. 특히 float 형 변수 사용하는 경우 옵션에 따라 황당한 결과를 주는 경우가 많음. 위 그림은 SW4STM32 화면에서 optimization 부분인데, 프로젝트 생성초기 기본 값은 -Og 가 선택된 상태이다. 옵션 -O1, -O3 -Og 상태로 "float 형변수의 메모리 1바이트 단위로 접근하는 처리" 실행시켜보면, 엉뚱한 결과를 준다. 오류없이 정상적으로 실행되는 옵션 : 상기 Optimization 옵션을 적용하지 않는 None, 혹은 -Os, -O1 을 선택하면 정상 작동한다. 컴파일 옵션에 따른 오류의 실예. 옵션 : No.. 2020. 1. 13. STM32. 힙 , 스택 사이즈 설정 . KEIL. SW4STM32. CubeMX 개요 STM32 에서 사용가능한 힙 과 스택 메모리 사이즈 설정하기. 사용하는 IDE 에 따라서 힙 , 스택 사이즈 설정되는 곳이 다르다. - KEIL MDK-ARM 에서는 파일 startup_stm32xxx.s 에서 힙과 스택 최대 사이즈 지정한다. - SW4STM32 에서는 파일 STM32xxx_FLASH.ld 에서 힙과 스택 최대 사이즈 지정한다. 설정된 최대 힙사이즈 이하에서만 메모리 동적할당 가능하다. 초과하는 경우 malloc 반환값이 null 로 메모리 할당 실패한다. 코드내에서의 스택 메모리 할당량이 지정된 스택사이즈 초과하는 경우에는 컴파일 단계에서 알 수 있기에 조치하기 편리하나, 코드내에서 동적 할당되는 경우에는 컴파일 단계에서 알 수 없기에 동적 할당 할때마다 malloc 함수의 반.. 2019. 12. 29. 이전 1 2 3 4 ··· 8 다음