inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

STM32 CAN 통신

SW 구현 - 26

수신 가능 메시지 할당 방법 문의

해결된 질문

365

dayday

작성한 질문수 17

0

 

[문의사항]

  1. Test Mode4 에서 비트 할당

    • "FilterIdHigh = (addr32<<3) >> 16" 등 실제로 어떻게 각 비트자리에 할당 되나요?

    • "수신 ID 값 = 0x1234567 ~ 0x1234567f" 어떻게 계산되는것인가요? 또한 0x1234567값은 0x12345670 을 말하는 것인가요??

CAN MCU

답변 1

1

alex

안녕하세요.

1) FilterIdHigh에는 EXID[28:13] 값이 저장되고, FilterIdLow에는 (EXID[12:0]<<3) | (IDE<<2) | (RTR<<1) | (TXRQ<<0) 값이 저장됩니다.

따라서 설정하고자 하는 EXID의 값(addr32) 0x12345678, IDE = 1, RTR= 0, TXRQ = 0 인 경우에는 아래와 같이 설정됩니다.
FilterIdHigh = (0x12345678<<3) >> 16 ; // 0x91A2
FilterIdLow = ((0x12345678<<3) & 0xffff) | 0x04; // 0xB3C4
0x12345678<<3 = 0x91A2_B3C0 입니다.

2) 수신 ID 값
mask32 값이 0x1fff_fff0 이기 때문에 bit[28:4]까지는 addr32값과 동일한 값 (0x1234567x)이고, bit[3:0]는 don't care 이기 때문에 0x0 ~ 0xF까지 수신가능합니다.
따라서 수신가능한 address는 0x12345670 ~ 0x1234567F 가 됩니다.

3) 수신 ID 값 = 0x1234567 ~ 0x1234567f 는 오타입니다. 정확한 표현은 수신 ID 값 = 0x12345670 ~ 0x1234567F 가 맞습니다.

감사합니다 ~!!

UART

0

72

2

준비물 도움 요청

0

163

2

uart1 인터럽트 관련

0

164

2

WinIDT 콘솔에 프린트 출력 안됨

0

156

2

RCC 설정 (Clock설정)

0

193

1

TIM1은 APB2에 연결되어 있지않나요?

0

105

1

CAN transceiver

0

234

2

__io_putchar를 추가한 이유를 알고싶습니다.

0

439

1

외부 ST LINK/V2 핀맵 질문

0

1757

1

전체 시스템 구성도의 종단 저항 위치 질문

0

376

1

WinIDT 프로그램 다운로드 경로 문의

0

293

1

설정문의

0

234

1

준비물에 대해

0

361

1

프로그래밍 에러 부분 질문이 있습니다.

0

260

1

sw시작과정에 관한 문의

0

435

3

준비물

0

286

1

NUCLEO-H743vit6 관련 문의

0

351

1

준비중이신 강의 문의

0

371

1

F446RE 회로도 문의

0

399

2

강의 교재 19p, 'Trace and Debug' 설정

0

438

2

CAN 통신 우선순위

0

668

1

UART Baud rate

0

609

1

강의 자료 프린트물

0

299

1

EV B'd RS232 CAN 트랜시버 연결 회로도...

0

337

1