- [STM32]CAN의 Basic Parameters들의 설명 목차
CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure.CAN_ABOM = DISABLE;
CAN_InitStructure.CAN_AWUM = DISABLE;
CAN_InitStructure.CAN_NART = DISABLE;
CAN_InitStructure.CAN_RFLM = DISABLE;
CAN_InitStructure.CAN_TXFP = DISABLE;
TTCM(Time triggered communication mode)
이 비트는 CAN 표준의 확장인 TTCAN(Time Triggered Communication) 모드를 활성화합니다. 이 bit는 TTCAN의 일부 실시간 요구 사항을 충족시키기 위해 메시지에 시간 창(time window)을 할당합니다. 따라서 일반적으로 이 비트는 0으로 유지되어야 합니다.
ABOM(Automatic bus-off management)
TEC(전송 오류 카운터)가 255보다 커지면 CAN 하드웨어가 버스 오프 상태로 전환됩니다. 복구하려면 복구 시퀀스를 기다려야 합니다. 복구 시퀀스를 만족한 후에야 CAN 하드웨어가 정상 작동 상태로 돌아갈 수 있습니다. 이 비트는 어떻게 정상 모드로 돌아갈지에 대한 제어 합니다. 1이면 정상 상태로 자동 복귀합니다. 그렇지 않으면 복구 시퀀스가 관찰된 경우 소프트웨어에서 요청해야 합니다.
AWUM(Automatic wakeup mode)
CAN 모듈은 초기화 모드, 일반 모드 또는 절전(저전력) 모드의 3가지 모드 중 하나일 수 있습니다. 소프트웨어에서 절전 모드를 요청하면 절전모드에 들어갑니다. 그러나 절전 모드를 종료할 수 있는 두 가지 옵션이 있습니다. 이 비트가 0이면 수동으로 절전 모드를 종료해야 합니다. Can wakeup interrupt가 Bus의 동작에 대해 알려주면 ISR에서 절전 모드를 종료할 수 있습니다. 그러나 이 비트가 1이면 하드웨어는 버스 활동을 감지할 때 자동으로 일반 모드로 돌아갑니다.
NART(No automatic retransmission)
일반적으로 CAN 하드웨어는 이전 메시지 전송 시도가 실패한 경우 메시지 전송을 재시도합니다. 그러나 이 비트를 1로 설정하면 송신기는 재시도하지 않습니다. 이것은 TTCAN(Time Triggered Communication)을 사용할 때 필요합니다. 그렇지 않으면 이 비트를 0으로 유지해야 합니다.
RFLM(Receive FIFO locked Mode)
수신 Mailbox에는 최대 3개의 메시지를 저장할 수 있습니다. 이 비트는 메일박스 Overrun의 경우에 발생하는 이를 제어합니다. 기본 동작은 가장 오래된 2개의 메시지와 최신 메시지를 유지하는 것입니다. 예를 들어, 5개의 메시지를 받은 경우 버퍼는 메시지 1, 2 및 5를 유지합니다. 그러나 이 비트를 1로 설정하면 사서함은 메시지 1, 2 및 3을 유지하고 새로운 도착을 버립니다.
TXFP(Transmit FIFO priority)
3개의 transmit mailbox가 있습니다. 두 개 이상의 mailbox에 메시지가 있으면 하드웨어는 먼저 전송할 것을 결정해야 합니다. 일반적으로 ID 번호가 낮은 메시지가 더 중요하고 먼저 전송되어야 한다고 가정할 수 있습니다. 그러나 어떤 이유로 선착순 방식으로 전송하려면 이 비트를 1로 만들어야 합니다. 물론 이것은 로컬 우선순위일 뿐입니다. 물리적 버스에서는 ID가 낮은 메시지가 항상 우선순위를 갖습니다.
즐거운 시간되세요
참고) CAN 버스에서 속도 설정에 필요한 값을 구하는 사이트
http://www.bittiming.can-wiki.info/
CubeMX에 설정은
'STM32' 카테고리의 다른 글
[STM32F4]Serial Wire Viewer(SWV, ITM)를 사용하여 printf() 사용하기 (1) | 2023.12.18 |
---|---|
[stm32]기존 프로젝트의 CubeIDE 및 TouchGFX는 어떻게 실행을 해야하나 ? (0) | 2023.12.14 |
[STM32]usart(uart) 송신 수신 인터럽트 사용하기 (0) | 2023.12.14 |
#if #ifdef #ifndef #if defined #else #endif (0) | 2022.11.09 |
Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) (0) | 2022.08.25 |