Infineon iLLD 폴더 구조(예: CAN)

Infineon iLLD가 포함된 SW, HW 구조

Infineon은 MCU를 이용한 개발자들이 MCU를 편하게 제어하는 것을 도와주기 위해, iLLD를 제공하고 있다.

CAN을 예로 주요한 폴더 구조는 Pin Map, Std, Can과 같이 크게 3가지가 있다.

TC35A(TC357TA) CAN 모듈의 폴더 구조를 살펴보자.

Infineon iLLD 폴더 구조 – CAN 핀 맵

경로 :

  • iLLD\TC35A\Tricore\_PinMap\IfxCan_PinMap.c

설명 :

  • CAN 모듈을 위한 핀 맵 정의
IfxCan_Rxd_In IfxCan_RXD13A_P14_7_IN = {&MODULE_CAN1, IfxCan_NodeId_3, {&MODULE_P14, 7}, Ifx_RxSel_a};
IfxCan_Rxd_In IfxCan_RXD13B_P33_5_IN = {&MODULE_CAN1, IfxCan_NodeId_3, {&MODULE_P33, 5}, Ifx_RxSel_b};
IfxCan_Rxd_In IfxCan_RXD13C_P22_5_IN = {&MODULE_CAN1, IfxCan_NodeId_3, {&MODULE_P22, 5}, Ifx_RxSel_c};
IfxCan_Rxd_In IfxCan_RXD13D_P11_13_IN = {&MODULE_CAN1, IfxCan_NodeId_3, {&MODULE_P11,13}, Ifx_RxSel_d};
IfxCan_Txd_Out IfxCan_TXD00_P02_0_OUT = {&MODULE_CAN0, IfxCan_NodeId_0, {&MODULE_P02, 0}, IfxPort_OutputIdx_alt5};
IfxCan_Txd_Out IfxCan_TXD00_P12_1_OUT = {&MODULE_CAN0, IfxCan_NodeId_0, {&MODULE_P12, 1}, IfxPort_OutputIdx_alt5};
IfxCan_Txd_Out IfxCan_TXD00_P20_8_OUT = {&MODULE_CAN0, IfxCan_NodeId_0, {&MODULE_P20, 8}, IfxPort_OutputIdx_alt5};
IfxCan_Txd_Out IfxCan_TXD00_P33_13_OUT = {&MODULE_CAN0, IfxCan_NodeId_0, {&MODULE_P33,13}, IfxPort_OutputIdx_alt5};
IfxCan_Txd_Out IfxCan_TXD00_P33_8_OUT = {&MODULE_CAN0, IfxCan_NodeId_0, {&MODULE_P33, 8}, IfxPort_OutputIdx_alt5};

Infineon iLLD 폴더 구조 – Can Std 코드

경로 :

  • iLLD\TC35A\Tricore\Can\Std\IfxCan.c
  • iLLD\TC35A\Tricore\Can\Std\IfxCan.h

설명 :

  • MCU 내의 CAN 컨트롤러를 제어하는 코드들
  • Init 등
void IfxCan_enableModule(Ifx_CAN *can)
{
    uint16 passwd = IfxScuWdt_getCpuWatchdogPassword();
    IfxScuWdt_clearCpuEndinit(passwd);

    /*Enable module, disregard Sleep Mode request */
    can->CLC.B.DISR = 0U;

    /*Wait until module is enabled*/
    while (IfxCan_isModuleEnabled(can) == FALSE)
    {}

    IfxScuWdt_setCpuEndinit(passwd);
}

Infineon iLLD 폴더 구조 – Can Can 코드

경로 :

  • iLLD\TC35A\Tricore\Can\Can\IfxCan_Can.c
  • iLLD\TC35A\Tricore\Can\Can\IfxCan_Can.h

설명 :

  • CAN 모듈을 이용한 동작
  • 송신, 수신
  • Can Std에 포함된 코드보다 비교적 상위개념의 코드
  • Can Std 코드를 활용해서 MCU가 Can의 내부 동작을 원할하게 동작하도록 도와주는 코드
  • 또는 송수신 코드 등
void IfxCan_Can_initModule(IfxCan_Can *can, IfxCan_Can_Config *config)
{
    can->can = config->can;

    // if module is not enebled
    if (IfxCan_isModuleEnabled(can->can) != TRUE)
    {
        // Enable module, disregard Sleep Mode request
        IfxCan_enableModule(can->can);
    }
}

답글 남기기