Commit afdc20fa authored by 赵康弘's avatar 赵康弘

perf: 高边输出驱动控制

parent f6475d94
#include "SGM4591Q.h"
#include "Simulated_IIC_1_Master.h"
#include "Simulated_IIC_2_Master.h"
/*PIN端口控制命令*/
uint8_t SGM4591Q_Chip1_1_PIN0=0;
uint8_t SGM4591Q_Chip1_1_PIN1=0;
uint8_t SGM4591Q_Chip1_2_PIN0=0;
uint8_t SGM4591Q_Chip1_2_PIN1=0;
uint8_t SGM4591Q_Chip1_3_PIN0=0;
uint8_t SGM4591Q_Chip1_3_PIN1=0;
uint8_t SGM4591Q_Chip1_4_PIN0=0;
uint8_t SGM4591Q_Chip1_4_PIN1=0;
uint8_t SGM4591Q_Chip2_1_PIN0=0;
uint8_t SGM4591Q_Chip2_1_PIN1=0;
uint8_t SGM4591Q_Chip2_2_PIN0=0;
uint8_t SGM4591Q_Chip2_2_PIN1=0;
uint8_t SGM4591Q_Chip2_3_PIN0=0;
uint8_t SGM4591Q_Chip2_3_PIN1=0;
uint8_t SGM4591Q_Chip2_4_PIN0=0;
uint8_t SGM4591Q_Chip2_4_PIN1=0;
uint8_t SGM4591Q_Chip3_1_PIN0=0;
uint8_t SGM4591Q_Chip3_1_PIN1=0;
uint8_t SGM4591Q_Chip3_2_PIN0=0;
uint8_t SGM4591Q_Chip3_2_PIN1=0;
uint8_t SGM4591Q_Chip3_3_PIN0=0;
uint8_t SGM4591Q_Chip3_3_PIN1=0;
uint8_t SGM4591Q_Chip3_4_PIN0=0;
uint8_t SGM4591Q_Chip3_4_PIN1=0;
uint8_t SGM4591Q_Chip4_1_PIN0=0;
uint8_t SGM4591Q_Chip4_1_PIN1=0;
uint8_t SGM4591Q_Chip4_2_PIN0=0;
uint8_t SGM4591Q_Chip4_2_PIN1=0;
uint8_t SGM4591Q_Chip4_3_PIN0=0;
uint8_t SGM4591Q_Chip4_3_PIN1=0;
uint8_t SGM4591Q_Chip4_4_PIN0=0;
uint8_t SGM4591Q_Chip4_4_PIN1=0;
#include "Simulated_IIC_3_Master.h"
#include "Simulated_IIC_4_Master.h"
/*发送*/
void SGM4591Q_IIC_Send(uint8_t Address, uint8_t Register, uint8_t Function)
void SGM4591Q_IIC1_Send(uint8_t Address, uint8_t Register, uint8_t Function)
{
uint8_t u8Ack;
/*开始*/
Simulated_IIC_1_Start();
/*地址*/
Simulated_IIC_1_Transmit_Data(Address);
/*ACK*/
u8Ack = Simulated_IIC_1_Receive_ACK();
/*寄存器*/
Simulated_IIC_1_Transmit_Data(Register);
/*控制数据*/
Simulated_IIC_1_Transmit_Data(Function);
/*停止*/
Simulated_IIC_1_Stop();
}
/*发送*/
void SGM4591Q_IIC2_Send(uint8_t Address, uint8_t Register, uint8_t Function)
{
uint8_t u8Ack;
/*开始*/
......@@ -57,6 +41,40 @@ void SGM4591Q_IIC_Send(uint8_t Address, uint8_t Register, uint8_t Function)
/*停止*/
Simulated_IIC_2_Stop();
}
/*发送*/
void SGM4591Q_IIC3_Send(uint8_t Address, uint8_t Register, uint8_t Function)
{
uint8_t u8Ack;
/*开始*/
Simulated_IIC_3_Start();
/*地址*/
Simulated_IIC_3_Transmit_Data(Address);
/*ACK*/
u8Ack = Simulated_IIC_3_Receive_ACK();
/*寄存器*/
Simulated_IIC_3_Transmit_Data(Register);
/*控制数据*/
Simulated_IIC_3_Transmit_Data(Function);
/*停止*/
Simulated_IIC_3_Stop();
}
/*发送*/
void SGM4591Q_IIC4_Send(uint8_t Address, uint8_t Register, uint8_t Function)
{
uint8_t u8Ack;
/*开始*/
Simulated_IIC_4_Start();
/*地址*/
Simulated_IIC_4_Transmit_Data(Address);
/*ACK*/
u8Ack = Simulated_IIC_4_Receive_ACK();
/*寄存器*/
Simulated_IIC_4_Transmit_Data(Register);
/*控制数据*/
Simulated_IIC_4_Transmit_Data(Function);
/*停止*/
Simulated_IIC_4_Stop();
}
/*接收*/
void SGM4591Q_IIC_Receive(void)
{
......@@ -71,28 +89,100 @@ void SGM4591Q_Init(void);
void SGM4591Q_Init(void)
{
/*U59:A0低,A1低*/
SGM4591Q_IIC_Send(0xE8, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC_Send(0xE8, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC_Send(0xE8, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC_Send(0xE8, 0x09, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xE8, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC1_Send(0xE8, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC1_Send(0xE8, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xE8, 0x09, 0xFF);/*推挽输出*/
/*U71:A0低,A1高*/
SGM4591Q_IIC_Send(0xEC, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC_Send(0xEC, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC_Send(0xEC, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC_Send(0xEC, 0x09, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEC, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC1_Send(0xEC, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC1_Send(0xEC, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEC, 0x09, 0xFF);/*推挽输出*/
/*U72:A0高,A1低*/
SGM4591Q_IIC_Send(0xEA, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC_Send(0xEA, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC_Send(0xEA, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC_Send(0xEA, 0x09, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEA, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC1_Send(0xEA, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC1_Send(0xEA, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEA, 0x09, 0xFF);/*推挽输出*/
/*U69:A0高,A1高*/
SGM4591Q_IIC_Send(0xEE, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC_Send(0xEE, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC_Send(0xEE, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC_Send(0xEE, 0x09, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEE, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC1_Send(0xEE, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC1_Send(0xEE, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC1_Send(0xEE, 0x09, 0xFF);/*推挽输出*/
/***********************************************************/
/*U62:A0低,A1低*/
SGM4591Q_IIC2_Send(0xE8, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC2_Send(0xE8, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC2_Send(0xE8, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC2_Send(0xE8, 0x09, 0xFF);/*推挽输出*/
/*U64:A0低,A1高*/
SGM4591Q_IIC2_Send(0xEC, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC2_Send(0xEC, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC2_Send(0xEC, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC2_Send(0xEC, 0x09, 0xFF);/*推挽输出*/
/*U70:A0高,A1低*/
SGM4591Q_IIC2_Send(0xEA, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC2_Send(0xEA, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC2_Send(0xEA, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC2_Send(0xEA, 0x09, 0xFF);/*推挽输出*/
/*U76:A0高,A1高*/
SGM4591Q_IIC2_Send(0xEE, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC2_Send(0xEE, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC2_Send(0xEE, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC2_Send(0xEE, 0x09, 0xFF);/*推挽输出*/
/***********************************************************/
/*U61:A0低,A1低*/
SGM4591Q_IIC3_Send(0xE8, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC3_Send(0xE8, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC3_Send(0xE8, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC3_Send(0xE8, 0x09, 0xFF);/*推挽输出*/
/*U74:A0低,A1高*/
SGM4591Q_IIC3_Send(0xEC, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC3_Send(0xEC, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC3_Send(0xEC, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC3_Send(0xEC, 0x09, 0xFF);/*推挽输出*/
/*U67:A0高,A1低*/
SGM4591Q_IIC3_Send(0xEA, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC3_Send(0xEA, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC3_Send(0xEA, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC3_Send(0xEA, 0x09, 0xFF);/*推挽输出*/
/*U66:A0高,A1高*/
SGM4591Q_IIC3_Send(0xEE, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC3_Send(0xEE, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC3_Send(0xEE, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC3_Send(0xEE, 0x09, 0xFF);/*推挽输出*/
/***********************************************************/
/*U60:A0低,A1低*/
SGM4591Q_IIC4_Send(0xE8, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC4_Send(0xE8, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC4_Send(0xE8, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC4_Send(0xE8, 0x09, 0xFF);/*推挽输出*/
/*U75:A0低,A1高*/
SGM4591Q_IIC4_Send(0xEC, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC4_Send(0xEC, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC4_Send(0xEC, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC4_Send(0xEC, 0x09, 0xFF);/*推挽输出*/
/*U77:A0高,A1低*/
SGM4591Q_IIC4_Send(0xEA, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC4_Send(0xEA, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC4_Send(0xEA, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC4_Send(0xEA, 0x09, 0xFF);/*推挽输出*/
/*U65:A0高,A1高*/
SGM4591Q_IIC4_Send(0xEE, 0x06, 0);/*P0组引脚为输出*/
SGM4591Q_IIC4_Send(0xEE, 0x07, 0);/*P1组引脚为输出*/
SGM4591Q_IIC4_Send(0xEE, 0x08, 0xFF);/*推挽输出*/
SGM4591Q_IIC4_Send(0xEE, 0x09, 0xFF);/*推挽输出*/
}
uint8_t SGM4591Q_U7_Out_P0 = 0xFF;
......@@ -127,94 +217,373 @@ void SGM4591Q_Control(void)
// if (SGM4591Q_U7_Out_Keep_P0 != SGM4591Q_U7_Out_P0)
// {
// SGM4591Q_IIC_Send(0xEA, 0x02, SGM4591Q_U7_Out_P0);
// SGM4591Q_IIC2_Send(0xEA, 0x02, SGM4591Q_U7_Out_P0);
// SGM4591Q_U7_Out_Keep_P0 = SGM4591Q_U7_Out_P0;
// }
// if (SGM4591Q_U7_Out_Keep_P1 != SGM4591Q_U7_Out_P1)
// {
// SGM4591Q_IIC_Send(0xEA, 0x03, SGM4591Q_U7_Out_P1);
// SGM4591Q_IIC2_Send(0xEA, 0x03, SGM4591Q_U7_Out_P1);
// SGM4591Q_U7_Out_Keep_P1 = SGM4591Q_U7_Out_P1;
// }
if (SGM4591Q_U9_Out_Keep_P0 != SGM4591Q_U9_Out_P0)
{
/*设置端口输出电平高低*/
SGM4591Q_IIC_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
SGM4591Q_IIC2_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
SGM4591Q_U9_Out_Keep_P0 = SGM4591Q_U9_Out_P0;
}
if (SGM4591Q_U9_Out_Keep_P1 != SGM4591Q_U9_Out_P1)
{
/*设置端口输出电平高低*/
SGM4591Q_IIC_Send(0xE8, 0x03, SGM4591Q_U9_Out_P1);
SGM4591Q_IIC2_Send(0xE8, 0x03, SGM4591Q_U9_Out_P1);
SGM4591Q_U9_Out_Keep_P1 = SGM4591Q_U9_Out_P1;
}
}
uint8_t SGM4591Q_Chip1_1_Segment0_Last;
uint8_t SGM4591Q_Chip1_1_Segment1_Last;
uint8_t SGM4591Q_Chip1_2_Segment0_Last;
uint8_t SGM4591Q_Chip1_2_Segment1_Last;
uint8_t SGM4591Q_Chip1_3_Segment0_Last;
uint8_t SGM4591Q_Chip1_3_Segment1_Last;
uint8_t SGM4591Q_Chip1_4_Segment0_Last;
uint8_t SGM4591Q_Chip1_4_Segment1_Last;
uint8_t SGM4591Q_Chip2_1_Segment0_Last;
uint8_t SGM4591Q_Chip2_1_Segment1_Last;
uint8_t SGM4591Q_Chip2_2_Segment0_Last;
uint8_t SGM4591Q_Chip2_2_Segment1_Last;
uint8_t SGM4591Q_Chip2_3_Segment0_Last;
uint8_t SGM4591Q_Chip2_3_Segment1_Last;
uint8_t SGM4591Q_Chip2_4_Segment0_Last;
uint8_t SGM4591Q_Chip2_4_Segment1_Last;
uint8_t SGM4591Q_Chip3_1_Segment0_Last;
uint8_t SGM4591Q_Chip3_1_Segment1_Last;
uint8_t SGM4591Q_Chip3_2_Segment0_Last;
uint8_t SGM4591Q_Chip3_2_Segment1_Last;
uint8_t SGM4591Q_Chip3_3_Segment0_Last;
uint8_t SGM4591Q_Chip3_3_Segment1_Last;
uint8_t SGM4591Q_Chip3_4_Segment0_Last;
uint8_t SGM4591Q_Chip3_4_Segment1_Last;
uint8_t SGM4591Q_Chip4_1_Segment0_Last;
uint8_t SGM4591Q_Chip4_1_Segment1_Last;
uint8_t SGM4591Q_Chip4_2_Segment0_Last;
uint8_t SGM4591Q_Chip4_2_Segment1_Last;
uint8_t SGM4591Q_Chip4_3_Segment0_Last;
uint8_t SGM4591Q_Chip4_3_Segment1_Last;
uint8_t SGM4591Q_Chip4_4_Segment0_Last;
uint8_t SGM4591Q_Chip4_4_Segment1_Last;
/*多次对引脚的控制,后面的操作不能影响之前的控制*/
/*
Chip:片选
Segment:段P0/P1
PIN:端口0--7
*/
void SGM4591Q_Global_Control(uint8_t Chip, uint8_t Segment, uint8_t PIN)
void SGM4591Q_Global_Control(uint8_t Chip, uint8_t Segment)
{
switch (Chip)
{
case SGM4591Q_Chip1_1:
if (Segment==SGM4591Q_Segment0)
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_1_Segment0.UINT8 != SGM4591Q_Chip1_1_Segment0_Last)
{
SGM4591Q_IIC_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
SGM4591Q_IIC2_Send(0xE8, 0x02, SGM4591Q_Chip1_1_Segment0.UINT8);
SGM4591Q_Chip1_1_Segment0_Last = SGM4591Q_Chip1_1_Segment0.UINT8;
}
}
else
{
SGM4591Q_IIC_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
if (SGM4591Q_Chip1_1_Segment1.UINT8 != SGM4591Q_Chip1_1_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x03, SGM4591Q_Chip1_1_Segment1.UINT8);
SGM4591Q_Chip1_1_Segment1_Last = SGM4591Q_Chip1_1_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip1_2:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_2_Segment0.UINT8 != SGM4591Q_Chip1_2_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x02, SGM4591Q_Chip1_2_Segment0.UINT8);
SGM4591Q_Chip1_2_Segment0_Last = SGM4591Q_Chip1_2_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_2_Segment1.UINT8 != SGM4591Q_Chip1_2_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x03, SGM4591Q_Chip1_2_Segment1.UINT8);
SGM4591Q_Chip1_2_Segment1_Last = SGM4591Q_Chip1_2_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip1_3:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_3_Segment0.UINT8 != SGM4591Q_Chip1_3_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x02, SGM4591Q_Chip1_3_Segment0.UINT8);
SGM4591Q_Chip1_3_Segment0_Last = SGM4591Q_Chip1_3_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_3_Segment1.UINT8 != SGM4591Q_Chip1_3_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x03, SGM4591Q_Chip1_3_Segment1.UINT8);
SGM4591Q_Chip1_3_Segment1_Last = SGM4591Q_Chip1_3_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip1_4:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_4_Segment0.UINT8 != SGM4591Q_Chip1_4_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x02, SGM4591Q_Chip1_4_Segment0.UINT8);
SGM4591Q_Chip1_4_Segment0_Last = SGM4591Q_Chip1_4_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_4_Segment1.UINT8 != SGM4591Q_Chip1_4_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x03, SGM4591Q_Chip1_4_Segment1.UINT8);
SGM4591Q_Chip1_4_Segment1_Last = SGM4591Q_Chip1_4_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip2_1:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip2_1_Segment0.UINT8 != SGM4591Q_Chip2_1_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x02, SGM4591Q_Chip2_1_Segment0.UINT8);
SGM4591Q_Chip2_1_Segment0_Last = SGM4591Q_Chip2_1_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip2_1_Segment1.UINT8 != SGM4591Q_Chip2_1_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x03, SGM4591Q_Chip2_1_Segment1.UINT8);
SGM4591Q_Chip2_1_Segment1_Last = SGM4591Q_Chip2_1_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip2_2:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip2_2_Segment0.UINT8 != SGM4591Q_Chip2_2_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x02, SGM4591Q_Chip2_2_Segment0.UINT8);
SGM4591Q_Chip2_2_Segment0_Last = SGM4591Q_Chip2_2_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip2_2_Segment1.UINT8 != SGM4591Q_Chip2_2_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x03, SGM4591Q_Chip2_2_Segment1.UINT8);
SGM4591Q_Chip2_2_Segment1_Last = SGM4591Q_Chip2_2_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip2_3:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip2_3_Segment0.UINT8 != SGM4591Q_Chip2_3_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x02, SGM4591Q_Chip2_3_Segment0.UINT8);
SGM4591Q_Chip2_3_Segment0_Last = SGM4591Q_Chip2_3_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip2_3_Segment1.UINT8 != SGM4591Q_Chip2_3_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x03, SGM4591Q_Chip2_3_Segment1.UINT8);
SGM4591Q_Chip2_3_Segment1_Last = SGM4591Q_Chip2_3_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip2_4:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_4_Segment0.UINT8 != SGM4591Q_Chip1_4_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x02, SGM4591Q_Chip1_4_Segment0.UINT8);
SGM4591Q_Chip1_4_Segment0_Last = SGM4591Q_Chip1_4_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_4_Segment1.UINT8 != SGM4591Q_Chip1_4_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x03, SGM4591Q_Chip1_4_Segment1.UINT8);
SGM4591Q_Chip1_4_Segment1_Last = SGM4591Q_Chip1_4_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip3_1:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip3_1_Segment0.UINT8 != SGM4591Q_Chip3_1_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x02, SGM4591Q_Chip3_1_Segment0.UINT8);
SGM4591Q_Chip3_1_Segment0_Last = SGM4591Q_Chip3_1_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip3_1_Segment1.UINT8 != SGM4591Q_Chip3_1_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x03, SGM4591Q_Chip3_1_Segment1.UINT8);
SGM4591Q_Chip3_1_Segment1_Last = SGM4591Q_Chip3_1_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip3_2:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip3_2_Segment0.UINT8 != SGM4591Q_Chip3_2_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x02, SGM4591Q_Chip3_2_Segment0.UINT8);
SGM4591Q_Chip3_2_Segment0_Last = SGM4591Q_Chip3_2_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip3_2_Segment1.UINT8 != SGM4591Q_Chip3_2_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x03, SGM4591Q_Chip3_2_Segment1.UINT8);
SGM4591Q_Chip3_2_Segment1_Last = SGM4591Q_Chip3_2_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip3_3:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip3_3_Segment0.UINT8 != SGM4591Q_Chip3_3_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x02, SGM4591Q_Chip3_3_Segment0.UINT8);
SGM4591Q_Chip3_3_Segment0_Last = SGM4591Q_Chip3_3_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip3_3_Segment1.UINT8 != SGM4591Q_Chip3_3_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x03, SGM4591Q_Chip3_3_Segment1.UINT8);
SGM4591Q_Chip3_3_Segment1_Last = SGM4591Q_Chip3_3_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip3_4:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_4_Segment0.UINT8 != SGM4591Q_Chip1_4_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x02, SGM4591Q_Chip1_4_Segment0.UINT8);
SGM4591Q_Chip1_4_Segment0_Last = SGM4591Q_Chip1_4_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_4_Segment1.UINT8 != SGM4591Q_Chip1_4_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x03, SGM4591Q_Chip1_4_Segment1.UINT8);
SGM4591Q_Chip1_4_Segment1_Last = SGM4591Q_Chip1_4_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip4_1:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip4_1_Segment0.UINT8 != SGM4591Q_Chip4_1_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x02, SGM4591Q_Chip4_1_Segment0.UINT8);
SGM4591Q_Chip4_1_Segment0_Last = SGM4591Q_Chip4_1_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip4_1_Segment1.UINT8 != SGM4591Q_Chip4_1_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xE8, 0x03, SGM4591Q_Chip4_1_Segment1.UINT8);
SGM4591Q_Chip4_1_Segment1_Last = SGM4591Q_Chip4_1_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip4_2:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip4_2_Segment0.UINT8 != SGM4591Q_Chip4_2_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x02, SGM4591Q_Chip4_2_Segment0.UINT8);
SGM4591Q_Chip4_2_Segment0_Last = SGM4591Q_Chip4_2_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip4_2_Segment1.UINT8 != SGM4591Q_Chip4_2_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEC, 0x03, SGM4591Q_Chip4_2_Segment1.UINT8);
SGM4591Q_Chip4_2_Segment1_Last = SGM4591Q_Chip4_2_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip4_3:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip4_3_Segment0.UINT8 != SGM4591Q_Chip4_3_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x02, SGM4591Q_Chip4_3_Segment0.UINT8);
SGM4591Q_Chip4_3_Segment0_Last = SGM4591Q_Chip4_3_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip4_3_Segment1.UINT8 != SGM4591Q_Chip4_3_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEA, 0x03, SGM4591Q_Chip4_3_Segment1.UINT8);
SGM4591Q_Chip4_3_Segment1_Last = SGM4591Q_Chip4_3_Segment1.UINT8;
}
}
break;
case SGM4591Q_Chip4_4:
if (Segment == SGM4591Q_Segment0)
{
if (SGM4591Q_Chip1_4_Segment0.UINT8 != SGM4591Q_Chip1_4_Segment0_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x02, SGM4591Q_Chip1_4_Segment0.UINT8);
SGM4591Q_Chip1_4_Segment0_Last = SGM4591Q_Chip1_4_Segment0.UINT8;
}
}
else
{
if (SGM4591Q_Chip1_4_Segment1.UINT8 != SGM4591Q_Chip1_4_Segment1_Last)
{
SGM4591Q_IIC2_Send(0xEE, 0x03, SGM4591Q_Chip1_4_Segment1.UINT8);
SGM4591Q_Chip1_4_Segment1_Last = SGM4591Q_Chip1_4_Segment1.UINT8;
}
}
break;
......
......@@ -28,16 +28,59 @@ typedef enum
SGM4591Q_Segment1,
} SGM4591Q_Segment;
/*SGM4591Q端口*/
#define SGM4591Q_PIN0 0x01u
#define SGM4591Q_PIN1 0x02u
#define SGM4591Q_PIN2 0x04u
#define SGM4591Q_PIN3 0x08u
#define SGM4591Q_PIN4 0x10u
#define SGM4591Q_PIN5 0x20u
#define SGM4591Q_PIN6 0x40u
#define SGM4591Q_PIN7 0x80u
typedef struct
{
uint8_t PIN_0 : 1;
uint8_t PIN_1 : 1;
uint8_t PIN_2 : 1;
uint8_t PIN_3 : 1;
uint8_t PIN_4 : 1;
uint8_t PIN_5 : 1;
uint8_t PIN_6 : 1;
uint8_t PIN_7 : 1;
} SGM4591Q_Bit_st;
typedef union
{
uint8_t UINT8;
SGM4591Q_Bit_st BIT;
} SGM4591Q_Pin_en;
/*PIN端口控制命令*/
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_1_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_1_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_2_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_2_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_3_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_3_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_4_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip1_4_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_1_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_1_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_2_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_2_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_3_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_3_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_4_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip2_4_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_1_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_1_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_2_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_2_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_3_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_3_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_4_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip3_4_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_1_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_1_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_2_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_2_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_3_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_3_Segment1;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_4_Segment0;
extern volatile SGM4591Q_Pin_en SGM4591Q_Chip4_4_Segment1;
extern uint16_t ADC_4;
void SGM4591Q_IIC_Send(uint8_t Address,uint8_t Register,uint8_t Function);
void SGM4591Q_Global_Control(uint8_t Chip, uint8_t Segment);
void SGM4591Q_Control(void);
#include "TPS2HB35AQPWPRQ1.h"
#include "SGM4591Q.h"
/*3A外发12片*2路*/
/*3A_OUT1*/
void TPS2HB35_SetOutput3A_OUT1(uint8_t state)
{
static Output3A_OUT1 = 0;
static uint8_t Output3A_OUT1 = 0;
if (Output3A_OUT1 != state)
{
if (state==1)
if (state == 1)
{
SGM4591Q_IIC_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
SGM4591Q_Chip2_1_Segment1.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_IIC_Send(0xE8, 0x02, SGM4591Q_U9_Out_P0);
SGM4591Q_Chip2_1_Segment1.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_1, SGM4591Q_Segment1);
Output3A_OUT1 = state;
}
......@@ -26,232 +25,439 @@ void TPS2HB35_SetOutput3A_OUT1(uint8_t state)
/*3A_OUT2*/
void TPS2HB35_SetOutput3A_OUT2(uint8_t state)
{
static Output3A_OUT2 = 0;
static uint8_t Output3A_OUT2 = 0;
if (Output3A_OUT2 != state)
{
Output3A_OUT2 = state;
if (state == 1)
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_1, SGM4591Q_Segment0);
Output3A_OUT2 = state;
}
}
/*3A_OUT3*/
void TPS2HB35_SetOutput3A_OUT3(uint8_t state)
{
static Output3A_OUT3 = 0;
static uint8_t Output3A_OUT3 = 0;
if (Output3A_OUT3 != state)
{
Output3A_OUT3 = state;
if (state == 1)
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_1, SGM4591Q_Segment0);
Output3A_OUT3 = state;
}
}
/*3A_OUT4*/
void TPS2HB35_SetOutput3A_OUT4(uint8_t state)
{
static Output3A_OUT4 = 0;
static uint8_t Output3A_OUT4 = 0;
if (Output3A_OUT4 != state)
{
Output3A_OUT4 = state;
if (state == 1)
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip2_1_Segment0.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_1, SGM4591Q_Segment0);
Output3A_OUT4 = state;
}
}
/*3A_OUT5*/
void TPS2HB35_SetOutput3A_OUT5(uint8_t state)
{
static Output3A_OUT5 = 0;
static uint8_t Output3A_OUT5 = 0;
if (Output3A_OUT5 != state)
{
Output3A_OUT5 = state;
if (state == 1)
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_1, SGM4591Q_Segment1);
Output3A_OUT5 = state;
}
}
/*3A_OUT6*/
void TPS2HB35_SetOutput3A_OUT6(uint8_t state)
{
static Output3A_OUT6 = 0;
static uint8_t Output3A_OUT6 = 0;
if (Output3A_OUT6 != state)
{
Output3A_OUT6 = state;
if (state == 1)
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_1, SGM4591Q_Segment1);
Output3A_OUT6 = state;
}
}
/*3A_OUT7*/
void TPS2HB35_SetOutput3A_OUT7(uint8_t state)
{
static Output3A_OUT7 = 0;
static uint8_t Output3A_OUT7 = 0;
if (Output3A_OUT7 != state)
{
Output3A_OUT7 = state;
if (state == 1)
{
SGM4591Q_Chip2_1_Segment1.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip2_1_Segment1.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_1, SGM4591Q_Segment1);
Output3A_OUT7 = state;
}
}
/*3A_OUT8*/
void TPS2HB35_SetOutput3A_OUT8(uint8_t state)
{
static Output3A_OUT8 = 0;
static uint8_t Output3A_OUT8 = 0;
if (Output3A_OUT8 != state)
{
Output3A_OUT8 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment0);
Output3A_OUT8 = state;
}
}
/*3A_OUT9*/
void TPS2HB35_SetOutput3A_OUT9(uint8_t state)
{
static Output3A_OUT9 = 0;
static uint8_t Output3A_OUT9 = 0;
if (Output3A_OUT9 != state)
{
Output3A_OUT9 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment0);
Output3A_OUT9 = state;
}
}
/*3A_OUT10*/
void TPS2HB35_SetOutput3A_OUT10(uint8_t state)
{
static Output3A_OUT10 = 0;
static uint8_t Output3A_OUT10 = 0;
if (Output3A_OUT10 != state)
{
Output3A_OUT10 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment0.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment0);
Output3A_OUT10 = state;
}
}
/*3A_OUT11*/
void TPS2HB35_SetOutput3A_OUT11(uint8_t state)
{
static Output3A_OUT11 = 0;
static uint8_t Output3A_OUT11 = 0;
if (Output3A_OUT11 != state)
{
Output3A_OUT11 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment1);
Output3A_OUT11 = state;
}
}
/*3A_OUT12*/
void TPS2HB35_SetOutput3A_OUT12(uint8_t state)
{
static Output3A_OUT12 = 0;
static uint8_t Output3A_OUT12 = 0;
if (Output3A_OUT12 != state)
{
Output3A_OUT12 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment1);
Output3A_OUT12 = state;
}
}
/*3A_OUT13*/
void TPS2HB35_SetOutput3A_OUT13(uint8_t state)
{
static Output3A_OUT13 = 0;
static uint8_t Output3A_OUT13 = 0;
if (Output3A_OUT13 != state)
{
Output3A_OUT13 = state;
if (state == 1)
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip2_2_Segment1.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_2, SGM4591Q_Segment1);
Output3A_OUT13 = state;
}
}
/*3A_OUT14*/
void TPS2HB35_SetOutput3A_OUT14(uint8_t state)
{
static Output3A_OUT14 = 0;
static uint8_t Output3A_OUT14 = 0;
if (Output3A_OUT14 != state)
{
Output3A_OUT14 = state;
if (state == 1)
{
SGM4591Q_Chip2_3_Segment0.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip2_3_Segment0.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_3, SGM4591Q_Segment0);
Output3A_OUT14 = state;
}
}
/*3A_OUT15*/
void TPS2HB35_SetOutput3A_OUT15(uint8_t state)
{
static Output3A_OUT15 = 0;
static uint8_t Output3A_OUT15 = 0;
if (Output3A_OUT15 != state)
{
Output3A_OUT15 = state;
if (state == 1)
{
SGM4591Q_Chip2_3_Segment0.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip2_3_Segment0.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_3, SGM4591Q_Segment0);
Output3A_OUT15 = state;
}
}
/*3A_OUT16*/
void TPS2HB35_SetOutput3A_OUT16(uint8_t state)
{
static Output3A_OUT16 = 0;
static uint8_t Output3A_OUT16 = 0;
if (Output3A_OUT16 != state)
{
Output3A_OUT16 = state;
if (state == 1)
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_3, SGM4591Q_Segment1);
Output3A_OUT16 = state;
}
}
/*3A_OUT17*/
void TPS2HB35_SetOutput3A_OUT17(uint8_t state)
{
static Output3A_OUT17 = 0;
static uint8_t Output3A_OUT17 = 0;
if (Output3A_OUT17 != state)
{
Output3A_OUT17 = state;
if (state == 1)
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_2, SGM4591Q_Segment0);
Output3A_OUT17 = state;
}
}
/*3A_OUT18*/
void TPS2HB35_SetOutput3A_OUT18(uint8_t state)
{
static Output3A_OUT18 = 0;
static uint8_t Output3A_OUT18 = 0;
if (Output3A_OUT18 != state)
{
Output3A_OUT18 = state;
if (state == 1)
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_2, SGM4591Q_Segment0);
Output3A_OUT18 = state;
}
}
/*3A_OUT19*/
void TPS2HB35_SetOutput3A_OUT19(uint8_t state)
{
static Output3A_OUT19 = 0;
static uint8_t Output3A_OUT19 = 0;
if (Output3A_OUT19 != state)
{
Output3A_OUT19 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment0);
Output3A_OUT19 = state;
}
}
/*3A_OUT20*/
void TPS2HB35_SetOutput3A_OUT20(uint8_t state)
{
static Output3A_OUT20 = 0;
static uint8_t Output3A_OUT20 = 0;
if (Output3A_OUT20 != state)
{
Output3A_OUT20 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment0);
Output3A_OUT20 = state;
}
}
/*3A_OUT21*/
void TPS2HB35_SetOutput3A_OUT21(uint8_t state)
{
static Output3A_OUT21 = 0;
static uint8_t Output3A_OUT21 = 0;
if (Output3A_OUT21 != state)
{
Output3A_OUT21 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment1);
Output3A_OUT21 = state;
}
}
/*3A_OUT22*/
void TPS2HB35_SetOutput3A_OUT22(uint8_t state)
{
static Output3A_OUT22 = 0;
static uint8_t Output3A_OUT22 = 0;
if (Output3A_OUT22 != state)
{
Output3A_OUT22 = state;
if (state == 1)
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip3_2_Segment0.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_2, SGM4591Q_Segment0);
Output3A_OUT22 = state;
}
}
/*3A_OUT23*/
void TPS2HB35_SetOutput3A_OUT23(uint8_t state)
{
static Output3A_OUT23 = 0;
static uint8_t Output3A_OUT23 = 0;
if (Output3A_OUT23 != state)
{
Output3A_OUT23 = state;
if (state == 1)
{
SGM4591Q_Chip3_2_Segment1.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip3_2_Segment1.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_2, SGM4591Q_Segment1);
Output3A_OUT23 = state;
}
}
/*3A_OUT24*/
void TPS2HB35_SetOutput3A_OUT24(uint8_t state)
{
static Output3A_OUT24 = 0;
static uint8_t Output3A_OUT24 = 0;
if (Output3A_OUT24 != state)
{
Output3A_OUT24 = state;
if (state == 1)
{
SGM4591Q_Chip3_2_Segment1.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip3_2_Segment1.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_2, SGM4591Q_Segment1);
Output3A_OUT24 = state;
}
}
/*5A外发10片*2路*/
......@@ -259,221 +465,382 @@ void TPS2HB35_SetOutput3A_OUT24(uint8_t state)
/*5A_OUT1*/
void TPS2HB35_SetOutput5A_OUT1(uint8_t state)
{
static Output5A_OUT1 = 0;
static uint8_t Output5A_OUT1 = 0;
if (Output5A_OUT1 != state)
{
Output5A_OUT1 = state;
if (state == 1)
{
SGM4591Q_Chip3_1_Segment0.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip3_1_Segment0.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_1, SGM4591Q_Segment0);
Output5A_OUT1 = state;
}
}
/*5A_OUT2*/
void TPS2HB35_SetOutput5A_OUT2(uint8_t state)
{
static Output5A_OUT2 = 0;
static uint8_t Output5A_OUT2 = 0;
if (Output5A_OUT2 != state)
{
Output5A_OUT2 = state;
if (state == 1)
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_1, SGM4591Q_Segment1);
Output5A_OUT2 = state;
}
}
/*5A_OUT3*/
void TPS2HB35_SetOutput5A_OUT3(uint8_t state)
{
static Output5A_OUT3 = 0;
static uint8_t Output5A_OUT3 = 0;
if (Output5A_OUT3 != state)
{
Output5A_OUT3 = state;
if (state == 1)
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_1, SGM4591Q_Segment1);
Output5A_OUT3 = state;
}
}
/*5A_OUT4*/
void TPS2HB35_SetOutput5A_OUT4(uint8_t state)
{
static Output5A_OUT4 = 0;
static uint8_t Output5A_OUT4 = 0;
if (Output5A_OUT4 != state)
{
Output5A_OUT4 = state;
if (state == 1)
{
SGM4591Q_Chip3_1_Segment0.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip3_1_Segment0.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_1, SGM4591Q_Segment0);
Output5A_OUT4 = state;
}
}
/*5A_OUT5*/
void TPS2HB35_SetOutput5A_OUT5(uint8_t state)
{
static Output5A_OUT5 = 0;
static uint8_t Output5A_OUT5 = 0;
if (Output5A_OUT5 != state)
{
Output5A_OUT5 = state;
if (state == 1)
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_3, SGM4591Q_Segment1);
Output5A_OUT5 = state;
}
}
/*5A_OUT6*/
void TPS2HB35_SetOutput5A_OUT6(uint8_t state)
{
static Output5A_OUT6 = 0;
static uint8_t Output5A_OUT6 = 0;
if (Output5A_OUT6 != state)
{
Output5A_OUT6 = state;
if (state == 1)
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip2_3_Segment1.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip2_3, SGM4591Q_Segment1);
Output5A_OUT6 = state;
}
}
/*5A_OUT7*/
void TPS2HB35_SetOutput5A_OUT7(uint8_t state)
{
static Output5A_OUT7 = 0;
static uint8_t Output5A_OUT7 = 0;
if (Output5A_OUT7 != state)
{
Output5A_OUT7 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment0.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment0);
Output5A_OUT7 = state;
}
}
/*5A_OUT8*/
void TPS2HB35_SetOutput5A_OUT8(uint8_t state)
{
static Output5A_OUT8 = 0;
static uint8_t Output5A_OUT8 = 0;
if (Output5A_OUT8 != state)
{
Output5A_OUT8 = state;
if (state == 1)
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip3_1_Segment1.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_1, SGM4591Q_Segment1);
Output5A_OUT8 = state;
}
}
/*5A_OUT9*/
void TPS2HB35_SetOutput5A_OUT9(uint8_t state)
{
static Output5A_OUT9 = 0;
static uint8_t Output5A_OUT9 = 0;
if (Output5A_OUT9 != state)
{
Output5A_OUT9 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment1);
Output5A_OUT9 = state;
}
}
/*5A_OUT10*/
void TPS2HB35_SetOutput5A_OUT10(uint8_t state)
{
static Output5A_OUT10 = 0;
static uint8_t Output5A_OUT10 = 0;
if (Output5A_OUT10 != state)
{
Output5A_OUT10 = state;
if (state == 1)
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip3_4_Segment1.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_4, SGM4591Q_Segment1);
Output5A_OUT10 = state;
}
}
/*5A_OUT11*/
void TPS2HB35_SetOutput5A_OUT11(uint8_t state)
{
static Output5A_OUT11 = 0;
static uint8_t Output5A_OUT11 = 0;
if (Output5A_OUT11 != state)
{
Output5A_OUT11 = state;
if (state == 1)
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_4, SGM4591Q_Segment1);
Output5A_OUT11 = state;
}
}
/*5A_OUT12*/
void TPS2HB35_SetOutput5A_OUT12(uint8_t state)
{
static Output5A_OUT12 = 0;
static uint8_t Output5A_OUT12 = 0;
if (Output5A_OUT12 != state)
{
Output5A_OUT12 = state;
if (state == 1)
{
SGM4591Q_Chip1_4_Segment0.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip1_4_Segment0.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_4, SGM4591Q_Segment0);
Output5A_OUT12 = state;
}
}
/*5A_OUT13*/
void TPS2HB35_SetOutput5A_OUT13(uint8_t state)
{
static Output5A_OUT13 = 0;
static uint8_t Output5A_OUT13 = 0;
if (Output5A_OUT13 != state)
{
Output5A_OUT13 = state;
if (state == 1)
{
SGM4591Q_Chip1_4_Segment0.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip1_4_Segment0.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_4, SGM4591Q_Segment0);
Output5A_OUT13 = state;
}
}
/*5A_OUT14*/
void TPS2HB35_SetOutput5A_OUT14(uint8_t state)
{
static Output5A_OUT14 = 0;
static uint8_t Output5A_OUT14 = 0;
if (Output5A_OUT14 != state)
{
Output5A_OUT14 = state;
if (state == 1)
{
SGM4591Q_Chip1_3_Segment0.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip1_3_Segment0.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_3, SGM4591Q_Segment0);
Output5A_OUT14 = state;
}
}
/*5A_OUT15*/
void TPS2HB35_SetOutput5A_OUT15(uint8_t state)
{
static Output5A_OUT15 = 0;
static uint8_t Output5A_OUT15 = 0;
if (Output5A_OUT15 != state)
{
Output5A_OUT15 = state;
if (state == 1)
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_3, SGM4591Q_Segment1);
Output5A_OUT15 = state;
}
}
/*5A_OUT16*/
void TPS2HB35_SetOutput5A_OUT16(uint8_t state)
{
static Output5A_OUT16 = 0;
static uint8_t Output5A_OUT16 = 0;
if (Output5A_OUT16 != state)
{
Output5A_OUT16 = state;
if (state == 1)
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_3, SGM4591Q_Segment1);
Output5A_OUT16 = state;
}
}
/*5A_OUT17*/
void TPS2HB35_SetOutput5A_OUT17(uint8_t state)
{
static Output5A_OUT17 = 0;
static uint8_t Output5A_OUT17 = 0;
if (Output5A_OUT17 != state)
{
Output5A_OUT17 = state;
if (state == 1)
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_3, SGM4591Q_Segment0);
Output5A_OUT17 = state;
}
}
/*5A_OUT18*/
void TPS2HB35_SetOutput5A_OUT18(uint8_t state)
{
static Output5A_OUT18 = 0;
static uint8_t Output5A_OUT18 = 0;
if (Output5A_OUT18 != state)
{
Output5A_OUT18 = state;
if (state == 1)
{
SGM4591Q_Chip4_3_Segment1.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip4_3_Segment1.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_3, SGM4591Q_Segment1);
Output5A_OUT18 = state;
}
}
/*5A_OUT19*/
void TPS2HB35_SetOutput5A_OUT19(uint8_t state)
{
static Output5A_OUT19 = 0;
static uint8_t Output5A_OUT19 = 0;
if (Output5A_OUT19 != state)
{
Output5A_OUT19 = state;
if (state == 1)
{
SGM4591Q_Chip3_3_Segment0.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip3_3_Segment0.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_3, SGM4591Q_Segment0);
Output5A_OUT19 = state;
}
}
/*5A_OUT20*/
void TPS2HB35_SetOutput5A_OUT20(uint8_t state)
{
static Output5A_OUT20 = 0;
static uint8_t Output5A_OUT20 = 0;
if (Output5A_OUT20 != state)
{
Output5A_OUT20 = state;
if (state == 1)
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip3_3_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_3, SGM4591Q_Segment1);
Output5A_OUT20 = state;
}
}
/*10A外发4片*2路*/
......@@ -481,82 +848,154 @@ void TPS2HB35_SetOutput5A_OUT20(uint8_t state)
/*10A_OUT1*/
void TPS2HB35_SetOutput10A_OUT1(uint8_t state)
{
static Output10A_OUT1 = 0;
static uint8_t Output10A_OUT1 = 0;
if (Output10A_OUT1 != state)
{
Output10A_OUT1 = state;
if (state == 1)
{
SGM4591Q_Chip1_1_Segment0.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip1_1_Segment0.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_1, SGM4591Q_Segment0);
Output10A_OUT1 = state;
}
}
/*10A_OUT2*/
void TPS2HB35_SetOutput10A_OUT2(uint8_t state)
{
static Output10A_OUT2 = 0;
static uint8_t Output10A_OUT2 = 0;
if (Output10A_OUT2 != state)
{
Output10A_OUT2 = state;
if (state == 1)
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_1, SGM4591Q_Segment1);
Output10A_OUT2 = state;
}
}
/*10A_OUT3*/
void TPS2HB35_SetOutput10A_OUT3(uint8_t state)
{
static Output10A_OUT3 = 0;
static uint8_t Output10A_OUT3 = 0;
if (Output10A_OUT3 != state)
{
Output10A_OUT3 = state;
if (state == 1)
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_1, SGM4591Q_Segment1);
Output10A_OUT3 = state;
}
}
/*10A_OUT4*/
void TPS2HB35_SetOutput10A_OUT4(uint8_t state)
{
static Output10A_OUT4 = 0;
static uint8_t Output10A_OUT4 = 0;
if (Output10A_OUT4 != state)
{
Output10A_OUT4 = state;
if (state == 1)
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip1_1_Segment1.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_1, SGM4591Q_Segment1);
Output10A_OUT4 = state;
}
}
/*10A_OUT5*/
void TPS2HB35_SetOutput10A_OUT5(uint8_t state)
{
static Output10A_OUT5 = 0;
static uint8_t Output10A_OUT5 = 0;
if (Output10A_OUT5 != state)
{
Output10A_OUT5 = state;
if (state == 1)
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_4, SGM4591Q_Segment1);
Output10A_OUT5 = state;
}
}
/*10A_OUT6*/
void TPS2HB35_SetOutput10A_OUT6(uint8_t state)
{
static Output10A_OUT6 = 0;
static uint8_t Output10A_OUT6 = 0;
if (Output10A_OUT6 != state)
{
Output10A_OUT6 = state;
if (state == 1)
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip1_4_Segment1.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_4, SGM4591Q_Segment1);
Output10A_OUT6 = state;
}
}
/*10A_OUT7*/
void TPS2HB35_SetOutput10A_OUT7(uint8_t state)
{
static Output10A_OUT7 = 0;
static uint8_t Output10A_OUT7 = 0;
if (Output10A_OUT7 != state)
{
Output10A_OUT7 = state;
if (state == 1)
{
SGM4591Q_Chip4_3_Segment1.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip4_3_Segment1.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_3, SGM4591Q_Segment1);
Output10A_OUT7 = state;
}
}
/*10A_OUT8*/
void TPS2HB35_SetOutput10A_OUT8(uint8_t state)
{
static Output10A_OUT8 = 0;
static uint8_t Output10A_OUT8 = 0;
if (Output10A_OUT8 != state)
{
Output10A_OUT8 = state;
if (state == 1)
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_3, SGM4591Q_Segment0);
Output10A_OUT8 = state;
}
}
/*15A外发14片*1路*/
......@@ -564,155 +1003,267 @@ void TPS2HB35_SetOutput10A_OUT8(uint8_t state)
/*15A_OUT1*/
void TPS2HB35_SetOutput15A_OUT1(uint8_t state)
{
static Output15A_OUT1 = 0;
static uint8_t Output15A_OUT1 = 0;
if (Output15A_OUT1 != state)
{
Output15A_OUT1 = state;
if (state == 1)
{
SGM4591Q_Chip1_2_Segment0.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip1_2_Segment0.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_2, SGM4591Q_Segment0);
Output15A_OUT1 = state;
}
}
/*15A_OUT2*/
void TPS2HB35_SetOutput15A_OUT2(uint8_t state)
{
static Output15A_OUT2 = 0;
static uint8_t Output15A_OUT2 = 0;
if (Output15A_OUT2 != state)
{
if (state == 1)
{
SGM4591Q_Chip1_2_Segment1.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip1_2_Segment1.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_2, SGM4591Q_Segment1);
Output15A_OUT2 = state;
}
}
/*15A_OUT3*/
void TPS2HB35_SetOutput15A_OUT3(uint8_t state)
{
static Output15A_OUT3 = 0;
static uint8_t Output15A_OUT3 = 0;
if (Output15A_OUT3 != state)
{
Output15A_OUT3 = state;
if (state == 1)
{
SGM4591Q_Chip1_2_Segment1.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip1_2_Segment1.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_2, SGM4591Q_Segment1);
Output15A_OUT3 = state;
}
}
/*15A_OUT4*/
void TPS2HB35_SetOutput15A_OUT4(uint8_t state)
{
static Output15A_OUT4 = 0;
static uint8_t Output15A_OUT4 = 0;
if (Output15A_OUT4 != state)
{
Output15A_OUT4 = state;
if (state == 1)
{
SGM4591Q_Chip1_2_Segment0.BIT.PIN_1 = 1;
}
else
{
SGM4591Q_Chip1_2_Segment0.BIT.PIN_1 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip1_2, SGM4591Q_Segment0);
Output15A_OUT4 = state;
}
}
/*15A_OUT5*/
void TPS2HB35_SetOutput15A_OUT5(uint8_t state)
{
static Output15A_OUT5 = 0;
static uint8_t Output15A_OUT5 = 0;
if (Output15A_OUT5 != state)
{
Output15A_OUT5 = state;
if (state == 1)
{
SGM4591Q_Chip4_2_Segment0.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip4_2_Segment0.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_2, SGM4591Q_Segment0);
Output15A_OUT5 = state;
}
}
/*15A_OUT6*/
void TPS2HB35_SetOutput15A_OUT6(uint8_t state)
{
static Output15A_OUT6 = 0;
static uint8_t Output15A_OUT6 = 0;
if (Output15A_OUT6 != state)
{
Output15A_OUT6 = state;
if (state == 1)
{
SGM4591Q_Chip4_2_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip4_2_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_2, SGM4591Q_Segment1);
Output15A_OUT6 = state;
}
}
/*15A_OUT7*/
void TPS2HB35_SetOutput15A_OUT7(uint8_t state)
{
static Output15A_OUT7 = 0;
static uint8_t Output15A_OUT7 = 0;
if (Output15A_OUT7 != state)
{
Output15A_OUT7 = state;
if (state == 1)
{
SGM4591Q_Chip4_2_Segment1.BIT.PIN_5 = 1;
}
else
{
SGM4591Q_Chip4_2_Segment1.BIT.PIN_5 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_2, SGM4591Q_Segment1);
Output15A_OUT7 = state;
}
}
/*15A_OUT8*/
void TPS2HB35_SetOutput15A_OUT8(uint8_t state)
{
static Output15A_OUT8 = 0;
static uint8_t Output15A_OUT8 = 0;
if (Output15A_OUT8 != state)
{
Output15A_OUT8 = state;
if (state == 1)
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_2 = 1;
}
else
{
SGM4591Q_Chip4_3_Segment0.BIT.PIN_2 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_3, SGM4591Q_Segment0);
Output15A_OUT8 = state;
}
}
/*15A_OUT9*/
void TPS2HB35_SetOutput15A_OUT9(uint8_t state)
{
static Output15A_OUT9 = 0;
static uint8_t Output15A_OUT9 = 0;
if (Output15A_OUT9 != state)
{
Output15A_OUT9 = state;
if (state == 1)
{
SGM4591Q_Chip3_3_Segment0.BIT.PIN_3 = 1;
}
else
{
SGM4591Q_Chip3_3_Segment0.BIT.PIN_3 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip3_3, SGM4591Q_Segment0);
Output15A_OUT9 = state;
}
}
/*15A_OUT10*/
void TPS2HB35_SetOutput15A_OUT10(uint8_t state)
{
static Output15A_OUT10 = 0;
static uint8_t Output15A_OUT10 = 0;
if (Output15A_OUT10 != state)
{
Output15A_OUT10 = state;
if (state == 1)
{
SGM4591Q_Chip4_4_Segment0.BIT.PIN_7 = 1;
}
else
{
SGM4591Q_Chip4_4_Segment0.BIT.PIN_7 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_4, SGM4591Q_Segment0);
Output15A_OUT10 = state;
}
}
/*15A_OUT11*/
void TPS2HB35_SetOutput15A_OUT11(uint8_t state)
{
static Output15A_OUT11 = 0;
static uint8_t Output15A_OUT11 = 0;
if (Output15A_OUT11 != state)
{
Output15A_OUT11 = state;
if (state == 1)
{
SGM4591Q_Chip4_1_Segment0.BIT.PIN_4 = 1;
}
else
{
SGM4591Q_Chip4_1_Segment0.BIT.PIN_4 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_1, SGM4591Q_Segment0);
Output15A_OUT11 = state;
}
}
/*15A_OUT12*/
void TPS2HB35_SetOutput15A_OUT12(uint8_t state)
{
static Output15A_OUT12 = 0;
static uint8_t Output15A_OUT12 = 0;
if (Output15A_OUT12 != state)
{
Output15A_OUT12 = state;
if (state == 1)
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip4_1_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_1, SGM4591Q_Segment1);
Output15A_OUT12 = state;
}
}
/*15A_OUT13*/
void TPS2HB35_SetOutput15A_OUT13(uint8_t state)
{
static Output15A_OUT13 = 0;
static uint8_t Output15A_OUT13 = 0;
if (Output15A_OUT13 != state)
{
Output15A_OUT13 = state;
if (state == 1)
{
SGM4591Q_Chip4_4_Segment1.BIT.PIN_0 = 1;
}
else
{
SGM4591Q_Chip4_4_Segment1.BIT.PIN_0 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_4, SGM4591Q_Segment1);
Output15A_OUT13 = state;
}
}
/*15A_OUT14*/
void TPS2HB35_SetOutput15A_OUT14(uint8_t state)
{
static Output15A_OUT14 = 0;
static uint8_t Output15A_OUT14 = 0;
if (Output15A_OUT14 != state)
{
Output15A_OUT14 = state;
if (state == 1)
{
SGM4591Q_Chip4_4_Segment1.BIT.PIN_6 = 1;
}
else
{
SGM4591Q_Chip4_4_Segment1.BIT.PIN_6 = 0;
}
SGM4591Q_Global_Control(SGM4591Q_Chip4_4, SGM4591Q_Segment1);
Output15A_OUT14 = state;
}
}
#!gbuild
[Subproject]
Simulated_SPI_Master.c
Simulated_SPI_Master.h
Simulated_IIC_1_Master.c
Simulated_IIC_1_Master.h
Simulated_IIC_2_Master.c
Simulated_IIC_2_Master.h
Simulated_IIC_3_Master.c
Simulated_IIC_3_Master.h
Simulated_IIC_4_Master.c
Simulated_IIC_4_Master.h
Simulated_SPI_Master.c
Simulated_SPI_Master.h
CAN\Rscan.c
CAN\Rscan.h
CAN\RSCAN_Table.c
......
#include "Simulated_IIC_1_Master.h"
#include "Port_Cfg.h"
#include "Port.h"
#include "Dio.h"
uint8_t u8SimulatedIIC1ReceivedACK;
/*
SDA:P22-3
SCL:P22-4
*/
/*时钟输入*/
void SGM4591Q_Clock1_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin4, PORT_PIN_IN);
}
/*时钟输出低*/
void SGM4591Q_Clock1_Output(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin4, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_04, STD_LOW);
}
/*数据设置输入*/
void SGM4591Q_Data1_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin3, PORT_PIN_IN);
}
/*数据输入高低电平*/
uint8_t SGM4591Q_Data1_Input_Value(void)
{
uint8_t Data;
Data = Dio_ReadChannel(Port_Config_PortGroup22_PortPin3);
return Data;
}
/*数据输出低*/
void SGM4591Q_Data1_Output_Low(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin3, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_03, STD_LOW);
}
/******************************************************************************
函数名:IIC_Init
功 能:初始化IIC总线
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_1_Init(void)
{
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
}
/******************************************************************************
函数名:IIC_Start
功 能:在IIC总线上发送起始信号,发起一次IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_1_Start(void)
{
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_1_OUT_SDA = 0;
SGM4591Q_Data1_Output_Low();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_1_SCL = 0;
SGM4591Q_Clock1_Output();
Simulated_IIC_1_Delay();
}
/******************************************************************************
函数名:IIC_Stop
功 能:在IIC总线上发送停止信号,终止当前IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_1_Stop(void)
{
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_1_OUT_SDA = 0;
SGM4591Q_Data1_Output_Low();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
}
/******************************************************************************
函数名:IIC_Transmit_Data
功 能:向IIC总线上发送1字节数据
参 数:Data:发送的数据
返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/
void Simulated_IIC_1_Transmit_Data(uint8_t Data)
{
uint8_t i;
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
for (i = 0; i < 8; i++)
{
if ((Data & 0x80) != 0U)
{
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data1_Input();
}
else
{
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_1_OUT_SDA = 0;
SGM4591Q_Data1_Output_Low();
}
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_1_SCL = 0;
SGM4591Q_Clock1_Output();
Simulated_IIC_1_Delay();
Data <<= 1;
}
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_IN_SDA;
u8SimulatedIIC1ReceivedACK = SGM4591Q_Data1_Input_Value();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_1_SCL = 0;
SGM4591Q_Clock1_Output();
Simulated_IIC_1_Delay();
}
/******************************************************************************
函数名:IIC_Receive_Data
功 能:从IIC总线上接收1字节数据
参 数:无
返回值:接收到的数据
******************************************************************************/
uint8_t Simulated_IIC_1_Receive_Data(void)
{
uint8_t i;
uint8_t Data;
Data = 0;
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
for (i = 0; i < 8; i++)
{
Data <<= 1;
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// Data |= SIMULATED_IIC_1_IN_SDA;
Data |= SGM4591Q_Data1_Input_Value();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_1_SCL = 0;
SGM4591Q_Clock1_Output();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
}
return Data;
}
/******************************************************************************
函数名:IIC_Transmit_ACK
功 能:向IIC总线上发送确认信号
参 数:ACK:确认信号的类型: SIMULATED_IIC_1_ACK 肯定应答
IIC_NAK 否定应答
返回值:无
******************************************************************************/
void Simulated_IIC_1_Transmit_ACK(uint8_t ACK)
{
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
if (ACK > SIMULATED_IIC_1_NAK)
{
return;
}
if (ACK != 0U)
{
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data1_Input();
}
else
{
// SIMULATED_IIC_1_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_1_OUT_SDA = 0;
SGM4591Q_Data1_Output_Low();
}
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock1_Input();
Simulated_IIC_1_Delay();
Simulated_IIC_1_Delay();
// SIMULATED_IIC_1_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_1_SCL = 0;
SGM4591Q_Clock1_Output();
Simulated_IIC_1_Delay();
}
/******************************************************************************
函数名:IIC_Receive_ACK
功 能:获取从总线上接收到的确认信号
参 数:无
返回值:总线上器件的确认信号类型:Simulated_IIC_ACK 肯定应答
SIMULATED_IIC_1_NAK 否定应答
IIC_INVALID_ACK 无效的应答信号(应答信号还未收到)
******************************************************************************/
uint8_t Simulated_IIC_1_Receive_ACK(void)
{
uint8_t ACK;
ACK = u8SimulatedIIC1ReceivedACK;
u8SimulatedIIC1ReceivedACK = SIMULATED_IIC_1_INVALID_ACK;
return ACK;
}
/******************************************************************************
函数名:IIC_Delay
功 能:延时5us,用于收发过程中的时序控制
注意:必须调整IIC_5us_DELAY_CALIBRATION参数校准延时时间在5us左右
参 数:ACK:确认信号的类型 0 - ACK 1 - NAK
返回值:无
******************************************************************************/
void Simulated_IIC_1_Delay(void)
{
uint8_t i;
for (i = 0; i < SIMULATED_IIC_1_FREQ_CALIBRATION; i++)
{
NOP();
}
}
#ifndef SIMULATED_IIC_1_MASTER_H__
#define SIMULATED_IIC_1_MASTER_H__
#include "TYW_stdint.h"
/******************************************************************************
1us延时校准
******************************************************************************/
#define SIMULATED_IIC_1_FREQ_CALIBRATION 80U
/******************************************************************************
确认信号
******************************************************************************/
#define SIMULATED_IIC_1_ACK 0U // 肯定应答
#define SIMULATED_IIC_1_NAK 1U // 否定应答
#define SIMULATED_IIC_1_INVALID_ACK 2U // 无效的应答信号(应答信号还未收到)
/******************************************************************************
函数声明
******************************************************************************/
void Simulated_IIC_1_Init(void);
void Simulated_IIC_1_Start(void);
void Simulated_IIC_1_Stop(void);
void Simulated_IIC_1_Transmit_Data(uint8_t Data);
uint8_t Simulated_IIC_1_Receive_Data(void);
void Simulated_IIC_1_Transmit_ACK(uint8_t ACK);
uint8_t Simulated_IIC_1_Receive_ACK(void);
void Simulated_IIC_1_Delay(void);
/*void Simulated_IIC_1_Slave_Service(void);*/
#endif
\ No newline at end of file
......@@ -10,36 +10,36 @@ SDA:P22-3
SCL:P22-4
*/
/*时钟输入*/
void SGM4591Q_Clock_Input(void)
void SGM4591Q_Clock2_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin4, PORT_PIN_IN);
Port_SetPinDirection(Port_Config_PortGroup21_PortPin4, PORT_PIN_IN);
}
/*时钟输出低*/
void SGM4591Q_Clock_Output(void)
void SGM4591Q_Clock2_Output(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin4, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_04, STD_LOW);
Port_SetPinDirection(Port_Config_PortGroup21_PortPin4, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P21_04, STD_LOW);
}
/*数据设置输入*/
void SGM4591Q_Data_Input(void)
void SGM4591Q_Data2_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin3, PORT_PIN_IN);
Port_SetPinDirection(Port_Config_PortGroup21_PortPin5, PORT_PIN_IN);
}
/*数据输入高低电平*/
uint8_t SGM4591Q_Data_Input_Value(void)
uint8_t SGM4591Q_Data2_Input_Value(void)
{
uint8_t Data;
Data = Dio_ReadChannel(Port_Config_PortGroup22_PortPin3);
Data = Dio_ReadChannel(Port_Config_PortGroup21_PortPin5);
return Data;
}
/*数据输出低*/
void SGM4591Q_Data_Output_Low(void)
void SGM4591Q_Data2_Output_Low(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin3, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_03, STD_LOW);
Port_SetPinDirection(Port_Config_PortGroup21_PortPin5, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P21_05, STD_LOW);
}
/******************************************************************************
......@@ -51,12 +51,12 @@ void SGM4591Q_Data_Output_Low(void)
void Simulated_IIC_2_Init(void)
{
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
......@@ -74,24 +74,24 @@ void Simulated_IIC_2_Start(void)
u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_INVALID_ACK;
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_2_OUT_SDA = 0;
SGM4591Q_Data_Output_Low();
SGM4591Q_Data2_Output_Low();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_2_SCL = 0;
SGM4591Q_Clock_Output();
SGM4591Q_Clock2_Output();
Simulated_IIC_2_Delay();
}
......@@ -107,17 +107,17 @@ void Simulated_IIC_2_Stop(void)
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_2_OUT_SDA = 0;
SGM4591Q_Data_Output_Low();
SGM4591Q_Data2_Output_Low();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
}
......@@ -139,46 +139,46 @@ void Simulated_IIC_2_Transmit_Data(uint8_t Data)
if ((Data & 0x80) != 0U)
{
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
}
else
{
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_2_OUT_SDA = 0;
SGM4591Q_Data_Output_Low();
SGM4591Q_Data2_Output_Low();
}
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_2_SCL = 0;
SGM4591Q_Clock_Output();
SGM4591Q_Clock2_Output();
Simulated_IIC_2_Delay();
Data <<= 1;
}
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// u8SimulatedIIC2ReceivedACK = SIMULATED_IIC_2_IN_SDA;
u8SimulatedIIC2ReceivedACK = SGM4591Q_Data_Input_Value();
u8SimulatedIIC2ReceivedACK = SGM4591Q_Data2_Input_Value();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_2_SCL = 0;
SGM4591Q_Clock_Output();
SGM4591Q_Clock2_Output();
Simulated_IIC_2_Delay();
}
......@@ -196,7 +196,7 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
Data = 0;
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
......@@ -205,17 +205,17 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
Data <<= 1;
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// Data |= SIMULATED_IIC_2_IN_SDA;
Data |= SGM4591Q_Data_Input_Value();
Data |= SGM4591Q_Data2_Input_Value();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_2_SCL = 0;
SGM4591Q_Clock_Output();
SGM4591Q_Clock2_Output();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
}
......@@ -242,24 +242,24 @@ void Simulated_IIC_2_Transmit_ACK(uint8_t ACK)
if (ACK != 0U)
{
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data_Input();
SGM4591Q_Data2_Input();
}
else
{
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_2_OUT_SDA = 0;
SGM4591Q_Data_Output_Low();
SGM4591Q_Data2_Output_Low();
}
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock_Input();
SGM4591Q_Clock2_Input();
Simulated_IIC_2_Delay();
Simulated_IIC_2_Delay();
// SIMULATED_IIC_2_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_2_SCL = 0;
SGM4591Q_Clock_Output();
SGM4591Q_Clock2_Output();
Simulated_IIC_2_Delay();
}
......
#include "Simulated_IIC_3_Master.h"
#include "Port_Cfg.h"
#include "Port.h"
#include "Dio.h"
uint8_t u8SimulatedIIC3ReceivedACK;
/*
SDA:P22-3
SCL:P22-4
*/
/*时钟输入*/
void SGM4591Q_Clock3_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup21_PortPin6, PORT_PIN_IN);
}
/*时钟输出低*/
void SGM4591Q_Clock3_Output(void)
{
Port_SetPinDirection(Port_Config_PortGroup21_PortPin6, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P21_06, STD_LOW);
}
/*数据设置输入*/
void SGM4591Q_Data3_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup21_PortPin7, PORT_PIN_IN);
}
/*数据输入高低电平*/
uint8_t SGM4591Q_Data3_Input_Value(void)
{
uint8_t Data;
Data = Dio_ReadChannel(Port_Config_PortGroup21_PortPin7);
return Data;
}
/*数据输出低*/
void SGM4591Q_Data3_Output_Low(void)
{
Port_SetPinDirection(Port_Config_PortGroup21_PortPin7, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P21_07, STD_LOW);
}
/******************************************************************************
函数名:IIC_Init
功 能:初始化IIC总线
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_3_Init(void)
{
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
}
/******************************************************************************
函数名:IIC_Start
功 能:在IIC总线上发送起始信号,发起一次IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_3_Start(void)
{
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_3_OUT_SDA = 0;
SGM4591Q_Data3_Output_Low();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_3_SCL = 0;
SGM4591Q_Clock3_Output();
Simulated_IIC_3_Delay();
}
/******************************************************************************
函数名:IIC_Stop
功 能:在IIC总线上发送停止信号,终止当前IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_3_Stop(void)
{
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_3_OUT_SDA = 0;
SGM4591Q_Data3_Output_Low();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
}
/******************************************************************************
函数名:IIC_Transmit_Data
功 能:向IIC总线上发送1字节数据
参 数:Data:发送的数据
返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/
void Simulated_IIC_3_Transmit_Data(uint8_t Data)
{
uint8_t i;
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
for (i = 0; i < 8; i++)
{
if ((Data & 0x80) != 0U)
{
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data3_Input();
}
else
{
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_3_OUT_SDA = 0;
SGM4591Q_Data3_Output_Low();
}
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_3_SCL = 0;
SGM4591Q_Clock3_Output();
Simulated_IIC_3_Delay();
Data <<= 1;
}
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_IN_SDA;
u8SimulatedIIC3ReceivedACK = SGM4591Q_Data3_Input_Value();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_3_SCL = 0;
SGM4591Q_Clock3_Output();
Simulated_IIC_3_Delay();
}
/******************************************************************************
函数名:IIC_Receive_Data
功 能:从IIC总线上接收1字节数据
参 数:无
返回值:接收到的数据
******************************************************************************/
uint8_t Simulated_IIC_3_Receive_Data(void)
{
uint8_t i;
uint8_t Data;
Data = 0;
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
for (i = 0; i < 8; i++)
{
Data <<= 1;
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// Data |= SIMULATED_IIC_3_IN_SDA;
Data |= SGM4591Q_Data3_Input_Value();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_3_SCL = 0;
SGM4591Q_Clock3_Output();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
}
return Data;
}
/******************************************************************************
函数名:IIC_Transmit_ACK
功 能:向IIC总线上发送确认信号
参 数:ACK:确认信号的类型: SIMULATED_IIC_3_ACK 肯定应答
IIC_NAK 否定应答
返回值:无
******************************************************************************/
void Simulated_IIC_3_Transmit_ACK(uint8_t ACK)
{
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
if (ACK > SIMULATED_IIC_3_NAK)
{
return;
}
if (ACK != 0U)
{
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data3_Input();
}
else
{
// SIMULATED_IIC_3_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_3_OUT_SDA = 0;
SGM4591Q_Data3_Output_Low();
}
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock3_Input();
Simulated_IIC_3_Delay();
Simulated_IIC_3_Delay();
// SIMULATED_IIC_3_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_3_SCL = 0;
SGM4591Q_Clock3_Output();
Simulated_IIC_3_Delay();
}
/******************************************************************************
函数名:IIC_Receive_ACK
功 能:获取从总线上接收到的确认信号
参 数:无
返回值:总线上器件的确认信号类型:Simulated_IIC_ACK 肯定应答
SIMULATED_IIC_3_NAK 否定应答
IIC_INVALID_ACK 无效的应答信号(应答信号还未收到)
******************************************************************************/
uint8_t Simulated_IIC_3_Receive_ACK(void)
{
uint8_t ACK;
ACK = u8SimulatedIIC3ReceivedACK;
u8SimulatedIIC3ReceivedACK = SIMULATED_IIC_3_INVALID_ACK;
return ACK;
}
/******************************************************************************
函数名:IIC_Delay
功 能:延时5us,用于收发过程中的时序控制
注意:必须调整IIC_5us_DELAY_CALIBRATION参数校准延时时间在5us左右
参 数:ACK:确认信号的类型 0 - ACK 1 - NAK
返回值:无
******************************************************************************/
void Simulated_IIC_3_Delay(void)
{
uint8_t i;
for (i = 0; i < SIMULATED_IIC_3_FREQ_CALIBRATION; i++)
{
NOP();
}
}
#ifndef SIMULATED_IIC_3_MASTER_H__
#define SIMULATED_IIC_3_MASTER_H__
#include "TYW_stdint.h"
/******************************************************************************
1us延时校准
******************************************************************************/
#define SIMULATED_IIC_3_FREQ_CALIBRATION 80U
/******************************************************************************
确认信号
******************************************************************************/
#define SIMULATED_IIC_3_ACK 0U // 肯定应答
#define SIMULATED_IIC_3_NAK 1U // 否定应答
#define SIMULATED_IIC_3_INVALID_ACK 2U // 无效的应答信号(应答信号还未收到)
/******************************************************************************
函数声明
******************************************************************************/
void Simulated_IIC_3_Init(void);
void Simulated_IIC_3_Start(void);
void Simulated_IIC_3_Stop(void);
void Simulated_IIC_3_Transmit_Data(uint8_t Data);
uint8_t Simulated_IIC_3_Receive_Data(void);
void Simulated_IIC_3_Transmit_ACK(uint8_t ACK);
uint8_t Simulated_IIC_3_Receive_ACK(void);
void Simulated_IIC_3_Delay(void);
/*void Simulated_IIC_3_Slave_Service(void);*/
#endif
\ No newline at end of file
#include "Simulated_IIC_4_Master.h"
#include "Port_Cfg.h"
#include "Port.h"
#include "Dio.h"
uint8_t u8SimulatedIIC4ReceivedACK;
/*
SDA:P22-3
SCL:P22-4
*/
/*时钟输入*/
void SGM4591Q_Clock4_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin0, PORT_PIN_IN);
}
/*时钟输出低*/
void SGM4591Q_Clock4_Output(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin0, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_00, STD_LOW);
}
/*数据设置输入*/
void SGM4591Q_Data4_Input(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin1, PORT_PIN_IN);
}
/*数据输入高低电平*/
uint8_t SGM4591Q_Data4_Input_Value(void)
{
uint8_t Data;
Data = Dio_ReadChannel(Port_Config_PortGroup22_PortPin1);
return Data;
}
/*数据输出低*/
void SGM4591Q_Data4_Output_Low(void)
{
Port_SetPinDirection(Port_Config_PortGroup22_PortPin1, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P22_01, STD_LOW);
}
/******************************************************************************
函数名:IIC_Init
功 能:初始化IIC总线
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_4_Init(void)
{
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
}
/******************************************************************************
函数名:IIC_Start
功 能:在IIC总线上发送起始信号,发起一次IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_4_Start(void)
{
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_4_OUT_SDA = 0;
SGM4591Q_Data4_Output_Low();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_4_SCL = 0;
SGM4591Q_Clock4_Output();
Simulated_IIC_4_Delay();
}
/******************************************************************************
函数名:IIC_Stop
功 能:在IIC总线上发送停止信号,终止当前IIC通信
参 数:无
返回值:无
******************************************************************************/
void Simulated_IIC_4_Stop(void)
{
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_4_OUT_SDA = 0;
SGM4591Q_Data4_Output_Low();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
}
/******************************************************************************
函数名:IIC_Transmit_Data
功 能:向IIC总线上发送1字节数据
参 数:Data:发送的数据
返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/
void Simulated_IIC_4_Transmit_Data(uint8_t Data)
{
uint8_t i;
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
for (i = 0; i < 8; i++)
{
if ((Data & 0x80) != 0U)
{
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data4_Input();
}
else
{
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_4_OUT_SDA = 0;
SGM4591Q_Data4_Output_Low();
}
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_4_SCL = 0;
SGM4591Q_Clock4_Output();
Simulated_IIC_4_Delay();
Data <<= 1;
}
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_IN_SDA;
u8SimulatedIIC4ReceivedACK = SGM4591Q_Data4_Input_Value();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_4_SCL = 0;
SGM4591Q_Clock4_Output();
Simulated_IIC_4_Delay();
}
/******************************************************************************
函数名:IIC_Receive_Data
功 能:从IIC总线上接收1字节数据
参 数:无
返回值:接收到的数据
******************************************************************************/
uint8_t Simulated_IIC_4_Receive_Data(void)
{
uint8_t i;
uint8_t Data;
Data = 0;
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
for (i = 0; i < 8; i++)
{
Data <<= 1;
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// Data |= SIMULATED_IIC_4_IN_SDA;
Data |= SGM4591Q_Data4_Input_Value();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_4_SCL = 0;
SGM4591Q_Clock4_Output();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
}
return Data;
}
/******************************************************************************
函数名:IIC_Transmit_ACK
功 能:向IIC总线上发送确认信号
参 数:ACK:确认信号的类型: SIMULATED_IIC_4_ACK 肯定应答
IIC_NAK 否定应答
返回值:无
******************************************************************************/
void Simulated_IIC_4_Transmit_ACK(uint8_t ACK)
{
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
if (ACK > SIMULATED_IIC_4_NAK)
{
return;
}
if (ACK != 0U)
{
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_IN; // SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
SGM4591Q_Data4_Input();
}
else
{
// SIMULATED_IIC_4_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_4_OUT_SDA = 0;
SGM4591Q_Data4_Output_Low();
}
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_IN; // SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
SGM4591Q_Clock4_Input();
Simulated_IIC_4_Delay();
Simulated_IIC_4_Delay();
// SIMULATED_IIC_4_SCL_DIR = GPIO_DIR_OUT; // SCL输出0,此时SCL = 0
// SIMULATED_IIC_4_SCL = 0;
SGM4591Q_Clock4_Output();
Simulated_IIC_4_Delay();
}
/******************************************************************************
函数名:IIC_Receive_ACK
功 能:获取从总线上接收到的确认信号
参 数:无
返回值:总线上器件的确认信号类型:Simulated_IIC_ACK 肯定应答
SIMULATED_IIC_4_NAK 否定应答
IIC_INVALID_ACK 无效的应答信号(应答信号还未收到)
******************************************************************************/
uint8_t Simulated_IIC_4_Receive_ACK(void)
{
uint8_t ACK;
ACK = u8SimulatedIIC4ReceivedACK;
u8SimulatedIIC4ReceivedACK = SIMULATED_IIC_4_INVALID_ACK;
return ACK;
}
/******************************************************************************
函数名:IIC_Delay
功 能:延时5us,用于收发过程中的时序控制
注意:必须调整IIC_5us_DELAY_CALIBRATION参数校准延时时间在5us左右
参 数:ACK:确认信号的类型 0 - ACK 1 - NAK
返回值:无
******************************************************************************/
void Simulated_IIC_4_Delay(void)
{
uint8_t i;
for (i = 0; i < SIMULATED_IIC_4_FREQ_CALIBRATION; i++)
{
NOP();
}
}
#ifndef SIMULATED_IIC_4_MASTER_H__
#define SIMULATED_IIC_4_MASTER_H__
#include "TYW_stdint.h"
/******************************************************************************
1us延时校准
******************************************************************************/
#define SIMULATED_IIC_4_FREQ_CALIBRATION 80U
/******************************************************************************
确认信号
******************************************************************************/
#define SIMULATED_IIC_4_ACK 0U // 肯定应答
#define SIMULATED_IIC_4_NAK 1U // 否定应答
#define SIMULATED_IIC_4_INVALID_ACK 2U // 无效的应答信号(应答信号还未收到)
/******************************************************************************
函数声明
******************************************************************************/
void Simulated_IIC_4_Init(void);
void Simulated_IIC_4_Start(void);
void Simulated_IIC_4_Stop(void);
void Simulated_IIC_4_Transmit_Data(uint8_t Data);
uint8_t Simulated_IIC_4_Receive_Data(void);
void Simulated_IIC_4_Transmit_ACK(uint8_t ACK);
uint8_t Simulated_IIC_4_Receive_ACK(void);
void Simulated_IIC_4_Delay(void);
/*void Simulated_IIC_4_Slave_Service(void);*/
#endif
\ No newline at end of file
......@@ -108,7 +108,7 @@ void Sys_100ms_Tasks(void)
ADC_4=g_u16ADCValue[i];
}
}
SGM4591Q_Control();
// SGM4591Q_Control();
// Port_SetPinDirection(Port_Config_PortGroup4_PortPin8, PORT_PIN_OUT);
Dio_WriteChannel(DioConf_DioChannel_P04_08, STD_LOW);
......
#include "init.h"
#include "Sys_Scheduler.h"
#include "Simulated_IIC_1_Master.h"
#include "Simulated_IIC_2_Master.h"
#include "Simulated_IIC_3_Master.h"
#include "Simulated_IIC_4_Master.h"
#include "MC33984EHFK.h"
#define ADC_MODULE_SAMPLE//sophia add
......@@ -448,7 +451,10 @@ void Sys_Startup_Init(void)
************************** SPI module test ***********************************
*****************************************************************************/
Simulated_IIC_1_Init( );
Simulated_IIC_2_Init( );
Simulated_IIC_3_Init( );
Simulated_IIC_4_Init( );
MC33984EHFK_Init( );
#ifdef SPI_MODULE_SAMPLE
......
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