#include "IS31FL3236.h" //#include "IIC.h" #include "Simulated_IIC_2_Master.h" #include "GPIO.h" /*----------------------------------------------------*/ #define IS31_IIC_MODULE IIC_MODULE_2 /*----------------------------------------------*/ uint8_t LED_Read[72]; /*-----------------------------------------------------------*/ #define IS31_ERROR_MAX 30000U static uint32_t u32IS31ErrorCount = 0U; const uint8_t u8IS31ChipAddress [ IS31_CHIP_NUM ] = { #if (IS31_CHIP_NUM >= 1U) IS31_CHIP1_ADDRESS, #endif #if (IS31_CHIP_NUM >= 2U) IS31_CHIP2_ADDRESS, #endif #if (IS31_CHIP_NUM >= 3U) IS31_CHIP3_ADDRESS, #endif #if (IS31_CHIP_NUM >= 4U) IS31_CHIP4_ADDRESS, #endif }; void LED_OFF_Init(void) { IS31_CHIP0_CHANNEL01 = 0u; IS31_CHIP0_CHANNEL02 = 0u; IS31_CHIP0_CHANNEL03 = 0u; IS31_CHIP0_CHANNEL04 = 0u; IS31_CHIP0_CHANNEL05 = 0u; IS31_CHIP0_CHANNEL06 = 0u; IS31_CHIP0_CHANNEL07 = 0u; IS31_CHIP0_CHANNEL08 = 0u; IS31_CHIP0_CHANNEL09 = 0u; IS31_CHIP0_CHANNEL10 = 0u; IS31_CHIP0_CHANNEL11 = 0u; IS31_CHIP0_CHANNEL12 = 0u; IS31_CHIP0_CHANNEL13 = 0u; IS31_CHIP0_CHANNEL14 = 0u; IS31_CHIP0_CHANNEL15 = 0u; IS31_CHIP0_CHANNEL16 = 0u; IS31_CHIP0_CHANNEL17 = 0u; IS31_CHIP0_CHANNEL18 = 0u; IS31_CHIP0_CHANNEL19 = 0u; IS31_CHIP0_CHANNEL20 = 0u; IS31_CHIP0_CHANNEL21 = 0u; IS31_CHIP0_CHANNEL22 = 0u; IS31_CHIP0_CHANNEL23 = 0u; IS31_CHIP0_CHANNEL24 = 0u; IS31_CHIP0_CHANNEL25 = 0u; IS31_CHIP0_CHANNEL26 = 0u; IS31_CHIP0_CHANNEL27 = 0u; IS31_CHIP0_CHANNEL28 = 0u; IS31_CHIP0_CHANNEL29 = 0u; IS31_CHIP0_CHANNEL30 = 0u; IS31_CHIP0_CHANNEL31 = 0u; IS31_CHIP0_CHANNEL32 = 0u; IS31_CHIP0_CHANNEL33 = 0u; IS31_CHIP0_CHANNEL34 = 0u; IS31_CHIP0_CHANNEL35 = 0u; IS31_CHIP0_CHANNEL36 = 0u; #if (IS31_CHIP_NUM >= 2U) IS31_CHIP1_CHANNEL01 = 0u; IS31_CHIP1_CHANNEL02 = 0u; IS31_CHIP1_CHANNEL03 = 0u; IS31_CHIP1_CHANNEL04 = 0u; IS31_CHIP1_CHANNEL05 = 0u; IS31_CHIP1_CHANNEL06 = 0u; IS31_CHIP1_CHANNEL07 = 0u; IS31_CHIP1_CHANNEL08 = 0u; IS31_CHIP1_CHANNEL09 = 0u; IS31_CHIP1_CHANNEL10 = 0u; IS31_CHIP1_CHANNEL11 = 0u; IS31_CHIP1_CHANNEL12 = 0u; IS31_CHIP1_CHANNEL13 = 0u; IS31_CHIP1_CHANNEL14 = 0u; IS31_CHIP1_CHANNEL15 = 0u; IS31_CHIP1_CHANNEL16 = 0u; IS31_CHIP1_CHANNEL17 = 0u; IS31_CHIP1_CHANNEL18 = 0u; IS31_CHIP1_CHANNEL19 = 0u; IS31_CHIP1_CHANNEL20 = 0u; IS31_CHIP1_CHANNEL21 = 0u; IS31_CHIP1_CHANNEL22 = 0u; IS31_CHIP1_CHANNEL23 = 0u; IS31_CHIP1_CHANNEL24 = 0u; IS31_CHIP1_CHANNEL25 = 0u; IS31_CHIP1_CHANNEL26 = 0u; IS31_CHIP1_CHANNEL27 = 0u; IS31_CHIP1_CHANNEL28 = 0u; IS31_CHIP1_CHANNEL29 = 0u; IS31_CHIP1_CHANNEL30 = 0u; IS31_CHIP1_CHANNEL31 = 0u; IS31_CHIP1_CHANNEL32 = 0u; IS31_CHIP1_CHANNEL33 = 0u; IS31_CHIP1_CHANNEL34 = 0u; IS31_CHIP1_CHANNEL35 = 0u; IS31_CHIP1_CHANNEL36 = 0u; #endif } void LED_ON_Init(void) { IS31_CHIP0_CHANNEL01 = 255u; IS31_CHIP0_CHANNEL02 = 255u; IS31_CHIP0_CHANNEL03 = 255u; IS31_CHIP0_CHANNEL04 = 255u; IS31_CHIP0_CHANNEL05 = 255u; IS31_CHIP0_CHANNEL06 = 255u; IS31_CHIP0_CHANNEL07 = 255u; IS31_CHIP0_CHANNEL08 = 255u; IS31_CHIP0_CHANNEL09 = 255u; IS31_CHIP0_CHANNEL10 = 255u; IS31_CHIP0_CHANNEL11 = 255u; IS31_CHIP0_CHANNEL12 = 255u; IS31_CHIP0_CHANNEL13 = 255u; IS31_CHIP0_CHANNEL14 = 255u; IS31_CHIP0_CHANNEL15 = 255u; IS31_CHIP0_CHANNEL16 = 255u; IS31_CHIP0_CHANNEL17 = 255u; IS31_CHIP0_CHANNEL18 = 255u; IS31_CHIP0_CHANNEL19 = 255u; IS31_CHIP0_CHANNEL20 = 255u; IS31_CHIP0_CHANNEL21 = 255u; IS31_CHIP0_CHANNEL22 = 255u; IS31_CHIP0_CHANNEL23 = 255u; IS31_CHIP0_CHANNEL24 = 255u; IS31_CHIP0_CHANNEL25 = 255u; IS31_CHIP0_CHANNEL26 = 255u; IS31_CHIP0_CHANNEL27 = 255u; IS31_CHIP0_CHANNEL28 = 255u; IS31_CHIP0_CHANNEL29 = 255u; IS31_CHIP0_CHANNEL30 = 255u; IS31_CHIP0_CHANNEL31 = 255u; IS31_CHIP0_CHANNEL32 = 255u; IS31_CHIP0_CHANNEL33 = 255u; IS31_CHIP0_CHANNEL34 = 255u; IS31_CHIP0_CHANNEL35 = 255u; IS31_CHIP0_CHANNEL36 = 255u; #if (IS31_CHIP_NUM >= 2U) IS31_CHIP1_CHANNEL01 = 255u; IS31_CHIP1_CHANNEL02 = 255u; IS31_CHIP1_CHANNEL03 = 255u; IS31_CHIP1_CHANNEL04 = 255u; IS31_CHIP1_CHANNEL05 = 255u; IS31_CHIP1_CHANNEL06 = 255u; IS31_CHIP1_CHANNEL07 = 255u; IS31_CHIP1_CHANNEL08 = 255u; IS31_CHIP1_CHANNEL09 = 255u; IS31_CHIP1_CHANNEL10 = 255u; IS31_CHIP1_CHANNEL11 = 255u; IS31_CHIP1_CHANNEL12 = 255u; IS31_CHIP1_CHANNEL13 = 255u; IS31_CHIP1_CHANNEL14 = 255u; IS31_CHIP1_CHANNEL15 = 255u; IS31_CHIP1_CHANNEL16 = 255u; IS31_CHIP1_CHANNEL17 = 255u; IS31_CHIP1_CHANNEL18 = 255u; IS31_CHIP1_CHANNEL19 = 255u; IS31_CHIP1_CHANNEL20 = 255u; IS31_CHIP1_CHANNEL21 = 255u; IS31_CHIP1_CHANNEL22 = 255u; IS31_CHIP1_CHANNEL23 = 255u; IS31_CHIP1_CHANNEL24 = 255u; IS31_CHIP1_CHANNEL25 = 255u; IS31_CHIP1_CHANNEL26 = 255u; IS31_CHIP1_CHANNEL27 = 255u; IS31_CHIP1_CHANNEL28 = 255u; IS31_CHIP1_CHANNEL29 = 255u; IS31_CHIP1_CHANNEL30 = 255u; IS31_CHIP1_CHANNEL31 = 255u; IS31_CHIP1_CHANNEL32 = 255u; IS31_CHIP1_CHANNEL33 = 255u; IS31_CHIP1_CHANNEL34 = 255u; IS31_CHIP1_CHANNEL35 = 255u; IS31_CHIP1_CHANNEL36 = 255u; #endif } uint8_t u8IS31Data [ IS31_CHIP_NUM ][ IS31_CHANNEL_NUM ]; uint8_t u8IS31DataBackup [ IS31_CHIP_NUM ][ IS31_CHANNEL_NUM ]; IS31_Ctr_st_t stIS31Ctr; /*--------------------------------------------------*/ void IS31_Set_SDB_Pin(uint8_t u8Level); void IS31_Init(void); void IS31_Shutdown(void); void IS31_Service(void); void IS31_Scan_Refresh(void); /*--------------------------------------------------*/ /* 设置SDB引脚 1:高,使能 0:低,休眠 */ void IS31_Set_SDB_Pin(uint8_t u8Level) { D_3236SDB_MCU = u8Level; } /*------------------------------------------------------*/ /**/ void IS31_Init_Inst_Handle(void) { } void IS31_Init(void) { uint8_t i = 0U; uint8_t j = 0U; for (i = 0U; i < IS31_CHIP_NUM; i++) { for (j = 0U; j < IS31_CHANNEL_NUM; j++) { u8IS31Data[i][j] = 0U; u8IS31DataBackup[i][j] = 0U; } } stIS31Ctr.u8IS31Init = 1U; /*进入初始化状态*/ stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31Refresh = 2U; /*初始化完成后立即刷新一次*/ stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31ChannelBegin = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelEnd = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelWriteCount = 0U; u32IS31ErrorCount = 0U; IS31_Set_SDB_Pin(1U); Simulated_IIC_2_Init(); } void IS31_Shutdown(void) { IS31_Set_SDB_Pin(0U); stIS31Ctr.u8IS31Init = 0U; } void IS31_Scan_Refresh(void) { if (stIS31Ctr.u8IS31Refresh == 0U) { stIS31Ctr.u8IS31Refresh = 1U; } if (stIS31Ctr.u8IS31Init == 3U) { IS31_Set_SDB_Pin(1U); stIS31Ctr.u8IS31Init = 1U; /*进入初始化状态*/ stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31Refresh = 2U; /*初始化完成后立即刷新一次*/ stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31ChannelBegin = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelEnd = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelWriteCount = 0U; u32IS31ErrorCount = 0U; } if (u32IS31ErrorCount >= IS31_ERROR_MAX) { IS31_Set_SDB_Pin(0U); u32IS31ErrorCount = 0U; stIS31Ctr.u8IS31Init = 3U; } } uint8_t IS31_IIC_Receive_ACK(void) { uint8_t u8IS31ACK; u8IS31ACK = Simulated_IIC_2_Receive_ACK(); if (u8IS31ACK == SIMULATED_IIC_2_ACK) { u32IS31ErrorCount = 0U; } else { if (u32IS31ErrorCount < IS31_ERROR_MAX) { u32IS31ErrorCount++; } } return u8IS31ACK; } /*主循环内调用*/ void IS31_Service(void) { uint8_t i = 0U; if (stIS31Ctr.u8IS31Init == 1U) /*初始化未完成*/ { switch (stIS31Ctr.u8IS31Step) { case 0U: { switch (stIS31Ctr.u8IS31Operation) { case 0U: { Simulated_IIC_2_Start(); stIS31Ctr.u8IS31ChannelWriteCount = 0U; stIS31Ctr.u8IS31Operation++; break; } case 1U: { Simulated_IIC_2_Transmit_Data(u8IS31ChipAddress[stIS31Ctr.u8IS31ChipCount]); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; break; } case 3U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X0U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 5U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X01U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 7U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(u8IS31DataBackup[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelWriteCount]); stIS31Ctr.u8IS31ChannelWriteCount++; if (stIS31Ctr.u8IS31ChannelWriteCount >= IS31_CHANNEL_NUM) { stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { } } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 9U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X00U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 11U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { stIS31Ctr.u8IS31Step = 1U; } else { } Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } } break; } case 1: { switch (stIS31Ctr.u8IS31Operation) { case 0U: { Simulated_IIC_2_Start(); stIS31Ctr.u8IS31ChannelWriteCount = 0U; stIS31Ctr.u8IS31Operation++; break; } case 1U: { Simulated_IIC_2_Transmit_Data(u8IS31ChipAddress[stIS31Ctr.u8IS31ChipCount]); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; break; } case 3U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X26U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 5U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X01U); stIS31Ctr.u8IS31ChannelWriteCount++; if (stIS31Ctr.u8IS31ChannelWriteCount >= IS31_CHANNEL_NUM) { stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { } } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 7U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { stIS31Ctr.u8IS31Step = 2U; } else { } Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } break; } break; } case 2: { switch (stIS31Ctr.u8IS31Operation) { case 0U: { Simulated_IIC_2_Start(); stIS31Ctr.u8IS31ChannelWriteCount = 0U; stIS31Ctr.u8IS31Operation++; break; } case 1U: { Simulated_IIC_2_Transmit_Data(u8IS31ChipAddress[stIS31Ctr.u8IS31ChipCount]); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; break; } case 3U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X25U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 5U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X00U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 7U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { stIS31Ctr.u8IS31Step = 3U; } else { } Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } } break; } case 3: { stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31ChipCount++; if (stIS31Ctr.u8IS31ChipCount >= IS31_CHIP_NUM) { stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31Init = 2U; } break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31Step = 0U; break; } } } else if (stIS31Ctr.u8IS31Init == 2U) { if (stIS31Ctr.u8IS31Refresh >= 1U) { switch (stIS31Ctr.u8IS31Step) { case 0U: { if (stIS31Ctr.u8IS31ChannelCount < IS31_CHANNEL_NUM) { if (stIS31Ctr.u8IS31Refresh == 1U) { for (i = 0U; i < IS31_CHANNEL_NUM; i++) { if (u8IS31DataBackup[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelCount] != u8IS31Data[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelCount]) { u8IS31DataBackup[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelCount] = u8IS31Data[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelCount]; if (stIS31Ctr.u8IS31ChannelBegin >= IS31_CHANNEL_NUM) /*Invalid*/ { stIS31Ctr.u8IS31ChannelBegin = stIS31Ctr.u8IS31ChannelCount; } stIS31Ctr.u8IS31ChannelEnd = stIS31Ctr.u8IS31ChannelCount; } else { if (stIS31Ctr.u8IS31ChannelBegin < IS31_CHANNEL_NUM) /*valid*/ { stIS31Ctr.u8IS31Step = 1U; } } stIS31Ctr.u8IS31ChannelCount++; if (stIS31Ctr.u8IS31ChannelCount >= IS31_CHANNEL_NUM) { if (stIS31Ctr.u8IS31ChannelBegin < IS31_CHANNEL_NUM) /*valid*/ { stIS31Ctr.u8IS31Step = 1U; } } if ((stIS31Ctr.u8IS31ChannelCount >= IS31_CHANNEL_NUM) || (stIS31Ctr.u8IS31Step == 1U)) { break; } } } else { for (i = 0U; i < IS31_CHANNEL_NUM; i++) { u8IS31DataBackup[stIS31Ctr.u8IS31ChipCount][i] = u8IS31Data[stIS31Ctr.u8IS31ChipCount][i]; } stIS31Ctr.u8IS31ChannelBegin = 0U; stIS31Ctr.u8IS31ChannelEnd = 35U; stIS31Ctr.u8IS31Step = 1U; /*准备数据写入*/ stIS31Ctr.u8IS31ChannelCount = IS31_CHANNEL_NUM; } } else { stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31ChipCount++; if (stIS31Ctr.u8IS31ChipCount >= IS31_CHIP_NUM) { if (stIS31Ctr.u8IS31ChannelDataUpdate == 1U) { stIS31Ctr.u8IS31Step = 2U; } else { stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Refresh = 0U; } stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31ChannelDataUpdate = 0U; } stIS31Ctr.u8IS31Operation = 0U; } break; } case 1U: { switch (stIS31Ctr.u8IS31Operation) { case 0U: { stIS31Ctr.u8IS31ChannelDataUpdate = 1U; Simulated_IIC_2_Start(); stIS31Ctr.u8IS31Operation++; break; } case 1U: { Simulated_IIC_2_Transmit_Data(u8IS31ChipAddress[stIS31Ctr.u8IS31ChipCount]); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; break; } case 3U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(stIS31Ctr.u8IS31ChannelBegin + 1U); stIS31Ctr.u8IS31ChannelWriteCount = stIS31Ctr.u8IS31ChannelBegin; stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 5U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(u8IS31DataBackup[stIS31Ctr.u8IS31ChipCount][stIS31Ctr.u8IS31ChannelWriteCount]); stIS31Ctr.u8IS31ChannelWriteCount++; if (stIS31Ctr.u8IS31ChannelWriteCount > stIS31Ctr.u8IS31ChannelEnd) { stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { } } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31ChannelWriteCount = stIS31Ctr.u8IS31ChannelBegin; stIS31Ctr.u8IS31Operation = 0U; } break; } case 7U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31ChannelWriteCount = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelBegin = IS31_CHANNEL_NUM; stIS31Ctr.u8IS31ChannelEnd = IS31_CHANNEL_NUM; } else { } Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } } break; } case 2U: { switch (stIS31Ctr.u8IS31Operation) { case 0U: { Simulated_IIC_2_Start(); stIS31Ctr.u8IS31Operation++; break; } case 1U: { Simulated_IIC_2_Transmit_Data(u8IS31ChipAddress[stIS31Ctr.u8IS31ChipCount]); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; break; } case 3U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X25U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 5U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { Simulated_IIC_2_Transmit_Data(0X00U); stIS31Ctr.u8IS31Operation++; stIS31Ctr.u8IS31Operation++; } else { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; } break; } case 7U: { if (IS31_IIC_Receive_ACK() == SIMULATED_IIC_2_ACK) { stIS31Ctr.u8IS31ChipCount++; if (stIS31Ctr.u8IS31ChipCount >= IS31_CHIP_NUM) { stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31Refresh = 0U; } } else { } Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; break; } } break; } default: { Simulated_IIC_2_Stop(); stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31ChipCount = 0U; break; } } } } } void IS31_Break(void) { if (stIS31Ctr.u8IS31Refresh == 1U) { stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31Step = 0U; stIS31Ctr.u8IS31Operation = 0U; stIS31Ctr.u8IS31ChipCount = 0U; stIS31Ctr.u8IS31ChannelCount = 0U; stIS31Ctr.u8IS31Refresh = 2U; } }