Commit 7066719f authored by hu's avatar hu

更换3236驱动调整为与21036 兼容驱动

parent b87ecfd3
...@@ -30,8 +30,9 @@ ...@@ -30,8 +30,9 @@
.\Sys_Tick\Sys_Tick.c .\Sys_Tick\Sys_Tick.c
.\WDT\Watchdog.c .\WDT\Watchdog.c
.\Timer\TimerB.c .\Timer\TimerB.c
.\IS31FL3236\IS31FL3236.c .\IS31FL3236\LED_Driver_Interface.c
.\IS31FL3236\Simulated_IIC_2_Master.c .\IS31FL3236\Simulated_IIC_2_Master.c
.\IS31FL3236\LED_Driver_V1.2.a
.\CD4051\CD4051.c .\CD4051\CD4051.c
.\BU98R10\BU98R10.c .\BU98R10\BU98R10.c
.\Buzzer\Buzzer.c .\Buzzer\Buzzer.c
......
...@@ -37,7 +37,8 @@ ...@@ -37,7 +37,8 @@
#include "GaugesInterface.h" #include "GaugesInterface.h"
#include "DisplaySch_user.h" #include "DisplaySch_user.h"
#include "Data_FuelConsump.h" #include "Data_FuelConsump.h"
#include "IS31FL3236.h" #include "LED_Driver.h"
#include "LED_Driver_Interface.h"
#include "GUI.h" #include "GUI.h"
#include "Data_Fuel_User.h" #include "Data_Fuel_User.h"
...@@ -113,8 +114,7 @@ Power_Status_t Power_KL30_Init ( void ) ...@@ -113,8 +114,7 @@ Power_Status_t Power_KL30_Init ( void )
ACC5V_LED_PWM_MCU = 1u; ACC5V_LED_PWM_MCU = 1u;
BUZZER_ACC_OUT_EN = 1u; BUZZER_ACC_OUT_EN = 1u;
IS31_Init(); LED_Driver_Init();
Sound_Scheduler_Init(); Sound_Scheduler_Init();
Sound_Player_Init(); Sound_Player_Init();
RTE_PWM_Init(); RTE_PWM_Init();
...@@ -147,7 +147,7 @@ void Power_Sleep_Init(void) ...@@ -147,7 +147,7 @@ void Power_Sleep_Init(void)
/*外设*/ /*外设*/
Seg_Display_OFF(); Seg_Display_OFF();
IS31_Shutdown();
UART_Sleep_Init(); UART_Sleep_Init();
Buzzer_Shutdown(); /*蜂鸣器*/ Buzzer_Shutdown(); /*蜂鸣器*/
TimerB_PWM_Channel_Sleep(TIMERB_0_CH15); TimerB_PWM_Channel_Sleep(TIMERB_0_CH15);
...@@ -206,8 +206,7 @@ Power_Status_t Power_Wakeup_Init ( void ) ...@@ -206,8 +206,7 @@ Power_Status_t Power_Wakeup_Init ( void )
AIR_5V_OUT_EN = 1u; /*气压 5V*/ AIR_5V_OUT_EN = 1u; /*气压 5V*/
ACC5V_LED_PWM_MCU = 1u; ACC5V_LED_PWM_MCU = 1u;
BUZZER_ACC_OUT_EN = 1u; BUZZER_ACC_OUT_EN = 1u;
LED_Driver_Init();
IS31_Init();
/*报警调度初始化*/ /*报警调度初始化*/
Popup_Scheduler_Init(); Popup_Scheduler_Init();
/*报警调度初始化*/ /*报警调度初始化*/
......
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
#include "SEG_DISPLAY.h" #include "SEG_DISPLAY.h"
#include "Maintenance.h" #include "Maintenance.h"
#include "Line_in.h" #include "Line_in.h"
#include "IS31FL3236.h" #include "LED_Driver.h"
#include "LED_Driver_Interface.h"
#include "Service_TPMS.h" #include "Service_TPMS.h"
#include "Data_AirPressure.h" #include "Data_AirPressure.h"
#include "Data_CoolantTemperature.h" #include "Data_CoolantTemperature.h"
...@@ -216,12 +217,12 @@ void Telltales_Left_Right_Management_Service(void) /*10ms*/ ...@@ -216,12 +217,12 @@ void Telltales_Left_Right_Management_Service(void) /*10ms*/
if (LEFT_ST == 1u)//左转向 if (LEFT_ST == 1u)//左转向
{ {
SEG_LED_TURN_LEFT(7);//左转向断码屏开 SEG_LED_TURN_LEFT(7);//左转向断码屏开
IS31_CHIP0_CHANNEL36 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 35u, LED_BRIGHTNESSG);
} }
else else
{ {
SEG_LED_TURN_LEFT(0); SEG_LED_TURN_LEFT(0);
IS31_CHIP0_CHANNEL36 = 0x00u; LED_Driver_Channel_Set(0u, 35u, 0);
} }
if (TelltaleLRCtrl.LastLeft != LEFT_ST) if (TelltaleLRCtrl.LastLeft != LEFT_ST)
{ {
...@@ -232,12 +233,12 @@ void Telltales_Left_Right_Management_Service(void) /*10ms*/ ...@@ -232,12 +233,12 @@ void Telltales_Left_Right_Management_Service(void) /*10ms*/
if (RIGHT_ST == 1u)//右转向 if (RIGHT_ST == 1u)//右转向
{ {
SEG_LED_TURN_RIGHT(7);//右转向断码屏开 SEG_LED_TURN_RIGHT(7);//右转向断码屏开
IS31_CHIP0_CHANNEL24 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 23u, LED_BRIGHTNESSG);
} }
else else
{ {
SEG_LED_TURN_RIGHT(0); SEG_LED_TURN_RIGHT(0);
IS31_CHIP0_CHANNEL24 = 0x00u; LED_Driver_Channel_Set(0u, 23u, 0);
} }
if (TelltaleLRCtrl.LastRight != RIGHT_ST) if (TelltaleLRCtrl.LastRight != RIGHT_ST)
...@@ -278,18 +279,18 @@ void LED_Left_Right_Execution(uint8_t led_status) ...@@ -278,18 +279,18 @@ void LED_Left_Right_Execution(uint8_t led_status)
if (led_status == 1u) if (led_status == 1u)
{ {
SEG_LED_TURN_LEFT(7);/*左转向断码屏开*/ SEG_LED_TURN_LEFT(7);/*左转向断码屏开*/
IS31_CHIP0_CHANNEL36 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 35u, LED_BRIGHTNESSG);
SEG_LED_TURN_RIGHT(7);/*右转向断码屏开*/ SEG_LED_TURN_RIGHT(7);/*右转向断码屏开*/
IS31_CHIP0_CHANNEL24 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 23u, LED_BRIGHTNESSG);
} }
else else
{ {
SEG_LED_TURN_LEFT(0);/*左转向断码屏开*/ SEG_LED_TURN_LEFT(0);/*左转向断码屏开*/
IS31_CHIP0_CHANNEL36 = 0u; LED_Driver_Channel_Set(0u, 35u, 0);
SEG_LED_TURN_RIGHT(0);/*右转向断码屏开*/ SEG_LED_TURN_RIGHT(0);/*右转向断码屏开*/
IS31_CHIP0_CHANNEL24 = 0u; LED_Driver_Channel_Set(0u, 23u, 0);
} }
} }
...@@ -361,17 +362,17 @@ void LED_FOUR_MUL_FOUR_T_Execution(uint8_t led_status) ...@@ -361,17 +362,17 @@ void LED_FOUR_MUL_FOUR_T_Execution(uint8_t led_status)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL35 = LED_BRIGHTNESSGBL; LED_Driver_Channel_Set(0u, 34u, LED_BRIGHTNESSGBL);
} }
else else
{ {
IS31_CHIP0_CHANNEL35 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 34u, LED_BRIGHTNESSG);
} }
SEG_LED_FOUR_MUL_FOUR_T(7); SEG_LED_FOUR_MUL_FOUR_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL35 = 0x00; LED_Driver_Channel_Set(0u, 34u, 0);
SEG_LED_FOUR_MUL_FOUR_T(0); SEG_LED_FOUR_MUL_FOUR_T(0);
} }
} }
...@@ -407,17 +408,17 @@ void LED_EXH_BRAKE_T_Execution(uint8_t led_status) ...@@ -407,17 +408,17 @@ void LED_EXH_BRAKE_T_Execution(uint8_t led_status)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL34 = LED_BRIGHTNESSGBL; LED_Driver_Channel_Set(0u, 33u, LED_BRIGHTNESSGBL);
} }
else else
{ {
IS31_CHIP0_CHANNEL34 = LED_BRIGHTNESSG; LED_Driver_Channel_Set(0u, 33u, LED_BRIGHTNESSG);
} }
SEG_LED_EXH_BRAKE_T(7); SEG_LED_EXH_BRAKE_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL34 = 0x00; LED_Driver_Channel_Set(0u, 33u, 0);
SEG_LED_EXH_BRAKE_T(0); SEG_LED_EXH_BRAKE_T(0);
} }
} }
...@@ -450,12 +451,12 @@ void LED_QOS_GLOW_T_Execution(uint8_t led_status) ...@@ -450,12 +451,12 @@ void LED_QOS_GLOW_T_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL33 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 32u, LED_BRIGHTNESSY);
SEG_LED_QOS_GLOW_T(7); SEG_LED_QOS_GLOW_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL33 = 0x00; LED_Driver_Channel_Set(0u, 32u, 0);
SEG_LED_QOS_GLOW_T(0); SEG_LED_QOS_GLOW_T(0);
} }
} }
...@@ -489,17 +490,17 @@ void LED_HI_BEAM_T_Execution(uint8_t led_status) ...@@ -489,17 +490,17 @@ void LED_HI_BEAM_T_Execution(uint8_t led_status)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL32 = LED_BRIGHTNESSBBL; LED_Driver_Channel_Set(0u, 31u, LED_BRIGHTNESSBBL);
} }
else else
{ {
IS31_CHIP0_CHANNEL32 = LED_BRIGHTNESSB; LED_Driver_Channel_Set(0u, 31u, LED_BRIGHTNESSB);
} }
SEG_LED_HI_BEAM_T(7); SEG_LED_HI_BEAM_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL32 = 0x00; LED_Driver_Channel_Set(0u, 31u, 0);
SEG_LED_HI_BEAM_T(0); SEG_LED_HI_BEAM_T(0);
} }
} }
...@@ -570,12 +571,12 @@ void LED_MIL_T_Execution(uint8_t led_status) ...@@ -570,12 +571,12 @@ void LED_MIL_T_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL31 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 30u, LED_BRIGHTNESSY);
SEG_LED_MIL_T(7); SEG_LED_MIL_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL31 = 0x00; LED_Driver_Channel_Set(0u, 30u, 0);
SEG_LED_MIL_T(0); SEG_LED_MIL_T(0);
} }
} }
...@@ -608,12 +609,12 @@ void LED_SVS_T_Execution(uint8_t led_status) ...@@ -608,12 +609,12 @@ void LED_SVS_T_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL30 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 29u, LED_BRIGHTNESSY);
SEG_LED_SVS_T(7); SEG_LED_SVS_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL30 = 0x00; LED_Driver_Channel_Set(0u, 29u, 0);
SEG_LED_SVS_T(0); SEG_LED_SVS_T(0);
} }
} }
...@@ -657,30 +658,30 @@ void LED_H_S_A_T_Execution(uint8_t led_status) ...@@ -657,30 +658,30 @@ void LED_H_S_A_T_Execution(uint8_t led_status)
{ {
if (led_status == 1u) if (led_status == 1u)
{ {
IS31_CHIP0_CHANNEL29 = LED_BRIGHTNESSY; /*黄灯 闪烁*/ LED_Driver_Channel_Set(0u, 28u, LED_BRIGHTNESSY);/*黄灯 闪烁*/
IS31_CHIP0_CHANNEL28 = 0x00u; LED_Driver_Channel_Set(0u, 27u, 0);
} }
else if (led_status == 2u) else if (led_status == 2u)
{ {
IS31_CHIP0_CHANNEL29 = LED_BRIGHTNESSY; /*黄灯 亮*/ LED_Driver_Channel_Set(0u, 28u, LED_BRIGHTNESSY);/*黄灯 亮*/
IS31_CHIP0_CHANNEL28 = 0x00; /*绿灯 灭*/ LED_Driver_Channel_Set(0u, 27u, 0);/*绿灯 灭*/
} }
else if (led_status == 3u) else if (led_status == 3u)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL28 = LED_BRIGHTNESSGBL; /*绿灯 亮*/ LED_Driver_Channel_Set(0u, 27u, LED_BRIGHTNESSGBL);/*绿灯 亮*/
} }
else else
{ {
IS31_CHIP0_CHANNEL28 = LED_BRIGHTNESSG; /*绿灯 亮*/ LED_Driver_Channel_Set(0u, 27u, LED_BRIGHTNESSG);/*绿灯 亮*/
} }
IS31_CHIP0_CHANNEL29 = 0x00u; /*黄灯 灭*/ LED_Driver_Channel_Set(0u, 28u, 0); /*黄灯 灭*/
} }
else else
{ {
IS31_CHIP0_CHANNEL28 = 0x00; /*绿灯 灭*/ LED_Driver_Channel_Set(0u, 27u, 0);/*绿灯 灭*/
IS31_CHIP0_CHANNEL29 = 0x00; /*黄灯 灭*/ LED_Driver_Channel_Set(0u, 28u, 0);/*黄灯 灭*/
} }
if (led_status != 0x00u) if (led_status != 0x00u)
...@@ -722,25 +723,25 @@ void LED_RETARDER_T_Execution(uint8_t led_status) ...@@ -722,25 +723,25 @@ void LED_RETARDER_T_Execution(uint8_t led_status)
{ {
if (led_status == 1u) if (led_status == 1u)
{ {
IS31_CHIP0_CHANNEL27 = 0x00u; /* 绿灯 灭 */ LED_Driver_Channel_Set(0u, 26u, 0); /* 绿灯 灭 */
IS31_CHIP0_CHANNEL26 = 0xFFu;//LED_BRIGHTNESSY; /* 黄灯 亮 闪 */ LED_Driver_Channel_Set(0u, 25u, 0xFFu);//LED_BRIGHTNESSY; /* 黄灯 亮 闪 */
} }
else if (led_status == 2u) else if (led_status == 2u)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL27 = LED_BRIGHTNESSGBL; /* 绿灯 亮 */ LED_Driver_Channel_Set(0u, 26u, LED_BRIGHTNESSGBL); /* 绿灯 亮 */
} }
else else
{ {
IS31_CHIP0_CHANNEL27 = LED_BRIGHTNESSG; /* 绿灯 亮 */ LED_Driver_Channel_Set(0u, 26u, LED_BRIGHTNESSG); /* 绿灯 亮 */
} }
IS31_CHIP0_CHANNEL26 = 0x00u; /* 黄灯 灭 */ LED_Driver_Channel_Set(0u, 25u, 0); /* 黄灯 灭 */
} }
else else
{ {
IS31_CHIP0_CHANNEL27 = 0x00u; /* 绿灯 灭 */ LED_Driver_Channel_Set(0u, 26u, 0); /* 绿灯 灭 */
IS31_CHIP0_CHANNEL26 = 0x00u; /* 黄灯 灭 */ LED_Driver_Channel_Set(0u, 25u, 0); /* 黄灯 灭 */
} }
if (led_status != 0x00u) if (led_status != 0x00u)
...@@ -782,12 +783,12 @@ void LED_AUTO_LEVELING_T_Execution(uint8_t led_status) ...@@ -782,12 +783,12 @@ void LED_AUTO_LEVELING_T_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL25 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 24u, LED_BRIGHTNESSY);
SEG_LED_AUTO_LEVELING_T(7); SEG_LED_AUTO_LEVELING_T(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL25 = 0x00; LED_Driver_Channel_Set(0u, 24u, 0);
SEG_LED_AUTO_LEVELING_T(0); SEG_LED_AUTO_LEVELING_T(0);
} }
} }
...@@ -820,12 +821,12 @@ void LED_ROWS_L_Execution(uint8_t led_status) ...@@ -820,12 +821,12 @@ void LED_ROWS_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL01 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 0, LED_BRIGHTNESSY);
SEG_LED_ROWS_L(7); SEG_LED_ROWS_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL01 = 0x00; LED_Driver_Channel_Set(0u, 0, 0);
SEG_LED_ROWS_L(0); SEG_LED_ROWS_L(0);
} }
} }
...@@ -858,12 +859,12 @@ void LED_BSM_OFF_L_Execution(uint8_t led_status) ...@@ -858,12 +859,12 @@ void LED_BSM_OFF_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL02 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 1, LED_BRIGHTNESSY);
SEG_LED_BSM_OFF_L(7); SEG_LED_BSM_OFF_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL02 = 0x00; LED_Driver_Channel_Set(0u, 1, 0);
SEG_LED_BSM_OFF_L(0); SEG_LED_BSM_OFF_L(0);
} }
} }
...@@ -931,18 +932,18 @@ void LED_AEBS_OFF_L_Execution(uint8_t led_status) ...@@ -931,18 +932,18 @@ void LED_AEBS_OFF_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL03 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 2u, LED_BRIGHTNESSY);
SEG_LED_AEBS_OFF_L(7); SEG_LED_AEBS_OFF_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL03 = 0x00; LED_Driver_Channel_Set(0u, 2u, 0);
SEG_LED_AEBS_OFF_L(0); SEG_LED_AEBS_OFF_L(0);
} }
} }
else else
{ {
IS31_CHIP0_CHANNEL03 = 0x00; LED_Driver_Channel_Set(0u, 2u, 0);
SEG_LED_AEBS_OFF_L(0); SEG_LED_AEBS_OFF_L(0);
} }
} }
...@@ -995,18 +996,18 @@ void LED_LDWS_L_Execution(uint8_t led_status) ...@@ -995,18 +996,18 @@ void LED_LDWS_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL04 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 3u, LED_BRIGHTNESSY);
SEG_LED_LDWS_L(7); SEG_LED_LDWS_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL04 = 0x00; LED_Driver_Channel_Set(0u, 3u, 0);
SEG_LED_LDWS_L(0); SEG_LED_LDWS_L(0);
} }
} }
else else
{ {
IS31_CHIP0_CHANNEL04 = 0x00; LED_Driver_Channel_Set(0u, 3u, LED_BRIGHTNESSY);
SEG_LED_LDWS_L(0); SEG_LED_LDWS_L(0);
} }
} }
...@@ -1039,12 +1040,12 @@ void LED_SRS_L_Execution(uint8_t led_status) ...@@ -1039,12 +1040,12 @@ void LED_SRS_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL20 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 19u, LED_BRIGHTNESSR);
SEG_LED_SRS_L(7); SEG_LED_SRS_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL20 = 0x00; LED_Driver_Channel_Set(0u, 19u, 0);
SEG_LED_SRS_L(0); SEG_LED_SRS_L(0);
} }
} }
...@@ -1077,12 +1078,12 @@ void LED_ENG_OIL_L_Execution(uint8_t led_status) ...@@ -1077,12 +1078,12 @@ void LED_ENG_OIL_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL21 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 20u, LED_BRIGHTNESSR);
SEG_LED_ENG_OIL_L(7); SEG_LED_ENG_OIL_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL21 = 0x00; LED_Driver_Channel_Set(0u, 20u, 0);
SEG_LED_ENG_OIL_L(0); SEG_LED_ENG_OIL_L(0);
} }
} }
...@@ -1115,12 +1116,12 @@ void LED_CHARG_L_Execution(uint8_t led_status) ...@@ -1115,12 +1116,12 @@ void LED_CHARG_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL22 = LED_BRIGHTNESSB; LED_Driver_Channel_Set(0u, 21u, LED_BRIGHTNESSB);
SEG_LED_CHARG_L(7); SEG_LED_CHARG_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL22 = 0x00; LED_Driver_Channel_Set(0u, 21u, 0);
SEG_LED_CHARG_L(0); SEG_LED_CHARG_L(0);
} }
} }
...@@ -1153,12 +1154,12 @@ void LED_SEAT_BELT_L_Execution(uint8_t led_status) ...@@ -1153,12 +1154,12 @@ void LED_SEAT_BELT_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL23 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 22u, LED_BRIGHTNESSR);
SEG_LED_SEAT_BELT_L(7); SEG_LED_SEAT_BELT_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL23 = 0x00; LED_Driver_Channel_Set(0u, 22u, 0);
SEG_LED_SEAT_BELT_L(0); SEG_LED_SEAT_BELT_L(0);
} }
} }
...@@ -1190,12 +1191,12 @@ void LED_RR_DIFF_LOCK_L_Execution(uint8_t led_status) ...@@ -1190,12 +1191,12 @@ void LED_RR_DIFF_LOCK_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL16 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 15u, LED_BRIGHTNESSY);
SEG_LED_RR_DIFF_LOCK_L(7); SEG_LED_RR_DIFF_LOCK_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL16 = 0x00; LED_Driver_Channel_Set(0u, 15u, 0);
SEG_LED_RR_DIFF_LOCK_L(0); SEG_LED_RR_DIFF_LOCK_L(0);
} }
} }
...@@ -1251,18 +1252,18 @@ void LED_TPMS_L_Execution(uint8_t led_status) ...@@ -1251,18 +1252,18 @@ void LED_TPMS_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL17 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 16u, LED_BRIGHTNESSY);
SEG_LED_TPMS_L(7); SEG_LED_TPMS_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL17 = 0x00; LED_Driver_Channel_Set(0u, 16u, 0);
SEG_LED_TPMS_L(0); SEG_LED_TPMS_L(0);
} }
} }
else else
{ {
IS31_CHIP0_CHANNEL17 = 0x00u; LED_Driver_Channel_Set(0u, 16u, 0);
SEG_LED_TPMS_L(0); SEG_LED_TPMS_L(0);
} }
} }
...@@ -1304,18 +1305,18 @@ void LED_ASR_or_EVSC_OFF_L_Execution(uint8_t led_status) ...@@ -1304,18 +1305,18 @@ void LED_ASR_or_EVSC_OFF_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL18 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 17u, LED_BRIGHTNESSY);
SEG_LED_ASR_or_EVSC_OFF_L(7); SEG_LED_ASR_or_EVSC_OFF_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL18 = 0x00; LED_Driver_Channel_Set(0u, 17u, 0);
SEG_LED_ASR_or_EVSC_OFF_L(0); SEG_LED_ASR_or_EVSC_OFF_L(0);
} }
} }
else else
{ {
IS31_CHIP0_CHANNEL18 = 0x0u; LED_Driver_Channel_Set(0u, 17u, 0);
SEG_LED_ASR_or_EVSC_OFF_L(0); SEG_LED_ASR_or_EVSC_OFF_L(0);
} }
} }
...@@ -1396,12 +1397,12 @@ void LED_EVSC_L_Execution(uint8_t led_status) ...@@ -1396,12 +1397,12 @@ void LED_EVSC_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL19 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 18u, LED_BRIGHTNESSY);
SEG_LED_EVSC_L(7); SEG_LED_EVSC_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL19 = 0x00; LED_Driver_Channel_Set(0u, 18u, 0);
SEG_LED_EVSC_L(0); SEG_LED_EVSC_L(0);
} }
} }
...@@ -1435,23 +1436,23 @@ void LED_eco_stop_OFF_L_Execution(uint8_t led_status) ...@@ -1435,23 +1436,23 @@ void LED_eco_stop_OFF_L_Execution(uint8_t led_status)
{ {
if (Line_In_Get_Status(LINE_IN_ILLUMINATION)) if (Line_In_Get_Status(LINE_IN_ILLUMINATION))
{ {
IS31_CHIP0_CHANNEL12 = LED_BRIGHTNESSGBL; /* 绿灯 亮 */ LED_Driver_Channel_Set(0u, 11u, LED_BRIGHTNESSGBL); /* 绿灯 亮 */
} }
else else
{ {
IS31_CHIP0_CHANNEL12 = LED_BRIGHTNESSG; /* 绿灯 亮 */ LED_Driver_Channel_Set(0u, 11u, LED_BRIGHTNESSG); /* 绿灯 亮 */
} }
IS31_CHIP0_CHANNEL13 = 0x00u; /* 黄灯 灭 */ LED_Driver_Channel_Set(0u, 12u, 0); /* 黄灯 灭 */
} }
else if (led_status == 2) else if (led_status == 2)
{ {
IS31_CHIP0_CHANNEL12 = 0x00u; /* 绿灯 灭 */ LED_Driver_Channel_Set(0u, 11u, 0); /* 绿灯 灭 */
IS31_CHIP0_CHANNEL13 = LED_BRIGHTNESSY; /* 黄灯 亮 */ LED_Driver_Channel_Set(0u, 12u, LED_BRIGHTNESSY);/* 黄灯 亮 */
} }
else else
{ {
IS31_CHIP0_CHANNEL12 = 0x00u; /* 绿灯 灭 */ LED_Driver_Channel_Set(0u, 11u, 0); /* 绿灯 灭 */
IS31_CHIP0_CHANNEL13 = 0x00u; /* 黄灯 灭 */ LED_Driver_Channel_Set(0u, 12u, 0); /* 黄灯 灭 */
} }
if ((led_status == 1) || (led_status == 2)) if ((led_status == 1) || (led_status == 2))
...@@ -1507,18 +1508,18 @@ void LED_AMT_L_Execution(uint8_t led_status) ...@@ -1507,18 +1508,18 @@ void LED_AMT_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL14 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 13u, LED_BRIGHTNESSY);
SEG_LED_AMT_L(7); SEG_LED_AMT_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL14 = 0x00; LED_Driver_Channel_Set(0u, 13u, 0);
SEG_LED_AMT_L(0); SEG_LED_AMT_L(0);
} }
} }
else else
{ {
IS31_CHIP0_CHANNEL14 = 0x00u; LED_Driver_Channel_Set(0u, 13u, 0);
SEG_LED_AMT_L(0); SEG_LED_AMT_L(0);
} }
} }
...@@ -1553,12 +1554,12 @@ void LED_WEAR_IND_L_Execution(uint8_t led_status) ...@@ -1553,12 +1554,12 @@ void LED_WEAR_IND_L_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL15 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 14u, LED_BRIGHTNESSY);
SEG_LED_WEAR_IND_L(7); SEG_LED_WEAR_IND_L(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL15 = 0x00; LED_Driver_Channel_Set(0u, 14u, 0);
SEG_LED_WEAR_IND_L(0); SEG_LED_WEAR_IND_L(0);
} }
} }
...@@ -1590,12 +1591,12 @@ void LED_PARK_BRAKE_R_Execution(uint8_t led_status) ...@@ -1590,12 +1591,12 @@ void LED_PARK_BRAKE_R_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL08 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 7u, LED_BRIGHTNESSR);
SEG_LED_PARK_BRAKE_R(7); SEG_LED_PARK_BRAKE_R(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL08 = 0x00; LED_Driver_Channel_Set(0u, 7u, 0);
SEG_LED_PARK_BRAKE_R(0); SEG_LED_PARK_BRAKE_R(0);
} }
} }
...@@ -1679,12 +1680,12 @@ void LED_BRAKE_LOCK_R_Execution(uint8_t led_status) ...@@ -1679,12 +1680,12 @@ void LED_BRAKE_LOCK_R_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL07 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 6u, LED_BRIGHTNESSR);
SEG_LED_BRAKE_LOCK_R(7); SEG_LED_BRAKE_LOCK_R(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL07 = 0x00; LED_Driver_Channel_Set(0u, 6u, 0);
SEG_LED_BRAKE_LOCK_R(0); SEG_LED_BRAKE_LOCK_R(0);
} }
} }
...@@ -1717,12 +1718,12 @@ void LED_AIR_SUS_R_Execution(uint8_t led_status) ...@@ -1717,12 +1718,12 @@ void LED_AIR_SUS_R_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL06 = LED_BRIGHTNESSR; LED_Driver_Channel_Set(0u, 5u, LED_BRIGHTNESSR);
SEG_LED_AIR_SUS_R(7); SEG_LED_AIR_SUS_R(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL06 = 0x00; LED_Driver_Channel_Set(0u, 5u, 0);
SEG_LED_AIR_SUS_R(0); SEG_LED_AIR_SUS_R(0);
} }
} }
...@@ -1755,12 +1756,12 @@ void LED_TRAILER_BRAKE_R_Execution(uint8_t led_status) ...@@ -1755,12 +1756,12 @@ void LED_TRAILER_BRAKE_R_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL10 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 9u, LED_BRIGHTNESSY);
SEG_LED_TRAILER_BRAKE_R(7); SEG_LED_TRAILER_BRAKE_R(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL10 = 0x00; LED_Driver_Channel_Set(0u, 9u, 0);
SEG_LED_TRAILER_BRAKE_R(0); SEG_LED_TRAILER_BRAKE_R(0);
} }
} }
...@@ -1793,12 +1794,12 @@ void LED_BRAKE_AIR_or_EBS_YELLOW_R_Execution(uint8_t led_status) ...@@ -1793,12 +1794,12 @@ void LED_BRAKE_AIR_or_EBS_YELLOW_R_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL09 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 8u, LED_BRIGHTNESSY);
SEG_LED_BRAKE_AIR_or_EBS_YELLOW_R(7); SEG_LED_BRAKE_AIR_or_EBS_YELLOW_R(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL09 = 0x00; LED_Driver_Channel_Set(0u, 8u, 0);
SEG_LED_BRAKE_AIR_or_EBS_YELLOW_R(0); SEG_LED_BRAKE_AIR_or_EBS_YELLOW_R(0);
} }
} }
...@@ -1951,12 +1952,12 @@ void LED_WORKING_LAMP_U_Execution(uint8_t led_status) ...@@ -1951,12 +1952,12 @@ void LED_WORKING_LAMP_U_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL11 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 10u, LED_BRIGHTNESSY);
SEG_LED_WORKING_LAMP_U(7); SEG_LED_WORKING_LAMP_U(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL11 = 0x00; LED_Driver_Channel_Set(0u, 10u, 0);
SEG_LED_WORKING_LAMP_U(0); SEG_LED_WORKING_LAMP_U(0);
} }
} }
...@@ -1989,12 +1990,12 @@ void LED_TRAILER_ABS_INFO_U_Execution(uint8_t led_status) ...@@ -1989,12 +1990,12 @@ void LED_TRAILER_ABS_INFO_U_Execution(uint8_t led_status)
{ {
if (led_status == 1) if (led_status == 1)
{ {
IS31_CHIP0_CHANNEL05 = LED_BRIGHTNESSY; LED_Driver_Channel_Set(0u, 4u, LED_BRIGHTNESSY);
SEG_LED_TRAILER_ABS_INFO_U(7); SEG_LED_TRAILER_ABS_INFO_U(7);
} }
else else
{ {
IS31_CHIP0_CHANNEL05 = 0x00; LED_Driver_Channel_Set(0u, 4u, 0);
SEG_LED_TRAILER_ABS_INFO_U(0); SEG_LED_TRAILER_ABS_INFO_U(0);
} }
} }
......
...@@ -483,9 +483,9 @@ ...@@ -483,9 +483,9 @@
#define SCL1_MCU_OUT GPIO_OUT_PORT17_PIN10 #define SCL1_MCU_OUT GPIO_OUT_PORT17_PIN10
#define SD1_MCU_OUT GPIO_OUT_PORT17_PIN11 #define SD1_MCU_OUT GPIO_OUT_PORT17_PIN11
#define T7_LED_OUT GPIO_OUT_PORT22_PIN10 #define T7_LED_OUT GPIO_OUT_PORT22_PIN10
#define I2C2_3236SDA_MCU GPIO_OUT_PORT42_PIN00 //#define I2C2_3236SDA_MCU GPIO_OUT_PORT42_PIN00
#define I2C2_3236SCL_MCU GPIO_OUT_PORT42_PIN01 //#define I2C2_3236SCL_MCU GPIO_OUT_PORT42_PIN01
#define D_3236SDB_MCU GPIO_OUT_PORT42_PIN02 //#define D_3236SDB_MCU GPIO_OUT_PORT42_PIN02
#define Water_Temp_Led_R_MCU_OUT GPIO_OUT_PORT42_PIN04 #define Water_Temp_Led_R_MCU_OUT GPIO_OUT_PORT42_PIN04
#define TRAILER_ABS_LED_MCU_OUT GPIO_OUT_PORT42_PIN05 #define TRAILER_ABS_LED_MCU_OUT GPIO_OUT_PORT42_PIN05
#define ACC5V_LED_PWM_MCU GPIO_OUT_PORT42_PIN06 #define ACC5V_LED_PWM_MCU GPIO_OUT_PORT42_PIN06
......
#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;
}
}
#ifndef IS31FL3236_H__
#define IS31FL3236_H__
#include "r_typedefs.h"
/*-------------------------------------------------------------------------------------------*/
/*芯片数量*/
#define IS31_CHIP_NUM 1U
/*灯的数量*/
#define IS31_LED_NUM 36U
#define IS31_CHIP1_ADDRESS 0X78U
#define IS31_CHIP2_ADDRESS 0X7EU
#define IS31_CHIP3_ADDRESS 0X7AU
#define IS31_CHIP4_ADDRESS 0X7CU
/*-------------------------------------------------------------------------------------------*/
#define IS31_CHANNEL_NUM 36U
extern uint8_t u8IS31Data[IS31_CHIP_NUM][IS31_CHANNEL_NUM];
extern uint8_t LED_Read[72];
/*-------------------------------------------------------------------------*/
#if (IS31_CHIP_NUM >= 1U)
#define IS31_CHIP0_CHANNEL01 u8IS31Data[0U][0U]
#define IS31_CHIP0_CHANNEL02 u8IS31Data[0U][1U]
#define IS31_CHIP0_CHANNEL03 u8IS31Data[0U][2U]
#define IS31_CHIP0_CHANNEL04 u8IS31Data[0U][3U]
#define IS31_CHIP0_CHANNEL05 u8IS31Data[0U][4U]
#define IS31_CHIP0_CHANNEL06 u8IS31Data[0U][5U]
#define IS31_CHIP0_CHANNEL07 u8IS31Data[0U][6U]
#define IS31_CHIP0_CHANNEL08 u8IS31Data[0U][7U]
#define IS31_CHIP0_CHANNEL09 u8IS31Data[0U][8U]
#define IS31_CHIP0_CHANNEL10 u8IS31Data[0U][9U]
#define IS31_CHIP0_CHANNEL11 u8IS31Data[0U][10U]
#define IS31_CHIP0_CHANNEL12 u8IS31Data[0U][11U]
#define IS31_CHIP0_CHANNEL13 u8IS31Data[0U][12U]
#define IS31_CHIP0_CHANNEL14 u8IS31Data[0U][13U]
#define IS31_CHIP0_CHANNEL15 u8IS31Data[0U][14U]
#define IS31_CHIP0_CHANNEL16 u8IS31Data[0U][15U]
#define IS31_CHIP0_CHANNEL17 u8IS31Data[0U][16U]
#define IS31_CHIP0_CHANNEL18 u8IS31Data[0U][17U]
#define IS31_CHIP0_CHANNEL19 u8IS31Data[0U][18U]
#define IS31_CHIP0_CHANNEL20 u8IS31Data[0U][19U]
#define IS31_CHIP0_CHANNEL21 u8IS31Data[0U][20U]
#define IS31_CHIP0_CHANNEL22 u8IS31Data[0U][21U]
#define IS31_CHIP0_CHANNEL23 u8IS31Data[0U][22U]
#define IS31_CHIP0_CHANNEL24 u8IS31Data[0U][23U]
#define IS31_CHIP0_CHANNEL25 u8IS31Data[0U][24U]
#define IS31_CHIP0_CHANNEL26 u8IS31Data[0U][25U]
#define IS31_CHIP0_CHANNEL27 u8IS31Data[0U][26U]
#define IS31_CHIP0_CHANNEL28 u8IS31Data[0U][27U]
#define IS31_CHIP0_CHANNEL29 u8IS31Data[0U][28U]
#define IS31_CHIP0_CHANNEL30 u8IS31Data[0U][29U]
#define IS31_CHIP0_CHANNEL31 u8IS31Data[0U][30U]
#define IS31_CHIP0_CHANNEL32 u8IS31Data[0U][31U]
#define IS31_CHIP0_CHANNEL33 u8IS31Data[0U][32U]
#define IS31_CHIP0_CHANNEL34 u8IS31Data[0U][33U]
#define IS31_CHIP0_CHANNEL35 u8IS31Data[0U][34U]
#define IS31_CHIP0_CHANNEL36 u8IS31Data[0U][35U]
#endif
#if (IS31_CHIP_NUM >= 2U)
#define IS31_CHIP1_CHANNEL01 u8IS31Data[1U][0U]
#define IS31_CHIP1_CHANNEL02 u8IS31Data[1U][1U]
#define IS31_CHIP1_CHANNEL03 u8IS31Data[1U][2U]
#define IS31_CHIP1_CHANNEL04 u8IS31Data[1U][3U]
#define IS31_CHIP1_CHANNEL05 u8IS31Data[1U][4U]
#define IS31_CHIP1_CHANNEL06 u8IS31Data[1U][5U]
#define IS31_CHIP1_CHANNEL07 u8IS31Data[1U][6U]
#define IS31_CHIP1_CHANNEL08 u8IS31Data[1U][7U]
#define IS31_CHIP1_CHANNEL09 u8IS31Data[1U][8U]
#define IS31_CHIP1_CHANNEL10 u8IS31Data[1U][9U]
#define IS31_CHIP1_CHANNEL11 u8IS31Data[1U][10U]
#define IS31_CHIP1_CHANNEL12 u8IS31Data[1U][11U]
#define IS31_CHIP1_CHANNEL13 u8IS31Data[1U][12U]
#define IS31_CHIP1_CHANNEL14 u8IS31Data[1U][13U]
#define IS31_CHIP1_CHANNEL15 u8IS31Data[1U][14U]
#define IS31_CHIP1_CHANNEL16 u8IS31Data[1U][15U]
#define IS31_CHIP1_CHANNEL17 u8IS31Data[1U][16U]
#define IS31_CHIP1_CHANNEL18 u8IS31Data[1U][17U]
#define IS31_CHIP1_CHANNEL19 u8IS31Data[1U][18U]
#define IS31_CHIP1_CHANNEL20 u8IS31Data[1U][19U]
#define IS31_CHIP1_CHANNEL21 u8IS31Data[1U][20U]
#define IS31_CHIP1_CHANNEL22 u8IS31Data[1U][21U]
#define IS31_CHIP1_CHANNEL23 u8IS31Data[1U][22U]
#define IS31_CHIP1_CHANNEL24 u8IS31Data[1U][23U]
#define IS31_CHIP1_CHANNEL25 u8IS31Data[1U][24U]
#define IS31_CHIP1_CHANNEL26 u8IS31Data[1U][25U]
#define IS31_CHIP1_CHANNEL27 u8IS31Data[1U][26U]
#define IS31_CHIP1_CHANNEL28 u8IS31Data[1U][27U]
#define IS31_CHIP1_CHANNEL29 u8IS31Data[1U][28U]
#define IS31_CHIP1_CHANNEL30 u8IS31Data[1U][29U]
#define IS31_CHIP1_CHANNEL31 u8IS31Data[1U][30U]
#define IS31_CHIP1_CHANNEL32 u8IS31Data[1U][31U]
#define IS31_CHIP1_CHANNEL33 u8IS31Data[1U][32U]
#define IS31_CHIP1_CHANNEL34 u8IS31Data[1U][33U]
#define IS31_CHIP1_CHANNEL35 u8IS31Data[1U][34U]
#define IS31_CHIP1_CHANNEL36 u8IS31Data[1U][35U]
#endif
#if (IS31_CHIP_NUM >= 3U)
#define IS31_CHIP2_CHANNEL01 u8IS31Data[2U][0U]
#define IS31_CHIP2_CHANNEL02 u8IS31Data[2U][1U]
#define IS31_CHIP2_CHANNEL03 u8IS31Data[2U][2U]
#define IS31_CHIP2_CHANNEL04 u8IS31Data[2U][3U]
#define IS31_CHIP2_CHANNEL05 u8IS31Data[2U][4U]
#define IS31_CHIP2_CHANNEL06 u8IS31Data[2U][5U]
#define IS31_CHIP2_CHANNEL07 u8IS31Data[2U][6U]
#define IS31_CHIP2_CHANNEL08 u8IS31Data[2U][7U]
#define IS31_CHIP2_CHANNEL09 u8IS31Data[2U][8U]
#define IS31_CHIP2_CHANNEL10 u8IS31Data[2U][9U]
#define IS31_CHIP2_CHANNEL11 u8IS31Data[2U][10U]
#define IS31_CHIP2_CHANNEL12 u8IS31Data[2U][11U]
#define IS31_CHIP2_CHANNEL13 u8IS31Data[2U][12U]
#define IS31_CHIP2_CHANNEL14 u8IS31Data[2U][13U]
#define IS31_CHIP2_CHANNEL15 u8IS31Data[2U][14U]
#define IS31_CHIP2_CHANNEL16 u8IS31Data[2U][15U]
#define IS31_CHIP2_CHANNEL17 u8IS31Data[2U][16U]
#define IS31_CHIP2_CHANNEL18 u8IS31Data[2U][17U]
#define IS31_CHIP2_CHANNEL19 u8IS31Data[2U][18U]
#define IS31_CHIP2_CHANNEL20 u8IS31Data[2U][19U]
#define IS31_CHIP2_CHANNEL21 u8IS31Data[2U][20U]
#define IS31_CHIP2_CHANNEL22 u8IS31Data[2U][21U]
#define IS31_CHIP2_CHANNEL23 u8IS31Data[2U][22U]
#define IS31_CHIP2_CHANNEL24 u8IS31Data[2U][23U]
#define IS31_CHIP2_CHANNEL25 u8IS31Data[2U][24U]
#define IS31_CHIP2_CHANNEL26 u8IS31Data[2U][25U]
#define IS31_CHIP2_CHANNEL27 u8IS31Data[2U][26U]
#define IS31_CHIP2_CHANNEL28 u8IS31Data[2U][27U]
#define IS31_CHIP2_CHANNEL29 u8IS31Data[2U][28U]
#define IS31_CHIP2_CHANNEL30 u8IS31Data[2U][29U]
#define IS31_CHIP2_CHANNEL31 u8IS31Data[2U][30U]
#define IS31_CHIP2_CHANNEL32 u8IS31Data[2U][31U]
#define IS31_CHIP2_CHANNEL33 u8IS31Data[2U][32U]
#define IS31_CHIP2_CHANNEL34 u8IS31Data[2U][33U]
#define IS31_CHIP2_CHANNEL35 u8IS31Data[2U][34U]
#define IS31_CHIP2_CHANNEL36 u8IS31Data[2U][35U]
#endif
#if (IS31_CHIP_NUM >= 4U)
#define IS31_CHIP3_CHANNEL01 u8IS31Data[3U][0U]
#define IS31_CHIP3_CHANNEL02 u8IS31Data[3U][1U]
#define IS31_CHIP3_CHANNEL03 u8IS31Data[3U][2U]
#define IS31_CHIP3_CHANNEL04 u8IS31Data[3U][3U]
#define IS31_CHIP3_CHANNEL05 u8IS31Data[3U][4U]
#define IS31_CHIP3_CHANNEL06 u8IS31Data[3U][5U]
#define IS31_CHIP3_CHANNEL07 u8IS31Data[3U][6U]
#define IS31_CHIP3_CHANNEL08 u8IS31Data[3U][7U]
#define IS31_CHIP3_CHANNEL09 u8IS31Data[3U][8U]
#define IS31_CHIP3_CHANNEL10 u8IS31Data[3U][9U]
#define IS31_CHIP3_CHANNEL11 u8IS31Data[3U][10U]
#define IS31_CHIP3_CHANNEL12 u8IS31Data[3U][11U]
#define IS31_CHIP3_CHANNEL13 u8IS31Data[3U][12U]
#define IS31_CHIP3_CHANNEL14 u8IS31Data[3U][13U]
#define IS31_CHIP3_CHANNEL15 u8IS31Data[3U][14U]
#define IS31_CHIP3_CHANNEL16 u8IS31Data[3U][15U]
#define IS31_CHIP3_CHANNEL17 u8IS31Data[3U][16U]
#define IS31_CHIP3_CHANNEL18 u8IS31Data[3U][17U]
#define IS31_CHIP3_CHANNEL19 u8IS31Data[3U][18U]
#define IS31_CHIP3_CHANNEL20 u8IS31Data[3U][19U]
#define IS31_CHIP3_CHANNEL21 u8IS31Data[3U][20U]
#define IS31_CHIP3_CHANNEL22 u8IS31Data[3U][21U]
#define IS31_CHIP3_CHANNEL23 u8IS31Data[3U][22U]
#define IS31_CHIP3_CHANNEL24 u8IS31Data[3U][23U]
#define IS31_CHIP3_CHANNEL25 u8IS31Data[3U][24U]
#define IS31_CHIP3_CHANNEL26 u8IS31Data[3U][25U]
#define IS31_CHIP3_CHANNEL27 u8IS31Data[3U][26U]
#define IS31_CHIP3_CHANNEL28 u8IS31Data[3U][27U]
#define IS31_CHIP3_CHANNEL29 u8IS31Data[3U][28U]
#define IS31_CHIP3_CHANNEL30 u8IS31Data[3U][29U]
#define IS31_CHIP3_CHANNEL31 u8IS31Data[3U][30U]
#define IS31_CHIP3_CHANNEL32 u8IS31Data[3U][31U]
#define IS31_CHIP3_CHANNEL33 u8IS31Data[3U][32U]
#define IS31_CHIP3_CHANNEL34 u8IS31Data[3U][33U]
#define IS31_CHIP3_CHANNEL35 u8IS31Data[3U][34U]
#define IS31_CHIP3_CHANNEL36 u8IS31Data[3U][35U]
#endif
/*-------------------------------------------------------------------------------------------*/
typedef struct
{
uint8_t u8IS31Init;
uint8_t u8IS31Operation;
uint8_t u8IS31Step;
uint8_t u8IS31Refresh;
uint8_t u8IS31ChipCount;
uint8_t u8IS31ChannelCount;
uint8_t u8IS31ChannelBegin;
uint8_t u8IS31ChannelEnd;
uint8_t u8IS31ChannelWriteCount;
uint8_t u8IS31ChannelDataUpdate;
} IS31_Ctr_st_t;
/*------------------------------------------------------*/
extern IS31_Ctr_st_t stIS31Ctr;
extern void IS31_Set_SDB_Pin(uint8_t u8Level);
extern void IS31_Init(void);
extern void IS31_Shutdown(void);
/*主循环实时调用*/
extern void IS31_Service(void);
void IS31_Scan_Refresh_Test(void);
/*50ms调用一次*/
extern void IS31_Scan_Refresh(void);
void LED_OFF_Init(void);
void LED_ON_Init(void);
/*被打断时调用*/
extern void IS31_Break(void);
#endif
#ifndef LED_DRIVER_H__
#define LED_DRIVER_H__
#include "Simulated_IIC_2_Master.h"
/*
说明:
该LDE驱动兼容IS31FL3236和AW21036。
*/
#define LED_DRIVER_PLATFORM_16BIT 0U
#define LED_DRIVER_PLATFORM_32BIT 1U
#define LED_DRIVER_PLATFORM_SELECT LED_DRIVER_PLATFORM_32BIT
#if (LED_DRIVER_PLATFORM_SELECT == LED_DRIVER_PLATFORM_16BIT)
typedef unsigned char LED_Driver_uint8_t;
typedef unsigned int LED_Driver_uint16_t;
typedef unsigned long LED_Driver_uint32_t;
#define LED_DRIVER_INT_SIZE 2U
#define LED_DRIVER_ENUM_SIZE 2U
#elif (LED_DRIVER_PLATFORM_SELECT == LED_DRIVER_PLATFORM_32BIT)
typedef unsigned char LED_Driver_uint8_t;
typedef unsigned short LED_Driver_uint16_t;
typedef unsigned int LED_Driver_uint32_t;
#define LED_DRIVER_INT_SIZE 4U
#define LED_DRIVER_ENUM_SIZE 4U
#else
#error platform select error!!!
#endif
/*-------------------------------------------------------------------------------------------*/
typedef void (*LEDDriver_ShutdownPin_Set)(LED_Driver_uint8_t u8Level);
typedef struct
{
/*芯片数量*/
LED_Driver_uint8_t u8LEDDriverChipNum;
/*shutdown 引脚控制函数*/
LEDDriver_ShutdownPin_Set pfnLEDDriverShutdownPinSetCallBack;
/*3236芯片地址数组*/
const LED_Driver_uint8_t *pu8IS31ChipAddress;
/*21036芯片地址数组*/
const LED_Driver_uint8_t *pu8AW21036ChipAddress;
} LED_Driver_Par_st_t;
/*-------------------------------------------------------------------------------------------*/
/*芯片数量*/
#define LED_DRIVER_CHIP_NUM 1U
#define LED_DRIVER_FIXED_PART_LEN 40U
#define LED_DRIVER_VARIABLE_PART_LEN 36U
#define LED_DRIVER_RAM_LEN (LED_DRIVER_CHIP_NUM * LED_DRIVER_VARIABLE_PART_LEN * 2U + LED_DRIVER_FIXED_PART_LEN)
/*21036 芯片地址 */
#define AW21036_CHIP1_ADDRESS 0X68U /* AD_PIN~GND*/
#define AW21036_CHIP2_ADDRESS 0X6AU /* AD_PIN~VDD*/
#define AW21036_CHIP3_ADDRESS 0X6CU /* AD_PIN~SCL*/
#define AW21036_CHIP4_ADDRESS 0X6EU /* AD_PIN~SDA*/
/*3236 芯片地址 */
#define IS31_CHIP1_ADDRESS 0X78U /* AD_PIN~GND*/
#define IS31_CHIP2_ADDRESS 0X7EU /* AD_PIN~VDD*/
#define IS31_CHIP3_ADDRESS 0X7AU /* AD_PIN~SCL*/
#define IS31_CHIP4_ADDRESS 0X7CU /* AD_PIN~SDA*/
/*-------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*-------------以下为提供的接口函数--------------------------------------*/
/*上30电调用*/
extern void LED_Driver_Init_KL30(LED_Driver_uint8_t *pu8LEDDriverRamData, LED_Driver_Par_st_t *pstLEDInitPar);
/*唤醒时调用*/
extern void LED_Driver_Init_Wakeup(LED_Driver_uint8_t *pu8LEDDriverRamData, LED_Driver_Par_st_t *pstLEDInitPar);
/*休眠时调用*/
extern void LED_Driver_Init_Sleep(void);
/*主函数内实时调用*/
extern void LED_Driver_Service(void);
/*50ms调用一次*/
extern void LED_Driver_Scan_Refresh(void);
/*初始建议1S调用一次。如发生故障时恢复较慢,可更改为500ms,200ms,100ms均可。不建议更低*/
extern void LED_Driver_Work_Check(void);
/*具体操作函数,亮度设置
u8Chip:选择操作的芯片 0~~(LED_DRIVER_CHIP_NUM-1U)
u8Channel: 选择操作的通道 0~~35
u8Brightness:选择亮度 0:熄灭 , 255:最亮 。(根据具体灯选择一个合适的数值)
*/
extern void LED_Driver_Channel_Set(LED_Driver_uint8_t u8Chip, LED_Driver_uint8_t u8Channel, LED_Driver_uint8_t u8Brightness);
/*获取亮度,参数同上*/
extern LED_Driver_uint8_t LED_Driver_Channel_Get(LED_Driver_uint8_t u8Chip, LED_Driver_uint8_t u8Channel);
/*获取芯片当前状态 1表示已经进入休眠状态,0还没进入*/
extern LED_Driver_uint8_t LED_Driver_Status_Get(void);
/*-----------------------------------------------------------*/
extern LED_Driver_uint8_t u8LEDDriverRamData[LED_DRIVER_RAM_LEN];
extern const LED_Driver_uint8_t u8AW21036ChipAddress[LED_DRIVER_CHIP_NUM];
extern const LED_Driver_uint8_t u8IS31ChipAddress[LED_DRIVER_CHIP_NUM];
extern void LED_Driver_Shutdown_Pin_Set(LED_Driver_uint8_t u8Level);
#endif
#include "LED_Driver.h"
#include "GPIO.h"
#include <string.h>
/*注意需将u8LEDDriverRamData定义在休眠唤醒后不会被清空的RAM区域*/
LED_Driver_uint8_t u8LEDDriverRamData[LED_DRIVER_RAM_LEN];
const LED_Driver_uint8_t u8AW21036ChipAddress[LED_DRIVER_CHIP_NUM] = {
#if (LED_DRIVER_CHIP_NUM >= 1U)
AW21036_CHIP1_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 2U)
AW21036_CHIP2_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 3U)
AW21036_CHIP3_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 4U)
AW21036_CHIP4_ADDRESS,
#endif
};
const LED_Driver_uint8_t u8IS31ChipAddress[LED_DRIVER_CHIP_NUM] = {
#if (LED_DRIVER_CHIP_NUM >= 1U)
IS31_CHIP1_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 2U)
IS31_CHIP2_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 3U)
IS31_CHIP3_ADDRESS,
#endif
#if (LED_DRIVER_CHIP_NUM >= 4U)
IS31_CHIP4_ADDRESS,
#endif
};
/*设置shutdown引脚*/
void LED_Driver_Shutdown_Pin_Set(LED_Driver_uint8_t u8Level)
{
SDB_LED_DRIVER = u8Level;
}
GPIO_Config_st_t YZHDstGPIOConfig1;
void LED_Driver_Init(void)
{
uint8_t i=0;
LED_Driver_Par_st_t stLEDDriverPar;
/*
YZHDstGPIOConfig1.enGPIOPort = GPIO_PORT_GROUP_42;
YZHDstGPIOConfig1.enGPIOPIN = GPIO_PIN_0;
YZHDstGPIOConfig1.enGPIODrive = GPIO_Drive_Slow;
YZHDstGPIOConfig1.enGPIOCharacter = GPIO_Char_CMOS1;
YZHDstGPIOConfig1.enGPIOPull = GPIO_PULL_NONE;
YZHDstGPIOConfig1.enGPIOOutputValue = GPIO_Level_Low;
YZHDstGPIOConfig1.enGPIOMode = GPIO_MODE_PORT;
YZHDstGPIOConfig1.enGPIODir = GPIO_DIR_OUT;
YZHDstGPIOConfig1.enGPIOAltFun = GPIO_ALTER_FUN_1;
GPIO_Config(&YZHDstGPIOConfig1);
YZHDstGPIOConfig1.enGPIOPort = GPIO_PORT_GROUP_42;
YZHDstGPIOConfig1.enGPIOPIN = GPIO_PIN_1;
GPIO_Config(&YZHDstGPIOConfig1);
YZHDstGPIOConfig1.enGPIOPort = GPIO_PORT_GROUP_42;
YZHDstGPIOConfig1.enGPIOPIN = GPIO_PIN_2;
GPIO_Config(&YZHDstGPIOConfig1);
*/
stLEDDriverPar.pfnLEDDriverShutdownPinSetCallBack = LED_Driver_Shutdown_Pin_Set;
stLEDDriverPar.u8LEDDriverChipNum = LED_DRIVER_CHIP_NUM;
stLEDDriverPar.pu8IS31ChipAddress = u8IS31ChipAddress;
stLEDDriverPar.pu8AW21036ChipAddress = u8AW21036ChipAddress;
memset(u8LEDDriverRamData, 0, sizeof(u8LEDDriverRamData));
Simulated_IIC_2_Init();
LED_Driver_Init_KL30(u8LEDDriverRamData, &stLEDDriverPar);
}
#ifndef LED_DRIVER_INTERFACE_H
#define LED_DRIVER_INTERFACE_H
extern void LED_Driver_Init(void);
#endif
\ No newline at end of file
/****************************************************************************** /******************************************************************************
�� �� ����Simulated_IIC_Master.c 文 件 名:Simulated_IIC_Master.c
����������IO�˿�ģ���IIC(I2C)�����������ļ� 功能描述:IO端口模拟的IIC(I2C)主机函数库文件
�� �ߣ����� 作 者:张暄
�� ����V1.0 版 本:V1.0
�� �ڣ�2016.12.21 日 期:2016.12.21
******************************************************************************/ ******************************************************************************/
#include "Simulated_IIC_2_Master.h" #include "Simulated_IIC_2_Master.h"
#include "GPIO.h"
#include "rh850_macros.h" #include "rh850_macros.h"
uint8_t u8SimulatedIIC2ReceivedACK; uint8_t u8SimulatedIIC2ReceivedACK;
#define SIMULATED_IIC_2_SCL SDB_LED_SCL //SCL信号
#define SIMULATED_IIC_2_SCL_DIR SDB_LED_SCL_DIR //SCL方向
#define SIMULATED_IIC_2_OUT_SDA SDB_LED_SDA //SDA信号
#define SIMULATED_IIC_2_IN_SDA SDB_LED_SDA_IN
#define SIMULATED_IIC_2_SDA_DIR SDB_LED_SDA_DIR //SDA方向
/****************************************************************************** /******************************************************************************
��������IIC_Init 函数名:IIC_Init
�� �ܣ���ʼ��IIC���� 功 能:初始化IIC总线
�� ������ 参 数:无
����ֵ���� 返回值:无
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Init(void) void Simulated_IIC_2_Init(void)
{ {
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA������Ϊ����,IO��Ϊ����״̬,������SDA�ź���������������,��ʱSDA = 1 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
} }
/****************************************************************************** /******************************************************************************
��������IIC_Start 函数名:IIC_Start
�� �ܣ���IIC�����Ϸ�����ʼ�ź�,����һ��IICͨ�� 功 能:在IIC总线上发送起始信号,发起一次IIC通信
�� ������ 参 数:无
����ֵ���� 返回值:无
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Start(void) void Simulated_IIC_2_Start(void)
{ {
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA������Ϊ����,IO��Ϊ����״̬,������SDA�ź���������������,��ʱSDA = 1 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA���0,��ʱSDA = 0 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA输出0,此时SDA = 0
SIMULATED_IIC_2_OUT_SDA = 0; SIMULATED_IIC_2_OUT_SDA = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL���0,��ʱSCL = 0 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL输出0,此时SCL = 0
SIMULATED_IIC_2_SCL = 0; SIMULATED_IIC_2_SCL = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
} }
/****************************************************************************** /******************************************************************************
��������IIC_Stop 函数名:IIC_Stop
�� �ܣ���IIC�����Ϸ���ֹͣ�ź�,��ֹ��ǰIICͨ�� 功 能:在IIC总线上发送停止信号,终止当前IIC通信
�� ������ 参 数:无
����ֵ���� 返回值:无
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Stop(void) void Simulated_IIC_2_Stop(void)
{ {
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA���0,��ʱSDA = 0 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA输出0,此时SDA = 0
SIMULATED_IIC_2_OUT_SDA = 0; SIMULATED_IIC_2_OUT_SDA = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA������Ϊ����,IO��Ϊ����״̬,������SDA�ź���������������,��ʱSDA = 1
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay( );
} }
/****************************************************************************** /******************************************************************************
��������IIC_Transmit_Data 函数名:IIC_Transmit_Data
�� �ܣ���IIC�����Ϸ���1�ֽ����� 功 能:向IIC总线上发送1字节数据
�� ����Data�����͵����� 参 数:Data:发送的数据
����ֵ��������������ȷ��(ACK) 0 - ACK 1 - NAK 返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Transmit_Data(uint8_t Data) void Simulated_IIC_2_Transmit_Data(uint8_t Data)
{ {
uint8_t i; uint8_t i;
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
for (i = 0; i < 8; i++) for ( i = 0; i < 8; i++ )
{ {
if (Data & 0x80) if ( Data & 0x80 )
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA������Ϊ����,IO��Ϊ����״̬,������SDA�ź���������������,��ʱSDA = 1 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
else else
{ {
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA���0,��ʱSDA = 0 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA输出0,此时SDA = 0
SIMULATED_IIC_2_OUT_SDA = 0; SIMULATED_IIC_2_OUT_SDA = 0;
} }
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL���0,��ʱSCL = 0 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL输出0,此时SCL = 0
SIMULATED_IIC_2_SCL = 0; SIMULATED_IIC_2_SCL = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Data <<= 1; Data <<= 1;
} }
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //����SDAΪ����״̬ SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //设置SDA为输入状态
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_IN_SDA; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_IN_SDA;
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL���0,��ʱSCL = 0 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL输出0,此时SCL = 0
SIMULATED_IIC_2_SCL = 0; SIMULATED_IIC_2_SCL = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
} }
/****************************************************************************** /******************************************************************************
��������IIC_Receive_Data 函数名:IIC_Receive_Data
�� �ܣ���IIC�����Ͻ���1�ֽ����� 功 能:从IIC总线上接收1字节数据
�� ������ 参 数:无
����ֵ�����յ������� 返回值:接收到的数据
******************************************************************************/ ******************************************************************************/
uint8_t Simulated_IIC_2_Receive_Data(void) uint8_t Simulated_IIC_2_Receive_Data(void)
{ {
uint8_t i; uint8_t i;
uint8_t Data; uint8_t Data;
Data = 0; Data = 0;
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //����SDAΪ����״̬ SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //设置SDA为输入状态
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
for (i = 0; i < 8; i++) for ( i = 0; i < 8; i++ )
{ {
Data <<= 1; Data <<= 1;
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Data |= SIMULATED_IIC_2_IN_SDA; Data |= SIMULATED_IIC_2_IN_SDA;
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL���0,��ʱSCL = 0 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL输出0,此时SCL = 0
SIMULATED_IIC_2_SCL = 0; SIMULATED_IIC_2_SCL = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
} }
return Data; return Data;
} }
/****************************************************************************** /******************************************************************************
��������IIC_Transmit_ACK 函数名:IIC_Transmit_ACK
�� �ܣ���IIC�����Ϸ���ȷ���ź� 功 能:向IIC总线上发送确认信号
�� ����ACK��ȷ���źŵ����ͣ� SIMULATED_IIC_2_ACK �϶�Ӧ�� 参 数:ACK:确认信号的类型: SIMULATED_IIC_2_ACK 肯定应答
IIC_NAK ��Ӧ�� IIC_NAK 否定应答
����ֵ���� 返回值:无
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Transmit_ACK(uint8_t ACK) void Simulated_IIC_2_Transmit_ACK(uint8_t ACK)
{ {
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
if (ACK > SIMULATED_IIC_2_NAK) if ( ACK > SIMULATED_IIC_2_NAK )
return; return;
if (ACK) if ( ACK )
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA������Ϊ����,IO��Ϊ����״̬,������SDA�ź���������������,��ʱSDA = 1 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
else else
{ {
SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA���0,��ʱSDA = 0 SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; //SDA输出0,此时SDA = 0
SIMULATED_IIC_2_OUT_SDA = 0; SIMULATED_IIC_2_OUT_SDA = 0;
} }
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL������Ϊ����,IO��Ϊ����״̬,������SCL�ź���������������,��ʱSCL = 1 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL���0,��ʱSCL = 0 SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; //SCL输出0,此时SCL = 0
SIMULATED_IIC_2_SCL = 0; SIMULATED_IIC_2_SCL = 0;
Simulated_IIC_2_Delay(); Simulated_IIC_2_Delay( );
} }
/****************************************************************************** /******************************************************************************
��������IIC_Receive_ACK 函数名:IIC_Receive_ACK
�� �ܣ���ȡ�������Ͻ��յ���ȷ���ź� 功 能:获取从总线上接收到的确认信号
�� ������ 参 数:无
����ֵ��������������ȷ���ź����ͣ�Simulated_IIC_ACK �϶�Ӧ�� 返回值:总线上器件的确认信号类型:Simulated_IIC_ACK 肯定应答
SIMULATED_IIC_2_NAK ��Ӧ�� SIMULATED_IIC_2_NAK 否定应答
IIC_INVALID_ACK ��Ч��Ӧ���ź�(Ӧ���źŻ�δ�յ�) IIC_INVALID_ACK 无效的应答信号(应答信号还未收到)
******************************************************************************/ ******************************************************************************/
uint8_t Simulated_IIC_2_Receive_ACK(void) uint8_t Simulated_IIC_2_Receive_ACK(void)
{ {
uint8_t ACK; uint8_t ACK;
ACK = u8SimulatedIIC2ReceivedACK; ACK = u8SimulatedIIC2ReceivedACK;
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK; u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
return ACK; return ACK;
} }
/****************************************************************************** /******************************************************************************
��������IIC_Delay 函数名:IIC_Delay
�� �ܣ���ʱ5us,�����շ������е�ʱ����� 功 能:延时5us,用于收发过程中的时序控制
ע�⣺�������IIC_5us_DELAY_CALIBRATION����У׼��ʱʱ����5us���� 注意:必须调整IIC_5us_DELAY_CALIBRATION参数校准延时时间在5us左右
�� ����ACK��ȷ���źŵ����� 0 - ACK 1 - NAK 参 数:ACK:确认信号的类型 0 - ACK 1 - NAK
����ֵ���� 返回值:无
******************************************************************************/ ******************************************************************************/
void Simulated_IIC_2_Delay(void) void Simulated_IIC_2_Delay(void)
{ {
uint8_t i; uint8_t i;
for (i = 0; i < SIMULATED_IIC_2_FREQ_CALIBRATION; i++) for ( i = 0; i < SIMULATED_IIC_2_FREQ_CALIBRATION; i++ )
nop(); {
nop( );
}
} }
/****************************************************************************** /******************************************************************************
�� �� ����Simulated_IIC_Master.h 文 件 名:Simulated_IIC_Master.h
����������IO�˿�ģ���IIC(I2C)����������ͷ�ļ� 功能描述:IO端口模拟的IIC(I2C)主机函数库头文件
�� �ߣ����� 作 者:张暄
�� ����V1.0 版 本:V1.0
�� �ڣ�2016.12.21 日 期:2016.12.21
******************************************************************************/ ******************************************************************************/
#ifndef SIMULATED_IIC_2_MASTER_H__ #ifndef SIMULATED_IIC_2_MASTER_H__
#define SIMULATED_IIC_2_MASTER_H__ #define SIMULATED_IIC_2_MASTER_H__
#include "GPIO.h" #include "TYW_stdint.h"
#include "r_typedefs.h" //#include "GPIO.h"
/****************************************************************************** /******************************************************************************
1us��ʱУ׼ 1us延时校准
******************************************************************************/ ******************************************************************************/
#define SIMULATED_IIC_2_FREQ_CALIBRATION 40U #define SIMULATED_IIC_2_FREQ_CALIBRATION 80U
/****************************************************************************** /******************************************************************************
ȷ���ź� 确认信号
******************************************************************************/ ******************************************************************************/
#define SIMULATED_IIC_2_ACK 0U //�϶�Ӧ�� #define SIMULATED_IIC_2_ACK 0U //肯定应答
#define SIMULATED_IIC_2_NAK 1U //��Ӧ�� #define SIMULATED_IIC_2_NAK 1U //否定应答
#define SIMULATED_IIC_2_INVALID_ACK 2U //��Ч��Ӧ���ź�(Ӧ���źŻ�δ�յ�) #define SIMULATED_IIC_2_INVALID_ACK 2U //无效的应答信号(应答信号还未收到)
/****************************************************************************** /******************************************************************************
���Ŷ��� 引脚定义
******************************************************************************/ ******************************************************************************/
#define SIMULATED_IIC_2_SCL GPIO_OUT_PORT42_PIN01 //SCL�ź� #define SDB_LED_DRIVER GPIO_OUT_PORT42_PIN02
#define SIMULATED_IIC_2_SCL_DIR GPIO_DIR_PORT42_PIN01 //SCL���� #define SDB_LED_SDA GPIO_OUT_PORT42_PIN00
#define SIMULATED_IIC_2_OUT_SDA GPIO_OUT_PORT42_PIN00 //SDA�ź� #define SDB_LED_SDA_IN GPIO_IN_PORT42_PIN00
#define SIMULATED_IIC_2_IN_SDA GPIO_IN_PORT42_PIN00 #define SDB_LED_SDA_DIR GPIO_DIR_PORT42_PIN00
#define SIMULATED_IIC_2_SDA_DIR GPIO_DIR_PORT42_PIN00 //SDA���� #define SDB_LED_SCL_DIR GPIO_DIR_PORT42_PIN01
#define SDB_LED_SCL GPIO_OUT_PORT42_PIN01
#define SDB_LED_SCL_IN GPIO_IN_PORT42_PIN01
/****************************************************************************** /******************************************************************************
�������� 函数声明
******************************************************************************/ ******************************************************************************/
extern void Simulated_IIC_2_Init(void); void Simulated_IIC_2_Init(void);
extern void Simulated_IIC_2_Start(void); void Simulated_IIC_2_Start(void);
extern void Simulated_IIC_2_Stop(void); void Simulated_IIC_2_Stop(void);
extern void Simulated_IIC_2_Transmit_Data(uint8_t Data); void Simulated_IIC_2_Transmit_Data(uint8_t Data);
extern uint8_t Simulated_IIC_2_Receive_Data(void); uint8_t Simulated_IIC_2_Receive_Data(void);
extern void Simulated_IIC_2_Transmit_ACK(uint8_t ACK); void Simulated_IIC_2_Transmit_ACK(uint8_t ACK);
extern uint8_t Simulated_IIC_2_Receive_ACK(void); uint8_t Simulated_IIC_2_Receive_ACK(void);
extern void Simulated_IIC_2_Delay(void); void Simulated_IIC_2_Delay(void);
/*void Simulated_IIC_2_Slave_Service(void);*/
#endif #endif
\ No newline at end of file
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
#include "Maintenance.h" #include "Maintenance.h"
#include "Data_FuelConsump.h" #include "Data_FuelConsump.h"
#include "IS31FL3236.h" #include "LED_Driver.h"
#include "TimerB.h" #include "TimerB.h"
#include "BU98R10.h" #include "BU98R10.h"
...@@ -111,10 +111,9 @@ void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void) ...@@ -111,10 +111,9 @@ void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void)
Power_Management_Service(); Power_Management_Service();
DoCAN_Communication_Service(); DoCAN_Communication_Service();
UDS_Server_Application_Service(); UDS_Server_Application_Service();
IS31_Service(); LED_Driver_Service();
BU98R10_Update_Service(); BU98R10_Update_Service();
Diagnosis_main(); Diagnosis_main();
} }
/*============================================================================*/ /*============================================================================*/
...@@ -228,7 +227,7 @@ void Sys_Run_Mode_50ms_Tasks(void) ...@@ -228,7 +227,7 @@ void Sys_Run_Mode_50ms_Tasks(void)
Speed_PPK_Processing(); Speed_PPK_Processing();
Sound_Scheduling_Service(); Sound_Scheduling_Service();
// BGTask(); // BGTask();
IS31_Scan_Refresh(); LED_Driver_Scan_Refresh();
Drive_Info_IC1_STATUS_Rx(); Drive_Info_IC1_STATUS_Rx();
Drive_Info_IC3_STATUS_Rx(); Drive_Info_IC3_STATUS_Rx();
...@@ -255,6 +254,7 @@ void Sys_Run_Mode_100ms_Tasks(void) ...@@ -255,6 +254,7 @@ void Sys_Run_Mode_100ms_Tasks(void)
// External_Influence_ENERGY_RECOVERY_LEVEL_Select(); // External_Influence_ENERGY_RECOVERY_LEVEL_Select();
// LongTimeNoKey_Operation(); // LongTimeNoKey_Operation();
// Menu_Get_Battery_Sts_Exist(); // Menu_Get_Battery_Sts_Exist();
LED_Driver_Work_Check();
Popups_Management_Service(); Popups_Management_Service();
Popup_Scheduling_Service(); Popup_Scheduling_Service();
Popup_Alone_Sound_Server(); Popup_Alone_Sound_Server();
......
...@@ -481,9 +481,9 @@ ...@@ -481,9 +481,9 @@
#define SCL1_MCU_OUT GPIO_OUT_PORT17_PIN10 #define SCL1_MCU_OUT GPIO_OUT_PORT17_PIN10
#define SD1_MCU_OUT GPIO_OUT_PORT17_PIN11 #define SD1_MCU_OUT GPIO_OUT_PORT17_PIN11
#define T7_LED_OUT GPIO_OUT_PORT22_PIN10 #define T7_LED_OUT GPIO_OUT_PORT22_PIN10
#define I2C2_3236SDA_MCU GPIO_OUT_PORT42_PIN00 //#define I2C2_3236SDA_MCU GPIO_OUT_PORT42_PIN00
#define I2C2_3236SCL_MCU GPIO_OUT_PORT42_PIN01 //#define I2C2_3236SCL_MCU GPIO_OUT_PORT42_PIN01
#define D_3236SDB_MCU GPIO_OUT_PORT42_PIN02 //#define D_3236SDB_MCU GPIO_OUT_PORT42_PIN02
#define Water_Temp_Led_R_MCU_OUT GPIO_OUT_PORT42_PIN04 #define Water_Temp_Led_R_MCU_OUT GPIO_OUT_PORT42_PIN04
#define TRAILER_ABS_LED_MCU_OUT GPIO_OUT_PORT42_PIN05 #define TRAILER_ABS_LED_MCU_OUT GPIO_OUT_PORT42_PIN05
#define ACC5V_LED_PWM_MCU GPIO_OUT_PORT42_PIN06 #define ACC5V_LED_PWM_MCU GPIO_OUT_PORT42_PIN06
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment