STM32 CAN Transceiver - MCP2515

DongHee Lim·2022년 4월 7일
0

STM32

목록 보기
6/11

서론


저번에는 STM32 에 있는 CAN 통신기능으로

CAN-RX 와 CAN-TX를 설정하여 CAN Trasceiver 로 CAN 통신을 하였다.

그 때 했던 것과 다르게

보드 - SPI - MCP2515 - CAN 통신

방식으로 하는 부품을 얻게 되었다.

그래서 테스트 해보려 한다.

이번에는 CubeIDE가 아닌 keil MDK-ARM v5.27을 사용했으며

printf() 를 제외하고는 거의 일치한다고 본다.


통신 방식


이것은 CAN 통신의 Data Frame 이다.

Purposebitexplain
Start1
Standard ID11
RTR1
IDE1
RB01
DLC4
Data8*8
CRC15
CRC DEL1
Ack slot bit1
ACK Del1
EOF7
IFS

SPI 를 통해 데이터를 전송

14 bytes 가 SRAM 에 저장된다.

1 byte - Control Register
5 bytes - Standard ID
8 bytes - Data

MCP2515 IC에 의해
SPI로 레지스터를 사용하여 설정하고, 송 수신할 수 있다.

레지스터를 데이터 시트에 따라 하나하나 읽어야하는데
첫번째 사진인 CAN CONTROLLER REGISTER MAP 에서

SIDH
SIDL
EID8
EID0

이 붙어 있는

Data, Filter, Mask 를 먼저 봐서 어떤 식으로 구성되어 있는지 파악하고

두번째 사진인 CONTROL REGISTER SUMMARY 에서
위에서 설정한 것들을 가지고 어떻게 송 수신을 할 수 있는지 알아내야한다.


레지스터 분석



프로젝트 설정


CubeMx를 실행

Terminal 확인용
-> USART3

SPI-CAN 통신용
->SPI3

SPI Chip Select
-> PD2 (GPIO_OUTPUT)

Button for EXTI
-> PD10 (GPIO_EXTI10)


profile
하고 싶은 것, 소유하고 싶은 것, 좋아하는 것

0개의 댓글