inflearn logo
강의

講義

知識共有

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

73

2

준비물 도움 요청

0

166

2

uart1 인터럽트 관련

0

164

2

WinIDT 콘솔에 프린트 출력 안됨

0

156

2

RCC 설정 (Clock설정)

0

193

1

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

0

105

1

CAN transceiver

0

236

2

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

0

439

1

외부 ST LINK/V2 핀맵 질문

0

1761

1

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

0

376

1

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

0

294

1

설정문의

0

234

1

준비물에 대해

0

364

1

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

0

261

1

sw시작과정에 관한 문의

0

436

3

준비물

0

287

1

NUCLEO-H743vit6 관련 문의

0

353

1

준비중이신 강의 문의

0

372

1

F446RE 회로도 문의

0

399

2

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

0

438

2

CAN 통신 우선순위

0

671

1

UART Baud rate

0

611

1

강의 자료 프린트물

0

302

1

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

0

340

1