Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
ZhongTong-ZR5-A
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵康弘
ZhongTong-ZR5-A
Commits
afdc20fa
Commit
afdc20fa
authored
Sep 24, 2025
by
赵康弘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf: 高边输出驱动控制
parent
f6475d94
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
2322 additions
and
354 deletions
+2322
-354
SGM4591Q.c
GHS/App/SGM4591Q.c
+436
-67
SGM4591Q.h
GHS/App/SGM4591Q.h
+53
-10
TPS2HB35AQPWPRQ1.c
GHS/App/TPS2HB35AQPWPRQ1.c
+788
-237
Driver.gpj
GHS/Driver/Driver.gpj
+8
-2
Simulated_IIC_1_Master.c
GHS/Driver/Simulated_IIC_1_Master.c
+299
-0
Simulated_IIC_1_Master.h
GHS/Driver/Simulated_IIC_1_Master.h
+32
-0
Simulated_IIC_2_Master.c
GHS/Driver/Simulated_IIC_2_Master.c
+37
-37
Simulated_IIC_3_Master.c
GHS/Driver/Simulated_IIC_3_Master.c
+299
-0
Simulated_IIC_3_Master.h
GHS/Driver/Simulated_IIC_3_Master.h
+32
-0
Simulated_IIC_4_Master.c
GHS/Driver/Simulated_IIC_4_Master.c
+299
-0
Simulated_IIC_4_Master.h
GHS/Driver/Simulated_IIC_4_Master.h
+32
-0
Sys_Task_List.c
GHS/System/Sys_Task_List.c
+1
-1
init.c
GHS/System/init.c
+6
-0
No files found.
GHS/App/SGM4591Q.c
View file @
afdc20fa
This diff is collapsed.
Click to expand it.
GHS/App/SGM4591Q.h
View file @
afdc20fa
...
@@ -28,16 +28,59 @@ typedef enum
...
@@ -28,16 +28,59 @@ typedef enum
SGM4591Q_Segment1
,
SGM4591Q_Segment1
,
}
SGM4591Q_Segment
;
}
SGM4591Q_Segment
;
/*SGM4591Q端口*/
typedef
struct
#define SGM4591Q_PIN0 0x01u
{
#define SGM4591Q_PIN1 0x02u
uint8_t
PIN_0
:
1
;
#define SGM4591Q_PIN2 0x04u
uint8_t
PIN_1
:
1
;
#define SGM4591Q_PIN3 0x08u
uint8_t
PIN_2
:
1
;
#define SGM4591Q_PIN4 0x10u
uint8_t
PIN_3
:
1
;
#define SGM4591Q_PIN5 0x20u
uint8_t
PIN_4
:
1
;
#define SGM4591Q_PIN6 0x40u
uint8_t
PIN_5
:
1
;
#define SGM4591Q_PIN7 0x80u
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
;
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
);
void
SGM4591Q_Control
(
void
);
GHS/App/TPS2HB35AQPWPRQ1.c
View file @
afdc20fa
This diff is collapsed.
Click to expand it.
GHS/Driver/Driver.gpj
View file @
afdc20fa
#!gbuild
#!gbuild
[Subproject]
[Subproject]
Simulated_
SPI
_Master.c
Simulated_
IIC_1
_Master.c
Simulated_
SPI
_Master.h
Simulated_
IIC_1
_Master.h
Simulated_IIC_2_Master.c
Simulated_IIC_2_Master.c
Simulated_IIC_2_Master.h
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.c
CAN\Rscan.h
CAN\Rscan.h
CAN\RSCAN_Table.c
CAN\RSCAN_Table.c
...
...
GHS/Driver/Simulated_IIC_1_Master.c
0 → 100644
View file @
afdc20fa
#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
();
}
}
GHS/Driver/Simulated_IIC_1_Master.h
0 → 100644
View file @
afdc20fa
#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
GHS/Driver/Simulated_IIC_2_Master.c
View file @
afdc20fa
...
@@ -10,36 +10,36 @@ SDA:P22-3
...
@@ -10,36 +10,36 @@ SDA:P22-3
SCL:P22-4
SCL:P22-4
*/
*/
/*时钟输入*/
/*时钟输入*/
void
SGM4591Q_Clock_Input
(
void
)
void
SGM4591Q_Clock
2
_Input
(
void
)
{
{
Port_SetPinDirection
(
Port_Config_PortGroup2
2
_PortPin4
,
PORT_PIN_IN
);
Port_SetPinDirection
(
Port_Config_PortGroup2
1
_PortPin4
,
PORT_PIN_IN
);
}
}
/*时钟输出低*/
/*时钟输出低*/
void
SGM4591Q_Clock_Output
(
void
)
void
SGM4591Q_Clock
2
_Output
(
void
)
{
{
Port_SetPinDirection
(
Port_Config_PortGroup2
2
_PortPin4
,
PORT_PIN_OUT
);
Port_SetPinDirection
(
Port_Config_PortGroup2
1
_PortPin4
,
PORT_PIN_OUT
);
Dio_WriteChannel
(
DioConf_DioChannel_P2
2
_04
,
STD_LOW
);
Dio_WriteChannel
(
DioConf_DioChannel_P2
1
_04
,
STD_LOW
);
}
}
/*数据设置输入*/
/*数据设置输入*/
void
SGM4591Q_Data_Input
(
void
)
void
SGM4591Q_Data
2
_Input
(
void
)
{
{
Port_SetPinDirection
(
Port_Config_PortGroup2
2_PortPin3
,
PORT_PIN_IN
);
Port_SetPinDirection
(
Port_Config_PortGroup2
1_PortPin5
,
PORT_PIN_IN
);
}
}
/*数据输入高低电平*/
/*数据输入高低电平*/
uint8_t
SGM4591Q_Data_Input_Value
(
void
)
uint8_t
SGM4591Q_Data
2
_Input_Value
(
void
)
{
{
uint8_t
Data
;
uint8_t
Data
;
Data
=
Dio_ReadChannel
(
Port_Config_PortGroup2
2_PortPin3
);
Data
=
Dio_ReadChannel
(
Port_Config_PortGroup2
1_PortPin5
);
return
Data
;
return
Data
;
}
}
/*数据输出低*/
/*数据输出低*/
void
SGM4591Q_Data_Output_Low
(
void
)
void
SGM4591Q_Data
2
_Output_Low
(
void
)
{
{
Port_SetPinDirection
(
Port_Config_PortGroup2
2_PortPin3
,
PORT_PIN_OUT
);
Port_SetPinDirection
(
Port_Config_PortGroup2
1_PortPin5
,
PORT_PIN_OUT
);
Dio_WriteChannel
(
DioConf_DioChannel_P2
2_03
,
STD_LOW
);
Dio_WriteChannel
(
DioConf_DioChannel_P2
1_05
,
STD_LOW
);
}
}
/******************************************************************************
/******************************************************************************
...
@@ -51,12 +51,12 @@ void SGM4591Q_Data_Output_Low(void)
...
@@ -51,12 +51,12 @@ void SGM4591Q_Data_Output_Low(void)
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
...
@@ -74,24 +74,24 @@ void Simulated_IIC_2_Start(void)
...
@@ -74,24 +74,24 @@ 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
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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;
SGM4591Q_Data_Output_Low
();
SGM4591Q_Data
2
_Output_Low
();
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;
SGM4591Q_Clock_Output
();
SGM4591Q_Clock
2
_Output
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
}
}
...
@@ -107,17 +107,17 @@ void Simulated_IIC_2_Stop(void)
...
@@ -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_SDA_DIR = GPIO_DIR_OUT; // SDA输出0,此时SDA = 0
// SIMULATED_IIC_2_OUT_SDA = 0;
// SIMULATED_IIC_2_OUT_SDA = 0;
SGM4591Q_Data_Output_Low
();
SGM4591Q_Data
2
_Output_Low
();
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
}
}
...
@@ -139,46 +139,46 @@ void Simulated_IIC_2_Transmit_Data(uint8_t Data)
...
@@ -139,46 +139,46 @@ void Simulated_IIC_2_Transmit_Data(uint8_t Data)
if
((
Data
&
0x80
)
!=
0U
)
if
((
Data
&
0x80
)
!=
0U
)
{
{
// 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
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
}
}
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;
SGM4591Q_Data_Output_Low
();
SGM4591Q_Data
2
_Output_Low
();
}
}
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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;
SGM4591Q_Clock_Output
();
SGM4591Q_Clock
2
_Output
();
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为输入状态
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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;
u8SimulatedIIC2ReceivedACK
=
SGM4591Q_Data_Input_Value
();
u8SimulatedIIC2ReceivedACK
=
SGM4591Q_Data
2
_Input_Value
();
// 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;
SGM4591Q_Clock_Output
();
SGM4591Q_Clock
2
_Output
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
}
}
...
@@ -196,7 +196,7 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
...
@@ -196,7 +196,7 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
Data
=
0
;
Data
=
0
;
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
// SIMULATED_IIC_2_SDA_DIR = GPIO_DIR_IN; // 设置SDA为输入状态
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
...
@@ -205,17 +205,17 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
...
@@ -205,17 +205,17 @@ uint8_t Simulated_IIC_2_Receive_Data(void)
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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;
Data
|=
SGM4591Q_Data_Input_Value
();
Data
|=
SGM4591Q_Data
2
_Input_Value
();
// 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;
SGM4591Q_Clock_Output
();
SGM4591Q_Clock
2
_Output
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
}
}
...
@@ -242,24 +242,24 @@ void Simulated_IIC_2_Transmit_ACK(uint8_t ACK)
...
@@ -242,24 +242,24 @@ void Simulated_IIC_2_Transmit_ACK(uint8_t ACK)
if
(
ACK
!=
0U
)
if
(
ACK
!=
0U
)
{
{
// 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
SGM4591Q_Data_Input
();
SGM4591Q_Data
2
_Input
();
}
}
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;
SGM4591Q_Data_Output_Low
();
SGM4591Q_Data
2
_Output_Low
();
}
}
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
SGM4591Q_Clock_Input
();
SGM4591Q_Clock
2
_Input
();
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;
SGM4591Q_Clock_Output
();
SGM4591Q_Clock
2
_Output
();
Simulated_IIC_2_Delay
();
Simulated_IIC_2_Delay
();
}
}
...
...
GHS/Driver/Simulated_IIC_3_Master.c
0 → 100644
View file @
afdc20fa
#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
();
}
}
GHS/Driver/Simulated_IIC_3_Master.h
0 → 100644
View file @
afdc20fa
#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
GHS/Driver/Simulated_IIC_4_Master.c
0 → 100644
View file @
afdc20fa
#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
();
}
}
GHS/Driver/Simulated_IIC_4_Master.h
0 → 100644
View file @
afdc20fa
#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
GHS/System/Sys_Task_List.c
View file @
afdc20fa
...
@@ -108,7 +108,7 @@ void Sys_100ms_Tasks(void)
...
@@ -108,7 +108,7 @@ void Sys_100ms_Tasks(void)
ADC_4
=
g_u16ADCValue
[
i
];
ADC_4
=
g_u16ADCValue
[
i
];
}
}
}
}
SGM4591Q_Control
();
//
SGM4591Q_Control();
// Port_SetPinDirection(Port_Config_PortGroup4_PortPin8, PORT_PIN_OUT);
// Port_SetPinDirection(Port_Config_PortGroup4_PortPin8, PORT_PIN_OUT);
Dio_WriteChannel
(
DioConf_DioChannel_P04_08
,
STD_LOW
);
Dio_WriteChannel
(
DioConf_DioChannel_P04_08
,
STD_LOW
);
...
...
GHS/System/init.c
View file @
afdc20fa
#include "init.h"
#include "init.h"
#include "Sys_Scheduler.h"
#include "Sys_Scheduler.h"
#include "Simulated_IIC_1_Master.h"
#include "Simulated_IIC_2_Master.h"
#include "Simulated_IIC_2_Master.h"
#include "Simulated_IIC_3_Master.h"
#include "Simulated_IIC_4_Master.h"
#include "MC33984EHFK.h"
#include "MC33984EHFK.h"
#define ADC_MODULE_SAMPLE//sophia add
#define ADC_MODULE_SAMPLE//sophia add
...
@@ -448,7 +451,10 @@ void Sys_Startup_Init(void)
...
@@ -448,7 +451,10 @@ void Sys_Startup_Init(void)
************************** SPI module test ***********************************
************************** SPI module test ***********************************
*****************************************************************************/
*****************************************************************************/
Simulated_IIC_1_Init
(
);
Simulated_IIC_2_Init
(
);
Simulated_IIC_2_Init
(
);
Simulated_IIC_3_Init
(
);
Simulated_IIC_4_Init
(
);
MC33984EHFK_Init
(
);
MC33984EHFK_Init
(
);
#ifdef SPI_MODULE_SAMPLE
#ifdef SPI_MODULE_SAMPLE
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment