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结构体中,以便被后续的控制器使用。