Research Institute
  • bxCAN 주요기능 소개 - Message storage
    2024년 10월 07일 13시 33분 37초에 업로드 된 글입니다.
    작성자: IIIIIIIIIIIIIIIIIIIIl

    CAN 메시지와 소프트웨어 간의 인터페이스는 mailbox라는 개념을 통해 구현됩니다. CAN mailbox는 메시지를 저장하고 관리하는 데이터 구조로 각 mailbox는 메시지와 관련된 모든 정보를 포함하며 identifier, data, control, status and time stamp information 등과 같은 정보들이 포함됩니다. 우리가 일반적으로 사용하는 Gmail과 같은 이메일과 비슷한 개념이라고 생각하면 이해하기 쉽습니다.

    Transmit mailbox

    소프트웨어는 전송할 메시지를 비어있는 transmit mailbox에 설정을 진행하는 데 이때 identifier, data, control, status and time stamp information 등과 같은  제어 정보가 포함됩니다. 어떤 mailbox를 먼저 사용할지는 Transmission Scheduler에 의해 결정됩니다.  그리고 전송이 시작되면 하드웨어는 CAN_TSR 레지스터를 통해 전송 상태를 확인합니다. 전송 요청은 제어 레지스터의 TXRQ bit를 설정하여 pending state로 들어가며 우선 순위 mailbox가 될 때까지 대기합니다. 그다음 mailbox 가 선택되면 송신을 위한 전 단계인 scheduled state 상태가 됩니다. 그리고 CAN bus가 IDLE가 되면 mailbox는 transmit state가 되고 실제 전송이 이루어집니다. mailbox 가 성공적으로 송신되면 다시 빈 상태로 돌아갑니다. 

    Transmit mailbox mapping

     

    Transmit mailbox states

    Receive mailbox

    메시지가 수신되면 소프트웨어는 FIFO output mailbox에서 해당 메시지를 읽을 수 있습니다. 소프트웨어가 메시지를 처리한 후(예: 읽기)에는 CAN_RFR 레지스터의 RFOM 비트를 사용하여 FIFO output mailbox를 해제해야 다음 수신 메시지를 수신할 수 있습니다. 

    Receive mailbox mapping

    참고자료

    STM32F105/107 - PDF Documentation

    댓글