Research Institute
  • bxCAN 주요기능 소개 - Transmission handling, Time triggered communication mode, Reception handling
    2024년 10월 07일 13시 33분 21초에 업로드 된 글입니다.
    작성자: IIIIIIIIIIIIIIIIIIIIl

    Transmission handling

    CAN 메시지를 전송하려면 애플리케이션이 빈 전송 메일박스를 선택하고 식별자, 데이터 길이 코드(DLC), 데이터를 설정한 후 CAN_TIxR 레지스터의 TXRQ 비트를 설정해야 합니다. TXRQ 비트 설정 후 메일박스는 대기 상태로 들어가고 가장 높은 우선 순위를 갖게 되면 전송이 시작됩니다. 전송이 완료되면 메일박스는 다시 빈 상태가 되며 성공적인 전송은 CAN_TSR 레지스터의 RQCP 및 TXOK 비트로 표시됩니다. 전송 실패 시 원인은 ALST 비트(중재 손실) 또는 TERR 비트(전송 오류 감지)로 나타납니다.

     Transmit priority description
     By identifier 여러 개의 전송 메일박스가 대기 중일 때 전송 순서는 메일박스에 저장된 메시지의 식별자에 의해 결정됩니다. 식별자 값이 가장 낮은 메시지가 가장 높은 우선 순위를 가집니다. 식별자 값이 같으면 더 낮은 메일박스 번호가 먼저 예약됩니다.
     By transmit request order 전송 메일박스는 CAN_MCR 레지스터의 TXFP 비트를 설정하여 전송 FIFO로 구성할 수 있습니다. 이 모드에서는 전송 요청 순서에 의해 우선 순위가 결정됩니다. 이 모드는 분할 전송에 매우 유용합니다.
    • Abort : 전송 요청은 사용자가 CAN_TSR 레지스터의 ABRQ 비트를 설정하여 중단할 수 있습니다. 대기 또는 예약 상태일 때는 즉시 중단되며 전송 상태에서 중단 요청 시 두 가지 결과가 있습니다
      • 전송 성공 시, 메일박스는 TXOK 비트가 설정된 빈 상태가 됩니다.
      • 전송 실패 시, 메일박스는 예약 상태로 돌아가고 TXOK 비트가 지워진 빈 상태가 됩니다. 모든 경우에 메일박스는 현재 전송 종료 후 최소한 한 번 빈 상태가 됩니다.
    • Nonautomatic retransmission mode : 해당 모드는 CAN 표준의 Time Triggered Communication 옵션을 충족하기 위해 구현되었습니다. 구성하려면 CAN_MCR 레지스터의 NART 비트를 설정해야 합니다. 각 전송은 한 번만 시도되며 실패 시 자동으로 재시작되지 않습니다. 전송이 완료되면 RQCP 비트가 설정되고, 결과는 TXOK, ALST, TERR 비트로 표시됩니다.
    Transmit mailbox states
     
     

    Time triggered communication mode

    CAN 하드웨어의 내부 카운터가 활성화되어 Time Stamp 값을 생성하며 이는 수신 및 전송 메일박스의 CAN_RDTxR/CAN_TDTxR 레지스터에 저장됩니다. 내부 카운터는 각 CAN 비트 시간마다 증가하고 Start Of Frame 비트의 샘플링 지점에서 캡처됩니다.

    Reception handling

    CAN 메시지 수신을 위해 세 개의 메일박스가 FIFO로 구성되어 있습니다. CPU 부하를 줄이고 소프트웨어를 간소화하며 데이터 일관성을 보장하기 위해 FIFO는 하드웨어에 의해 관리됩니다. 애플리케이션은 FIFO 출력 메일박스를 통해 저장된 메시지에 접근합니다.
     
    항목 설명
    Valid message 유효한 메시지를 판단하는 근거는 수신된 메시지가 CAN 프로토콜에 따라 올바르게 수신되었고(EOF 필드의 마지막 비트 직전까지 오류 없음) 식별자 필터링을 성공적으로 통과했을 때 유효한 것으로 간주됩니다.
    FIFO management 비어있는 상태에서 첫 번째 유효한 메시지가 수신되면 FIFO에 저장되고 pending_1 상태가 됩니다. 하드웨어는 CAN_RFR 레지스터의 FMP[1:0] 비트를 01b로 설정합니다. 소프트웨어는 메일박스를 읽고 RFOM 비트를 설정하여 해제하면 FIFO는 비어있는 상태로 돌아갑니다. 만약 새로운 유효한 메시지가 수신되면 FIFO는 pending_1 상태를 유지합니다. 애플리케이션이 메일박스를 해제하지 않으면 다음 메시지가 pending_2 또는 pending_3 상태로 저장됩니다. 이때 소프트웨어가 메일박스를 해제하지 않으면 메시지가 손실될 수 있습니다.
    Overrun FIFO가 pending_3 상태에 도달하면 다음 유효한 메시지가 수신될 때 오버런이 발생하고 메시지가 손실됩니다. FIFO 구성에 따라 메시지 손실 방식이 달라집니다: 잠금 기능 비활성화 시 마지막 메시지가 덮어써지고, 활성화 시 가장 최근 메시지가 폐기되며 가장 오래된 메시지가 유지됩니다.
    Reception related interrupts 메시지가 FIFO에 저장되면 FMP[1:0] 비트가 업데이트되고 FMPIE 비트가 설정되어 있으면 인터럽트가 발생합니다. FIFO가 가득 차면 FULL 비트가 설정되고 FFIE 비트가 설정된 경우 인터럽트가 발생합니다. Overrun 상태에서는 FOVR 비트가 설정되고 FOVIE 비트가 설정된 경우 인터럽트가 발생합니다.
    Receive FIFO states

     

    참고자료

    STM32F105/107 - PDF Documentation

    댓글