[STM32] CAN2.0 통신 구현 시 주의사항
·
Embedded SW/STM32
해당 피드는 STM32 환경에서 CAN 통신을 구현하며 신경 썼던 부분들을 정리한 것이다.STM32F103RB 보드를 바탕으로 진행하였으며, reference manual의 bxCAN 내용을 바탕으로 작성하였다.- bxCAN은 CAN2.0 버전임CAN 통신은 GND 연결이 필요 없다.Tx는 Tx끼리, Rx는 Rx끼리 연결해야 한다. (UART의 Tx Rx 개념이랑 다르다)CAN Tx : CAN 송신 (MCU ↔ 트랜시버 간)CAN Rx : CAN 수신 (MCU ↔ 트랜시버 간)CAN_H : CAN 차동 신호 High (다른 장치 간)CAN_L : CAN 차동 신호 Low (다른 장치 간)양 끝 MCU의 CAN 통신에는 종단 저항을 무조건 달아주어야 한다.종단 저항 사이에 다른 CAN 기기들이 연결될 수 ..
[STM32] FW와 부트로더 분리하기
·
Embedded SW/STM32
STM32F103xx 시리즈에서는 BOOT 모드를 제공한다따라서, DFU 기능을 활용해 펌웨어와 부트로더를 분리할 것이다.FLASH 메모리로 128K를 사용할 수 있으니 펌웨어의 128K 중 20K를 부트로더 메모리로 사용할 것이다. 사전 준비1. 이전의 프로젝트를 복사한 뒤, 새로운 경로에 부트로더 이름으로 복사한다.2. 이전에 lib에 ioc 파일을 복사했었는데, 해당 폴더에 들어가보면 .mxproject 폴더가 있다. 여기를 확인해보면 이전에 fw_pjt에서 사용했던 헤더들이 복사되어 있는데, _boot 프로젝트에서 .mxproject를 삭제하지 않으면, fw_pjt에 영향을 주게 된다. 따라서, .mxproject를 삭제한다.펌웨어(fw_pjt) 측1. 인터럽트 벡터 주소와 링커 스크립트를 변경해..
[STM32] CubeMX를 이용해서 HAL 라이브러리 적용하기
·
Embedded SW/STM32
※ 생성되는 HAL 파일들은 이전에 생성된 lib 폴더 아래에 들어간다. CubeMX란 : 자동화된 코드를 생성해주는 툴 여기서 본인이 사용하는 패키지 버전을 다운로드 할 수 있다.프로젝트를 생성한 다음, 먼저 저장을 해 줄 건데 .. 이전에 생성했던 프로젝트의 lib 폴더 아래에 저장을 해주자ex) .\stm32f103xx_fw_pjt\src\lib/cube_f103xxProject Manager에서 IDE를 변경해준다. 우리는 STM32CubeIDE를 사용하기 때문이다.Code Generator에서 Generated files의 Generate peripheral 박스를 체크해주자. 이유는 페리페럴을 설정하는 모든 코드가 main에 들어가기 때문에 참조가 어렵다.이렇게 Generate를 완료한다면, ..
[STM32] 프로젝트 개발 환경 세팅하기
·
Embedded SW/STM32
STM32 프로젝트 생성 방법에 대해서 알아보려고 한다. 필자는 STM32F103RB 보드를 사용했다.프로젝트 생성STM32CubeIDE를 사용하여 새로운 프로젝트를 생성해 볼 것이다.Project Explorer -> 마우스 우클릭 -> New -> STM32 Project 선택이후, 본인이 사용하는 보드를 검색하여 찾은 다음, 프로젝트를 생성한다.프로젝트 이름을 설정하고, 옵션을 세팅해주면 된다. Cube에서 제공해주는 타입을 사용할 것이라면 STM32Cube에 체크하자. (본인은 사용하지 않을 것이라 Empty 체크) 프로젝트 폴더 재구성초기에 프로젝트 생성하면 Inc, Src, StartUp, 링커 파일이 생성될텐데 폴더 구조를 바꿀 것이다.1. 모든 파일을 외부로 빼주고 폴더 삭제해준다.2. 폴..