1. programming analysis 2. source code examination 3. software inspection

文章介绍了LLC控制器中的LLC_runFsiTxISR2函数,处理FSITX中断事件,以及LLC_initController函数,根据LLC_ACTIVE_COMP值初始化控制器类型和采样频率的控制参数。
摘要由CSDN通过智能技术生成
static inline void LLC_runFsiTxISR2(void)
{
    LLC_fsiTxInt2Received = 1U;

    LLC_txEventSts = FSI_getTxEventStatus(FSITXA_BASE);

    //
    // Clear the interrupt flag and issue ACK
    //
    FSI_clearTxEvents(FSITXA_BASE, FSI_TX_EVTMASK);

    //
    // INT2 line is set to fire for error events, stop immediately. Actual Error
    // is captured in txEventSts for debug
    //
    ESTOP0;
}

这段代码是一个静态内联函数,其功能是处理FSI传输的TX中断事件。该函数具有以下功能:

1. 将LLC_fsiTxInt2Received变量设置为1,表示FSI的TX2中断事件已被接收。
2. 读取FSITXA_BASE的TX事件状态,并将其存储在LLC_txEventSts变量中。
3. 清除FSITXA_BASE的TX事件标志,并发出ACK以确认接收到TX中断事件。
4. 如果INT2线设置为发生错误事件,则立即停止传输。实际的错误事件将在txEventSts变量中进行调试捕获。

最后,ESTOP0用于停止程序,以处理可能的FSI错误事件。

void LLC_initController(void)   //该函数用于初始化LLC控制器,根据LLC_ACTIVE_COMP的不同值来选择不同的控制器(PID或DF22)
                                //和不同的采样频率(50 kHz或100 kHz)。
{
#if(LLC_ACTIVE_COMP == 1)   // Factory programmed for 50 kHz ISR, PI comp.
    LLC_ctrl_PID.Kp = LLC_PID_KP_1;
    LLC_ctrl_PID.Ki = LLC_PID_KI_1;
    LLC_ctrl_PID.Kd = LLC_PID_KD_1;
    LLC_ctrl_DF22.a1 = LLC_DF22_A1_1;
    LLC_ctrl_DF22.a2 = LLC_DF22_A2_1;
    LLC_ctrl_DF22.b0 = LLC_DF22_B0_1;
    LLC_ctrl_DF22.b1 = LLC_DF22_B1_1;
    LLC_ctrl_DF22.b2 = LLC_DF22_B2_1;
#elif(LLC_ACTIVE_COMP == 2) // Factory programmed for 100 kHz ISR, PI comp.
    LLC_ctrl_PID.Kp = LLC_PID_KP_2;
    LLC_ctrl_PID.Ki = LLC_PID_KI_2;
    LLC_ctrl_PID.Kd = LLC_PID_KD_2;
    LLC_ctrl_DF22.a1 = LLC_DF22_A1_2;
    LLC_ctrl_DF22.a2 = LLC_DF22_A2_2;
    LLC_ctrl_DF22.b0 = LLC_DF22_B0_2;
    LLC_ctrl_DF22.b1 = LLC_DF22_B1_2;
    LLC_ctrl_DF22.b2 = LLC_DF22_B2_2;
#elif(LLC_ACTIVE_COMP == 3) // Factory programmed for 50 kHz ISR, DF22 comp.
    LLC_ctrl_PID.Kp = LLC_PID_KP_3;
    LLC_ctrl_PID.Ki = LLC_PID_KI_3;
    LLC_ctrl_PID.Kd = LLC_PID_KD_3;
    LLC_ctrl_DF22.a1 = LLC_DF22_A1_3;
    LLC_ctrl_DF22.a2 = LLC_DF22_A2_3;
    LLC_ctrl_DF22.b0 = LLC_DF22_B0_3;
    LLC_ctrl_DF22.b1 = LLC_DF22_B1_3;
    LLC_ctrl_DF22.b2 = LLC_DF22_B2_3;
#elif(LLC_ACTIVE_COMP == 4) // Factory programmed for 100 kHz ISR, DF22 comp.
    LLC_ctrl_PID.Kp = LLC_PID_KP_4;
    LLC_ctrl_PID.Ki = LLC_PID_KI_4;
    LLC_ctrl_PID.Kd = LLC_PID_KD_4;
    LLC_ctrl_DF22.a1 = LLC_DF22_A1_4;
    LLC_ctrl_DF22.a2 = LLC_DF22_A2_4;
    LLC_ctrl_DF22.b0 = LLC_DF22_B0_4;
    LLC_ctrl_DF22.b1 = LLC_DF22_B1_4;
    LLC_ctrl_DF22.b2 = LLC_DF22_B2_4;
#endif
}

该函数用于初始化LLC控制器,其根据宏定义LLC_ACTIVE_COMP的不同值选择不同的控制器和采样频率。如果LLC_ACTIVE_COMP的值为1或2,则选择PID控制器,并根据采样频率使用不同的控制参数(KP、KI、KD)。如果LLC_ACTIVE_COMP的值为3或4,则选择DF22控制器,并根据采样频率使用不同的控制参数(a1、a2、b0、b1、b2)。

在函数中,使用#if-#elif-#endif条件预处理指令根据LLC_ACTIVE_COMP的值选择正确的控制参数。最后,控制参数被存储在LLC_ctrl_PID和LLC_ctrl_DF22结构体中,以便被后续的控制器使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值