Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
HaoJin232
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
时昊
HaoJin232
Commits
7a571ddf
Commit
7a571ddf
authored
Feb 20, 2024
by
时昊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🎉
init:增加光感功能,增加模拟iic
parent
46899d54
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
746 additions
and
1259 deletions
+746
-1259
PowerManagement_user.c
...source/Application/PowerManagement/PowerManagement_user.c
+4
-2
Emulated_EEPROM.h
HJ232_Source/source/Driver/inc/Emulated_EEPROM.h
+0
-68
Emulated_EEPROM_Access.h
HJ232_Source/source/Driver/inc/Emulated_EEPROM_Access.h
+0
-57
IIC.h
HJ232_Source/source/Driver/inc/IIC.h
+32
-0
LtDet_Simulated_IIC_Master.h
HJ232_Source/source/Driver/inc/LtDet_Simulated_IIC_Master.h
+0
-39
bsp_BU27030.h
HJ232_Source/source/Driver/inc/bsp_BU27030.h
+15
-0
Emulated_EEPROM.c
HJ232_Source/source/Driver/src/Emulated_EEPROM.c
+0
-155
Emulated_EEPROM_Access.c
HJ232_Source/source/Driver/src/Emulated_EEPROM_Access.c
+0
-609
IIC.c
HJ232_Source/source/Driver/src/IIC.c
+373
-0
LtDet_Simulated_IIC_Master.c
HJ232_Source/source/Driver/src/LtDet_Simulated_IIC_Master.c
+0
-262
bsp_BU27030.c
HJ232_Source/source/Driver/src/bsp_BU27030.c
+184
-0
common.h
HJ232_Source/source/System/common.h
+3
-0
tasks.c
HJ232_Source/source/System/tasks.c
+1
-1
tim4DelayCounter.uvoptx
HJ232_Source/tim4DelayCounter.uvoptx
+113
-65
tim4DelayCounter.uvprojx
HJ232_Source/tim4DelayCounter.uvprojx
+21
-1
No files found.
HJ232_Source/source/Application/PowerManagement/PowerManagement_user.c
View file @
7a571ddf
...
@@ -51,6 +51,7 @@ void Power_KL30_Init ( void )
...
@@ -51,6 +51,7 @@ void Power_KL30_Init ( void )
BU98R10_Init
();
BU98R10_Init
();
Data_User_Mileage_KL30Init
();
Data_User_Mileage_KL30Init
();
BU2703_Senser_Init
();
}
}
...
@@ -200,10 +201,11 @@ void Power_Wakeup_Init ( void )
...
@@ -200,10 +201,11 @@ void Power_Wakeup_Init ( void )
Common_DataInit
();
Common_DataInit
();
BU98R10_Init
();
BU98R10_Init
();
APP_CAN_Init
();
APP_CAN_Init
();
Data_User_Mileage_WakeupInit
();
Data_User_Mileage_WakeupInit
();
BU2703_Senser_Init
();
}
}
...
@@ -238,7 +240,7 @@ void Power_IG_ON_Init(void)
...
@@ -238,7 +240,7 @@ void Power_IG_ON_Init(void)
Common_Set_IG_Sts
(
COMMON_POWER_ON
);
Common_Set_IG_Sts
(
COMMON_POWER_ON
);
// UART2_Init(115200);
// UART2_Init(115200);
BU2703_Senser_Init
();
...
...
HJ232_Source/source/Driver/inc/Emulated_EEPROM.h
deleted
100644 → 0
View file @
46899d54
#ifndef EMULATED_EEPROM_H__
#define EMULATED_EEPROM_H__
typedef
enum
{
EEPROM_STAT_BLANK
=
0U
,
EEPROM_STAT_ACTIVE
,
EEPROM_STAT_ERROR
,
}
EEPROM_Block_Status_en_t
;
typedef
enum
{
EEPROM_RW_PASS
=
0
,
EEPROM_RW_FAIL
,
}
EEPROM_RW_Result_en_t
;
typedef
enum
{
EEPROM_STAT_IDLE
=
0
,
EEPROM_STAT_BUSY
,
}
EEPROM_Status_en_t
;
/****************************************************************************
* !!! The following code should be generated by configuration tool !!! *
****************************************************************************/
enum
g_enEEPROMBlockName
{
EEPROM_BLOCK_UDS_FLAG
=
0U
,
EEPROM_BLOCK_UDS_S27
=
1U
,
EEPROM_BLOCK_UDS_S2E0
=
2U
,
EEPROM_BLOCK_UDS_S2E
=
3U
,
EEPROM_BLOCK_UDS_CONFIG
=
4U
,
EEPROM_BLOCK_UDS_DTC
=
5U
,
EEPROM_BLOCK_ODO
=
6U
,
EEPROM_BLOCK_ODO_STAMP
=
7U
,
EEPROM_BLOCK_TRIP_STAMP
=
8U
,
EEPROM_BLOCK_SERVICE_INFO
=
9U
,
EEPROM_BLOCK_UE_INFO
=
10U
,
};
#define EEPROM_BLOCK_UDS_FLAG_SIZE (16U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UDS_S27_SIZE (16U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UDS_S2E0_SIZE (216U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UDS_S2E_SIZE (216U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UDS_CONFIG_SIZE (40U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UDS_DTC_SIZE (76U)
/*Life:20.0W*/
#define EEPROM_BLOCK_ODO_SIZE (4U)
/*Life:1000.0W*/
#define EEPROM_BLOCK_ODO_STAMP_SIZE (8U)
/*Life:1000.0W*/
#define EEPROM_BLOCK_TRIP_STAMP_SIZE (16U)
/*Life:1000.0W*/
#define EEPROM_BLOCK_SERVICE_INFO_SIZE (56U)
/*Life:20.0W*/
#define EEPROM_BLOCK_UE_INFO_SIZE (124U)
/*Life:100.0W*/
#define EEPROM_TOTAL_BLOCK_NUM (11U)
/****************************************************************************
* !!! End of code generation !!! *
****************************************************************************/
extern
void
EEPROM_Init
(
void
);
extern
EEPROM_Status_en_t
EEPROM_Get_Status
(
void
);
extern
EEPROM_Block_Status_en_t
EEPROM_Get_Block_Status
(
uint16_t
u16BlockID
);
extern
EEPROM_RW_Result_en_t
EEPROM_Read_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
);
extern
EEPROM_RW_Result_en_t
EEPROM_Write_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
);
#endif
HJ232_Source/source/Driver/inc/Emulated_EEPROM_Access.h
deleted
100644 → 0
View file @
46899d54
#ifndef EMULATED_EEPROM_ACCESS_H__
#define EMULATED_EEPROM_ACCESS_H__
typedef
struct
{
uint32_t
u32StartAddr
;
uint32_t
u32EndAddr
;
uint32_t
u32DataSize
;
uint32_t
*
pu32DataBuffer
;
}
EEPROM_Block_st_t
;
typedef
struct
{
uint8_t
u8Status
;
uint8_t
u8SectorOffset
;
uint16_t
u16SectorSize
;
uint32_t
u32BaseAddr
;
uint16_t
u16Index
;
uint16_t
u16RecordNum
;
uint16_t
u16MaxRecordNum
;
uint16_t
u16BlockSize
;
uint32_t
*
pu32Data
;
}
EEPROM_Block_Access_st_t
;
typedef
void
(
*
EEPROM_Mem_Erase_Func_ptr_t
)
(
uint32_t
,
uint32_t
);
typedef
uint32_t
(
*
EEPROM_Mem_Blank_Chk_Func_ptr_t
)
(
uint32_t
,
uint32_t
);
typedef
void
(
*
EEPROM_Mem_Read_Func_ptr_t
)
(
uint32_t
,
uint32_t
*
,
uint32_t
);
typedef
void
(
*
EEPROM_Mem_Write_Func_ptr_t
)
(
uint32_t
,
uint32_t
*
,
uint32_t
);
typedef
struct
{
EEPROM_Mem_Erase_Func_ptr_t
pfnMemErase
;
EEPROM_Mem_Blank_Chk_Func_ptr_t
pfnMemBlankChk
;
EEPROM_Mem_Read_Func_ptr_t
pfnMemRead
;
EEPROM_Mem_Write_Func_ptr_t
pfnMemWrite
;
}
EEPROM_Media_Access_st_t
;
#define EEPROM_BLOCK_BLANK (0U)
#define EEPROM_BLOCK_ACTIVE (1U)
#define EEPROM_BLOCK_ERROR (2U)
#define EEPROM_BLOCK_CTRL_BYTE_SIZE (8U)
extern
void
EEPROM_Access_Init
(
const
EEPROM_Block_st_t
*
pstBlockTable
,
EEPROM_Block_Access_st_t
*
pstBlockAccess
,
EEPROM_Media_Access_st_t
*
pstMediaAccess
,
uint16_t
u16BlockNum
);
extern
uint8_t
EEPROM_Access_Busy
(
void
);
extern
uint8_t
EEPROM_Block_Access_Status
(
uint16_t
u16BlockID
);
extern
uint8_t
EEPROM_Read_Block_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
);
extern
uint8_t
EEPROM_Write_Block_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
);
extern
void
EEPROM_Mem_Access_Complete_Callback
(
void
);
#endif
HJ232_Source/source/Driver/inc/IIC.h
0 → 100644
View file @
7a571ddf
#include "common.h"
#define IIC_WaitOverTime 50
/******************************************************************************
引脚定义
******************************************************************************/
#define SCL_LED_DRIVER_PORT PORT6
#define SCL_LED_DRIVER_PIN PIN2
#define SDA_LED_DRIVER_PORT PORT6
#define SDA_LED_DRIVER_PIN PIN3
/******************************************************************************
函数声明
******************************************************************************/
extern
void
Simulated_IIC_2_Init
(
void
);
extern
void
bsp_IIC_delay
(
uint32_t
time
);
extern
void
bsp_IIC_Start
(
void
);
extern
void
bsp_IIC_Stop
(
void
);
extern
void
bsp_IIC_NACK
(
void
);
extern
void
bsp_IIC_ACK
(
void
);
extern
void
bsp_IIC_SendByte
(
uint8_t
Data
);
extern
uint8_t
bsp_IIC_ReadByte
(
void
);
extern
uint8_t
bsp_IIC_WaitAck
(
void
);
extern
void
Simulated_Release_SCL
(
void
);
extern
void
bsp_IIC_nop
(
void
);
HJ232_Source/source/Driver/inc/LtDet_Simulated_IIC_Master.h
deleted
100644 → 0
View file @
46899d54
/******************************************************************************
文 件 名:Simulated_IIC_Master.h
功能描述:IO端口模拟的IIC(I2C)主机函数库头文件
作 者:张暄
版 本:V1.0
日 期:2016.12.21
******************************************************************************/
#ifndef _SIMULATED_IIC_MASTER_H_
#define _SIMULATED_IIC_MASTER_H_
#include "common.h"
/******************************************************************************
1us延时校准
******************************************************************************/
#define IIC_FREQ_CALIBRATION 4
/******************************************************************************
确认信号
******************************************************************************/
#define IIC_ACK 0 //肯定应答
#define IIC_NAK 1 //否定应答
#define IIC_INVALID_ACK 2 //无效的应答信号(应答信号还未收到)
/******************************************************************************
函数声明
******************************************************************************/
void
LtDet_IIC_Init
(
void
);
void
LtDet_IIC_Start
(
void
);
void
LtDet_IIC_Stop
(
void
);
void
LtDet_IIC_Transmit_Data
(
uint8_t
Data
);
uint8_t
LtDet_IIC_Receive_Data
(
void
);
void
LtDet_IIC_Transmit_ACK
(
uint8_t
ACK
);
uint8_t
LtDet_IIC_Receive_ACK
(
void
);
void
LtDet_IIC_Delay
(
void
);
#endif
HJ232_Source/source/Driver/inc/bsp_BU27030.h
0 → 100644
View file @
7a571ddf
#ifndef __BSP_BU27030_H_
#define __BSP_BU27030_H_
#include "common.h"
void
BU2703_Read_Datas
(
void
);
uint16_t
BU2703_Get_Data1
(
void
);
void
BU2703_Senser_Init
(
void
);
void
LIGHT_IIC_Write_Data
(
uint8_t
devAddr
,
uint8_t
len
,
uint8_t
*
Data
);
uint8_t
LIGHT_IIC_Read_Byte
(
uint8_t
devAddr
,
uint8_t
addr2
,
uint8_t
*
pData
);
void
App_SortNWord_u16
(
uint16_t
*
SortData
,
uint8_t
len
);
void
App_SwapWord_u16
(
uint16_t
*
pData1
,
uint16_t
*
pData2
);
#endif
HJ232_Source/source/Driver/src/Emulated_EEPROM.c
deleted
100644 → 0
View file @
46899d54
#include "r_typedefs.h"
#include "Internal_Flash.h"
#include "Emulated_EEPROM.h"
#include "Emulated_EEPROM_Access.h"
/****************************************************************************
* !!! The following code should be generated by configuration tool !!! *
****************************************************************************/
#define EEPROM_BLOCK0_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_FLAG_SIZE)
uint32_t
g_u32EEPROMBlock0Buffer
[
EEPROM_BLOCK0_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK1_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_S27_SIZE)
uint32_t
g_u32EEPROMBlock1Buffer
[
EEPROM_BLOCK1_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK2_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_S2E0_SIZE)
uint32_t
g_u32EEPROMBlock2Buffer
[
EEPROM_BLOCK2_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK3_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_S2E_SIZE)
uint32_t
g_u32EEPROMBlock3Buffer
[
EEPROM_BLOCK3_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK4_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_CONFIG_SIZE)
uint32_t
g_u32EEPROMBlock4Buffer
[
EEPROM_BLOCK4_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK5_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UDS_DTC_SIZE)
uint32_t
g_u32EEPROMBlock5Buffer
[
EEPROM_BLOCK5_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK6_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_ODO_SIZE)
uint32_t
g_u32EEPROMBlock6Buffer
[
EEPROM_BLOCK6_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK7_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_ODO_STAMP_SIZE)
uint32_t
g_u32EEPROMBlock7Buffer
[
EEPROM_BLOCK7_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK8_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_TRIP_STAMP_SIZE)
uint32_t
g_u32EEPROMBlock8Buffer
[
EEPROM_BLOCK8_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK9_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_SERVICE_INFO_SIZE)
uint32_t
g_u32EEPROMBlock9Buffer
[
EEPROM_BLOCK9_BUFFER_SIZE
/
4U
];
#define EEPROM_BLOCK10_BUFFER_SIZE (EEPROM_BLOCK_CTRL_BYTE_SIZE + EEPROM_BLOCK_UE_INFO_SIZE)
uint32_t
g_u32EEPROMBlock10Buffer
[
EEPROM_BLOCK10_BUFFER_SIZE
/
4U
];
static
const
EEPROM_Block_st_t
g_stEEPROMBlockTable
[]
=
{
/* u32StartAddr u32EndAddr u32DataSize pu32DataBuffer */
{
0xFF200000UL
,
0xFF20007FUL
,
EEPROM_BLOCK0_BUFFER_SIZE
,
g_u32EEPROMBlock0Buffer
,},
{
0xFF200080UL
,
0xFF2000FFUL
,
EEPROM_BLOCK1_BUFFER_SIZE
,
g_u32EEPROMBlock1Buffer
,},
{
0xFF200100UL
,
0xFF2002FFUL
,
EEPROM_BLOCK2_BUFFER_SIZE
,
g_u32EEPROMBlock2Buffer
,},
{
0xFF200300UL
,
0xFF2004FFUL
,
EEPROM_BLOCK3_BUFFER_SIZE
,
g_u32EEPROMBlock3Buffer
,},
{
0xFF200500UL
,
0xFF20057FUL
,
EEPROM_BLOCK4_BUFFER_SIZE
,
g_u32EEPROMBlock4Buffer
,},
{
0xFF200580UL
,
0xFF20067FUL
,
EEPROM_BLOCK5_BUFFER_SIZE
,
g_u32EEPROMBlock5Buffer
,},
{
0xFF200680UL
,
0xFF200A7FUL
,
EEPROM_BLOCK6_BUFFER_SIZE
,
g_u32EEPROMBlock6Buffer
,},
{
0xFF200A80UL
,
0xFF200F7FUL
,
EEPROM_BLOCK7_BUFFER_SIZE
,
g_u32EEPROMBlock7Buffer
,},
{
0xFF200F80UL
,
0xFF20197FUL
,
EEPROM_BLOCK8_BUFFER_SIZE
,
g_u32EEPROMBlock8Buffer
,},
{
0xFF201980UL
,
0xFF2019FFUL
,
EEPROM_BLOCK9_BUFFER_SIZE
,
g_u32EEPROMBlock9Buffer
,},
{
0xFF201A00UL
,
0xFF201FFFUL
,
EEPROM_BLOCK10_BUFFER_SIZE
,
g_u32EEPROMBlock10Buffer
,},
};
/****************************************************************************
* !!! End of code generation !!! *
****************************************************************************/
EEPROM_Block_Access_st_t
g_stEEPROMBlockAccess
[
EEPROM_TOTAL_BLOCK_NUM
];
void
EEPROM_Init
(
void
)
{
EEPROM_Media_Access_st_t
stFlashAccessFunc
;
stFlashAccessFunc
.
pfnMemErase
=
Int_Data_Flash_Erase
;
stFlashAccessFunc
.
pfnMemBlankChk
=
Int_Data_Flash_Blank_Check
;
stFlashAccessFunc
.
pfnMemRead
=
Int_Data_Flash_Read
;
stFlashAccessFunc
.
pfnMemWrite
=
Int_Data_Flash_Write
;
Int_Data_Flash_Register_P_E_Complete_Cb
(
EEPROM_Mem_Access_Complete_Callback
);
EEPROM_Access_Init
(
g_stEEPROMBlockTable
,
g_stEEPROMBlockAccess
,
&
stFlashAccessFunc
,
EEPROM_TOTAL_BLOCK_NUM
);
}
EEPROM_Status_en_t
EEPROM_Get_Status
(
void
)
{
EEPROM_Status_en_t
enStatus
;
if
(
EEPROM_Access_Busy
())
{
enStatus
=
EEPROM_STAT_BUSY
;
}
else
{
enStatus
=
EEPROM_STAT_IDLE
;
}
return
enStatus
;
}
EEPROM_Block_Status_en_t
EEPROM_Get_Block_Status
(
uint16_t
u16BlockID
)
{
uint8_t
u8BlockStatus
;
EEPROM_Block_Status_en_t
enStatus
;
u8BlockStatus
=
EEPROM_Block_Access_Status
(
u16BlockID
);
if
(
u8BlockStatus
==
EEPROM_BLOCK_BLANK
)
{
enStatus
=
EEPROM_STAT_BLANK
;
}
else
if
(
u8BlockStatus
==
EEPROM_BLOCK_ACTIVE
)
{
enStatus
=
EEPROM_STAT_ACTIVE
;
}
else
{
enStatus
=
EEPROM_STAT_ERROR
;
}
return
enStatus
;
}
EEPROM_RW_Result_en_t
EEPROM_Read_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
)
{
uint8_t
u8Error
;
EEPROM_RW_Result_en_t
enResult
;
u8Error
=
EEPROM_Read_Block_Data
(
u16BlockID
,
u32Data
,
u16Len
);
if
(
u8Error
)
{
enResult
=
EEPROM_RW_FAIL
;
}
else
{
enResult
=
EEPROM_RW_PASS
;
}
return
enResult
;
}
EEPROM_RW_Result_en_t
EEPROM_Write_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
)
{
uint8_t
u8Error
;
EEPROM_RW_Result_en_t
enResult
;
u8Error
=
EEPROM_Write_Block_Data
(
u16BlockID
,
u32Data
,
u16Len
);
if
(
u8Error
)
{
enResult
=
EEPROM_RW_FAIL
;
}
else
{
enResult
=
EEPROM_RW_PASS
;
}
return
enResult
;
}
HJ232_Source/source/Driver/src/Emulated_EEPROM_Access.c
deleted
100644 → 0
View file @
46899d54
#include "stddef.h"
#include "stdint.h"
#include "Emulated_EEPROM_Access.h"
typedef
union
{
uint32_t
u32Word
[
1U
];
struct
{
uint16_t
u16Index
;
uint16_t
u16IndexInv
;
}
stField
;
}
EEPROM_Ctrl_Data_un_t
;
typedef
struct
{
uint8_t
u8State
;
uint16_t
u16BlockNum
;
uint16_t
u16ProgLen
;
uint32_t
u32ProgAddr
;
uint32_t
*
pu32ProgData
;
}
EEPROM_Access_Ctrl_st_t
;
#define EEPROM_BLANK_CHECK_RECORD_NUM (3U)
#define EEPROM_OVER_SEARCH_RECORD_NUM (3U)
#define EEPROM_WR_STATE_IDLE (0U)
#define EEPROM_WR_STATE_ERASE (1U)
#define EEPROM_WR_STATE_PROG (2U)
// --------------------------------------------------------------
// CRC16计算方法1:使用2个256长度的校验表
// --------------------------------------------------------------
static
const
uint8_t
g_u8EEPROMCRCTableH
[]
=
{
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x01U
,
0xC0U
,
0x80U
,
0x41U
,
0x00U
,
0xC1U
,
0x81U
,
0x40U
,
};
static
const
uint8_t
g_u8EEPROMCRCTableL
[]
=
{
0x00U
,
0xC0U
,
0xC1U
,
0x01U
,
0xC3U
,
0x03U
,
0x02U
,
0xC2U
,
0xC6U
,
0x06U
,
0x07U
,
0xC7U
,
0x05U
,
0xC5U
,
0xC4U
,
0x04U
,
0xCCU
,
0x0CU
,
0x0DU
,
0xCDU
,
0x0FU
,
0xCFU
,
0xCEU
,
0x0EU
,
0x0AU
,
0xCAU
,
0xCBU
,
0x0BU
,
0xC9U
,
0x09U
,
0x08U
,
0xC8U
,
0xD8U
,
0x18U
,
0x19U
,
0xD9U
,
0x1BU
,
0xDBU
,
0xDAU
,
0x1AU
,
0x1EU
,
0xDEU
,
0xDFU
,
0x1FU
,
0xDDU
,
0x1DU
,
0x1CU
,
0xDCU
,
0x14U
,
0xD4U
,
0xD5U
,
0x15U
,
0xD7U
,
0x17U
,
0x16U
,
0xD6U
,
0xD2U
,
0x12U
,
0x13U
,
0xD3U
,
0x11U
,
0xD1U
,
0xD0U
,
0x10U
,
0xF0U
,
0x30U
,
0x31U
,
0xF1U
,
0x33U
,
0xF3U
,
0xF2U
,
0x32U
,
0x36U
,
0xF6U
,
0xF7U
,
0x37U
,
0xF5U
,
0x35U
,
0x34U
,
0xF4U
,
0x3CU
,
0xFCU
,
0xFDU
,
0x3DU
,
0xFFU
,
0x3FU
,
0x3EU
,
0xFEU
,
0xFAU
,
0x3AU
,
0x3BU
,
0xFBU
,
0x39U
,
0xF9U
,
0xF8U
,
0x38U
,
0x28U
,
0xE8U
,
0xE9U
,
0x29U
,
0xEBU
,
0x2BU
,
0x2AU
,
0xEAU
,
0xEEU
,
0x2EU
,
0x2FU
,
0xEFU
,
0x2DU
,
0xEDU
,
0xECU
,
0x2CU
,
0xE4U
,
0x24U
,
0x25U
,
0xE5U
,
0x27U
,
0xE7U
,
0xE6U
,
0x26U
,
0x22U
,
0xE2U
,
0xE3U
,
0x23U
,
0xE1U
,
0x21U
,
0x20U
,
0xE0U
,
0xA0U
,
0x60U
,
0x61U
,
0xA1U
,
0x63U
,
0xA3U
,
0xA2U
,
0x62U
,
0x66U
,
0xA6U
,
0xA7U
,
0x67U
,
0xA5U
,
0x65U
,
0x64U
,
0xA4U
,
0x6CU
,
0xACU
,
0xADU
,
0x6DU
,
0xAFU
,
0x6FU
,
0x6EU
,
0xAEU
,
0xAAU
,
0x6AU
,
0x6BU
,
0xABU
,
0x69U
,
0xA9U
,
0xA8U
,
0x68U
,
0x78U
,
0xB8U
,
0xB9U
,
0x79U
,
0xBBU
,
0x7BU
,
0x7AU
,
0xBAU
,
0xBEU
,
0x7EU
,
0x7FU
,
0xBFU
,
0x7DU
,
0xBDU
,
0xBCU
,
0x7CU
,
0xB4U
,
0x74U
,
0x75U
,
0xB5U
,
0x77U
,
0xB7U
,
0xB6U
,
0x76U
,
0x72U
,
0xB2U
,
0xB3U
,
0x73U
,
0xB1U
,
0x71U
,
0x70U
,
0xB0U
,
0x50U
,
0x90U
,
0x91U
,
0x51U
,
0x93U
,
0x53U
,
0x52U
,
0x92U
,
0x96U
,
0x56U
,
0x57U
,
0x97U
,
0x55U
,
0x95U
,
0x94U
,
0x54U
,
0x9CU
,
0x5CU
,
0x5DU
,
0x9DU
,
0x5FU
,
0x9FU
,
0x9EU
,
0x5EU
,
0x5AU
,
0x9AU
,
0x9BU
,
0x5BU
,
0x99U
,
0x59U
,
0x58U
,
0x98U
,
0x88U
,
0x48U
,
0x49U
,
0x89U
,
0x4BU
,
0x8BU
,
0x8AU
,
0x4AU
,
0x4EU
,
0x8EU
,
0x8FU
,
0x4FU
,
0x8DU
,
0x4DU
,
0x4CU
,
0x8CU
,
0x44U
,
0x84U
,
0x85U
,
0x45U
,
0x87U
,
0x47U
,
0x46U
,
0x86U
,
0x82U
,
0x42U
,
0x43U
,
0x83U
,
0x41U
,
0x81U
,
0x80U
,
0x40U
,
};
static
uint16_t
EEPROM_CRC_Calc
(
uint32_t
*
pu32Data
,
uint16_t
u16Len
);
EEPROM_Access_Ctrl_st_t
g_stEEPROMAccess
;
EEPROM_Block_Access_st_t
*
g_pstEEPROMBlock
;
EEPROM_Mem_Erase_Func_ptr_t
g_pfnEEPROMMemErase
;
EEPROM_Mem_Blank_Chk_Func_ptr_t
g_pfnEEPROMMemBlankCheck
;
EEPROM_Mem_Read_Func_ptr_t
g_pfnEEPROMMemRead
;
EEPROM_Mem_Write_Func_ptr_t
g_pfnEEPROMMemWrite
;
void
EEPROM_Access_Init
(
const
EEPROM_Block_st_t
*
pstBlockTable
,
EEPROM_Block_Access_st_t
*
pstBlockAccess
,
EEPROM_Media_Access_st_t
*
pstMediaAccess
,
uint16_t
u16BlockNum
)
{
uint16_t
i
;
uint8_t
u8Loop
;
uint8_t
u8Ready
;
uint16_t
u16Index
;
uint16_t
u16IndexBkup
;
uint16_t
u16RecordNum
;
uint16_t
u16MaxRecordNum
[
2U
];
uint16_t
u16WordNum
;
uint16_t
u16Result
;
uint32_t
u32DataAddr
;
uint32_t
u32DataAddrBase
;
uint32_t
u32DataAddrEnd
;
EEPROM_Ctrl_Data_un_t
unCtrlData
;
if
((
pstBlockTable
!=
NULL
)
&&
(
pstBlockAccess
!=
NULL
)
&&
\
(
pstMediaAccess
!=
NULL
)
&&
(
u16BlockNum
!=
0U
))
{
/*** Step 1 : Setup media(data flash) access functions ***/
g_pfnEEPROMMemErase
=
pstMediaAccess
->
pfnMemErase
;
g_pfnEEPROMMemBlankCheck
=
pstMediaAccess
->
pfnMemBlankChk
;
g_pfnEEPROMMemRead
=
pstMediaAccess
->
pfnMemRead
;
g_pfnEEPROMMemWrite
=
pstMediaAccess
->
pfnMemWrite
;
/*** Step 2 : Generate flash read / write control data ***/
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_IDLE
;
g_stEEPROMAccess
.
u16BlockNum
=
u16BlockNum
;
g_pstEEPROMBlock
=
pstBlockAccess
;
for
(
i
=
0U
;
i
<
g_stEEPROMAccess
.
u16BlockNum
;
i
++
)
{
u32DataAddr
=
pstBlockTable
[
i
].
u32EndAddr
-
pstBlockTable
[
i
].
u32StartAddr
+
1UL
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_BLANK
;
g_pstEEPROMBlock
[
i
].
u32BaseAddr
=
pstBlockTable
[
i
].
u32StartAddr
;
g_pstEEPROMBlock
[
i
].
u16SectorSize
=
(
uint16_t
)(
u32DataAddr
/
2UL
);
g_pstEEPROMBlock
[
i
].
u8SectorOffset
=
0U
;
g_pstEEPROMBlock
[
i
].
u16Index
=
0U
;
g_pstEEPROMBlock
[
i
].
u16BlockSize
=
(
uint16_t
)(
pstBlockTable
[
i
].
u32DataSize
);
g_pstEEPROMBlock
[
i
].
u16MaxRecordNum
=
g_pstEEPROMBlock
[
i
].
u16SectorSize
/
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
g_pstEEPROMBlock
[
i
].
u16RecordNum
=
0U
;
g_pstEEPROMBlock
[
i
].
pu32Data
=
pstBlockTable
[
i
].
pu32DataBuffer
;
}
/*** Step 3 : Blank check and find start record ***/
for
(
i
=
0U
;
i
<
g_stEEPROMAccess
.
u16BlockNum
;
i
++
)
{
/***
Step 3.1 Blank check and find start record
- Check if the logic data block related memory is blank.
- Then find out which logic sector contains the most recent record.
- The found sector will define the starting search point of step 3.2.
***/
/* Search sector +0 */
u32DataAddrBase
=
g_pstEEPROMBlock
[
i
].
u32BaseAddr
;
u32DataAddrEnd
=
u32DataAddrBase
+
(
uint32_t
)(
g_pstEEPROMBlock
[
i
].
u16SectorSize
)
-
1UL
;
u32DataAddr
=
g_pfnEEPROMMemBlankCheck
(
u32DataAddrBase
,
u32DataAddrEnd
);
if
((
u32DataAddr
==
0x00000000UL
)
||
(
u32DataAddr
==
0xFFFFFFFFUL
))
{
u8Loop
=
0U
;
u16MaxRecordNum
[
0U
]
=
0U
;
}
else
{
u8Loop
=
1U
;
u16MaxRecordNum
[
0U
]
=
(
uint16_t
)
u32DataAddr
/
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
}
u16RecordNum
=
0U
;
u8Ready
=
0U
;
while
(
u8Loop
)
{
/* Fetch block control data */
u32DataAddr
=
u32DataAddrBase
+
(
uint32_t
)
u16RecordNum
*
(
uint32_t
)
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
g_pfnEEPROMMemRead
(
u32DataAddr
,
unCtrlData
.
u32Word
,
1UL
);
if
(
unCtrlData
.
stField
.
u16Index
+
unCtrlData
.
stField
.
u16IndexInv
==
0xFFFFU
)
{
u8Loop
=
0U
;
u8Ready
=
1U
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_ACTIVE
;
g_pstEEPROMBlock
[
i
].
u8SectorOffset
=
0U
;
g_pstEEPROMBlock
[
i
].
u16RecordNum
=
u16RecordNum
;
g_pstEEPROMBlock
[
i
].
u16Index
=
unCtrlData
.
stField
.
u16Index
;
u16IndexBkup
=
unCtrlData
.
stField
.
u16Index
;
}
else
{
u16RecordNum
++
;
if
((
u16RecordNum
>=
u16MaxRecordNum
[
0U
])
||
\
(
u16RecordNum
>=
EEPROM_BLANK_CHECK_RECORD_NUM
))
{
u8Loop
=
0U
;
}
}
}
/* Search sector +1 */
u32DataAddrBase
+=
(
uint32_t
)(
g_pstEEPROMBlock
[
i
].
u16SectorSize
);
u32DataAddrEnd
+=
(
uint32_t
)(
g_pstEEPROMBlock
[
i
].
u16SectorSize
);
u32DataAddr
=
g_pfnEEPROMMemBlankCheck
(
u32DataAddrBase
,
u32DataAddrEnd
);
if
((
u32DataAddr
==
0x00000000UL
)
||
(
u32DataAddr
==
0xFFFFFFFFUL
))
{
u8Loop
=
0U
;
u16MaxRecordNum
[
1U
]
=
0U
;
}
else
{
u8Loop
=
1U
;
u16MaxRecordNum
[
1U
]
=
(
uint16_t
)
u32DataAddr
/
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
}
u16RecordNum
=
0U
;
while
(
u8Loop
)
{
/* Fetch block control data */
u32DataAddr
=
u32DataAddrBase
+
(
uint32_t
)
u16RecordNum
*
(
uint32_t
)
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
g_pfnEEPROMMemRead
(
u32DataAddr
,
unCtrlData
.
u32Word
,
1UL
);
if
(
unCtrlData
.
stField
.
u16Index
+
unCtrlData
.
stField
.
u16IndexInv
==
0xFFFFU
)
{
u8Loop
=
0U
;
if
(
u8Ready
==
0U
)
{
u8Ready
=
1U
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_ACTIVE
;
g_pstEEPROMBlock
[
i
].
u8SectorOffset
=
1U
;
g_pstEEPROMBlock
[
i
].
u16RecordNum
=
u16RecordNum
;
g_pstEEPROMBlock
[
i
].
u16Index
=
unCtrlData
.
stField
.
u16Index
;
u16IndexBkup
=
unCtrlData
.
stField
.
u16Index
;
}
else
{
if
(
unCtrlData
.
stField
.
u16Index
>=
u16IndexBkup
)
{
u16Index
=
unCtrlData
.
stField
.
u16Index
-
u16IndexBkup
;
}
else
{
u16Index
=
unCtrlData
.
stField
.
u16Index
+
(
0xFFFFU
-
u16IndexBkup
)
+
1U
;
}
if
(
u16Index
<
g_pstEEPROMBlock
[
i
].
u16MaxRecordNum
+
EEPROM_BLANK_CHECK_RECORD_NUM
)
{
g_pstEEPROMBlock
[
i
].
u8SectorOffset
=
1U
;
g_pstEEPROMBlock
[
i
].
u16RecordNum
=
u16RecordNum
;
g_pstEEPROMBlock
[
i
].
u16Index
=
unCtrlData
.
stField
.
u16Index
;
}
}
}
else
{
u16RecordNum
++
;
if
((
u16RecordNum
>=
u16MaxRecordNum
[
1U
])
||
\
(
u16RecordNum
>=
EEPROM_BLANK_CHECK_RECORD_NUM
))
{
u8Loop
=
0U
;
}
}
}
/***
Step 3.2 Search for the most recent record and load data
- Find the last record's address
- Load data form the address
***/
if
(
g_pstEEPROMBlock
[
i
].
u8Status
==
EEPROM_BLOCK_ACTIVE
)
{
/* Find the last record by index */
u32DataAddrBase
=
g_pstEEPROMBlock
[
i
].
u32BaseAddr
;
u32DataAddrBase
+=
(
uint32_t
)(
g_pstEEPROMBlock
[
i
].
u16SectorSize
*
(
uint16_t
)
g_pstEEPROMBlock
[
i
].
u8SectorOffset
);
u16Index
=
g_pstEEPROMBlock
[
i
].
u16Index
;
u16RecordNum
=
g_pstEEPROMBlock
[
i
].
u16RecordNum
;
u8Loop
=
1U
;
while
(
u8Loop
)
{
u16RecordNum
++
;
u16Index
++
;
if
((
u16RecordNum
>=
u16MaxRecordNum
[
g_pstEEPROMBlock
[
i
].
u8SectorOffset
])
||
\
(
u16RecordNum
-
g_pstEEPROMBlock
[
i
].
u16RecordNum
>=
EEPROM_OVER_SEARCH_RECORD_NUM
))
{
u8Loop
=
0U
;
}
else
{
/* Fetch block control data */
u32DataAddr
=
u32DataAddrBase
+
(
uint32_t
)
u16RecordNum
*
(
uint32_t
)
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
g_pfnEEPROMMemRead
(
u32DataAddr
,
unCtrlData
.
u32Word
,
1UL
);
if
(
unCtrlData
.
stField
.
u16Index
+
unCtrlData
.
stField
.
u16IndexInv
==
0xFFFFU
)
{
if
(
unCtrlData
.
stField
.
u16Index
==
u16Index
)
{
g_pstEEPROMBlock
[
i
].
u16RecordNum
=
u16RecordNum
;
g_pstEEPROMBlock
[
i
].
u16Index
=
unCtrlData
.
stField
.
u16Index
;
}
}
}
}
/* Load data */
u16RecordNum
=
g_pstEEPROMBlock
[
i
].
u16RecordNum
;
u16Index
=
g_pstEEPROMBlock
[
i
].
u16Index
;
u16IndexBkup
=
u16Index
;
u8Loop
=
1U
;
do
{
u32DataAddr
=
u32DataAddrBase
+
(
uint32_t
)
u16RecordNum
*
(
uint32_t
)
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
g_pfnEEPROMMemRead
(
u32DataAddr
,
unCtrlData
.
u32Word
,
1UL
);
if
(
unCtrlData
.
stField
.
u16Index
+
unCtrlData
.
stField
.
u16IndexInv
==
0xFFFFU
)
{
if
(
u16Index
==
unCtrlData
.
stField
.
u16Index
)
{
u16IndexBkup
=
u16Index
;
u16WordNum
=
g_pstEEPROMBlock
[
i
].
u16BlockSize
/
4U
;
/* Load data */
g_pfnEEPROMMemRead
(
u32DataAddr
,
g_pstEEPROMBlock
[
i
].
pu32Data
,
(
uint32_t
)
u16WordNum
);
u16Result
=
EEPROM_CRC_Calc
(
g_pstEEPROMBlock
[
i
].
pu32Data
,
u16WordNum
-
1U
);
if
((
uint16_t
)(
g_pstEEPROMBlock
[
i
].
pu32Data
[
u16WordNum
-
1U
])
==
u16Result
)
{
u8Loop
=
0U
;
}
}
}
if
(
u8Loop
)
/* CRC check fail */
{
u16Index
--
;
/* Go to previous record */
if
(
u16IndexBkup
>=
u16Index
)
{
u16Result
=
u16IndexBkup
-
u16Index
;
}
else
{
u16Result
=
u16IndexBkup
+
(
0xFFFFU
-
u16Index
)
+
1U
;
}
if
((
u16Result
<=
u16MaxRecordNum
[
0U
]
+
u16MaxRecordNum
[
1U
])
&&
\
(
u16Result
<=
EEPROM_OVER_SEARCH_RECORD_NUM
))
{
if
(
u16RecordNum
==
0U
)
/* Cross sector access */
{
if
(
g_pstEEPROMBlock
[
i
].
u8SectorOffset
)
{
u32DataAddrBase
-=
(
uint32_t
)
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
u16RecordNum
=
u16MaxRecordNum
[
0U
];
if
(
u16RecordNum
==
0U
)
{
u8Loop
=
0U
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_ERROR
;
}
else
{
u16RecordNum
-=
1U
;
}
}
else
{
u32DataAddrBase
+=
g_pstEEPROMBlock
[
i
].
u16BlockSize
;
u16RecordNum
=
u16MaxRecordNum
[
1U
];
if
(
u16RecordNum
==
0U
)
{
u8Loop
=
0U
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_ERROR
;
}
else
{
u16RecordNum
-=
1U
;
}
}
}
else
{
u16RecordNum
--
;
}
}
else
{
/* No correct data found, set error flag */
u8Loop
=
0U
;
g_pstEEPROMBlock
[
i
].
u8Status
=
EEPROM_BLOCK_ERROR
;
}
}
}
while
(
u8Loop
);
}
}
}
}
uint8_t
EEPROM_Access_Busy
(
void
)
{
return
g_stEEPROMAccess
.
u8State
;
}
uint8_t
EEPROM_Block_Access_Status
(
uint16_t
u16BlockID
)
{
uint8_t
u8Status
;
u8Status
=
EEPROM_BLOCK_ERROR
;
if
(
u16BlockID
<
g_stEEPROMAccess
.
u16BlockNum
)
{
u8Status
=
g_pstEEPROMBlock
[
u16BlockID
].
u8Status
;
}
return
u8Status
;
}
/* u16Len : DWord(32-bit) number to be read */
/* Retval 0 - OK 1 - Error */
uint8_t
EEPROM_Read_Block_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
)
{
uint16_t
i
;
uint8_t
u8Error
;
u8Error
=
1U
;
if
((
u16BlockID
<
g_stEEPROMAccess
.
u16BlockNum
)
&&
(
u32Data
!=
NULL
)
&&
(
u16Len
!=
0U
))
{
if
((
g_pstEEPROMBlock
[
u16BlockID
].
u8Status
==
EEPROM_BLOCK_ACTIVE
)
&&
\
(
u16Len
<=
(
g_pstEEPROMBlock
[
u16BlockID
].
u16BlockSize
-
EEPROM_BLOCK_CTRL_BYTE_SIZE
)
/
4U
))
{
for
(
i
=
0U
;
i
<
u16Len
;
i
++
)
{
u32Data
[
i
]
=
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
i
+
1U
];
}
u8Error
=
0U
;
}
}
return
u8Error
;
}
/* u16Len : DWord(32-bit) number to be written */
/* Retval 0 - OK 1 - Error */
uint8_t
EEPROM_Write_Block_Data
(
uint16_t
u16BlockID
,
uint32_t
u32Data
[],
uint16_t
u16Len
)
{
uint16_t
i
;
uint8_t
u8Error
;
uint16_t
u16WordNum
;
uint16_t
u16Result
;
uint32_t
u32EndAddr
;
EEPROM_Ctrl_Data_un_t
unCtrlData
;
u8Error
=
1U
;
if
((
g_stEEPROMAccess
.
u8State
==
EEPROM_WR_STATE_IDLE
)
&&
\
(
g_stEEPROMAccess
.
u16BlockNum
>
u16BlockID
)
&&
(
u32Data
!=
NULL
)
&&
(
u16Len
!=
0U
))
{
if
(
u16Len
<=
(
g_pstEEPROMBlock
[
u16BlockID
].
u16BlockSize
-
EEPROM_BLOCK_CTRL_BYTE_SIZE
)
/
4U
)
{
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_PROG
;
u16WordNum
=
g_pstEEPROMBlock
[
u16BlockID
].
u16BlockSize
/
4U
-
1U
;
/* CRC checksum is ignored */
if
(
g_pstEEPROMBlock
[
u16BlockID
].
u8Status
==
EEPROM_BLOCK_ACTIVE
)
{
g_pstEEPROMBlock
[
u16BlockID
].
u16RecordNum
++
;
if
(
g_pstEEPROMBlock
[
u16BlockID
].
u16RecordNum
>=
g_pstEEPROMBlock
[
u16BlockID
].
u16MaxRecordNum
)
{
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_ERASE
;
g_pstEEPROMBlock
[
u16BlockID
].
u16RecordNum
=
0U
;
if
(
g_pstEEPROMBlock
[
u16BlockID
].
u8SectorOffset
==
0U
)
{
g_pstEEPROMBlock
[
u16BlockID
].
u8SectorOffset
=
1U
;
}
else
{
g_pstEEPROMBlock
[
u16BlockID
].
u8SectorOffset
=
0U
;
}
}
g_pstEEPROMBlock
[
u16BlockID
].
u16Index
++
;
unCtrlData
.
stField
.
u16Index
=
g_pstEEPROMBlock
[
u16BlockID
].
u16Index
;
unCtrlData
.
stField
.
u16IndexInv
=
0xFFFFU
-
unCtrlData
.
stField
.
u16Index
;
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
0U
]
=
unCtrlData
.
u32Word
[
0U
];
}
else
{
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_ERASE
;
g_pstEEPROMBlock
[
u16BlockID
].
u16RecordNum
=
0U
;
g_pstEEPROMBlock
[
u16BlockID
].
u8SectorOffset
=
0U
;
g_pstEEPROMBlock
[
u16BlockID
].
u16Index
=
0U
;
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
0U
]
=
0xFFFF0000UL
;
for
(
i
=
1U
;
i
<
u16WordNum
;
i
++
)
{
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
i
]
=
0x00000000UL
;
}
g_pstEEPROMBlock
[
u16BlockID
].
u8Status
=
EEPROM_BLOCK_ACTIVE
;
}
u16Len
+=
1U
;
for
(
i
=
1U
;
i
<
u16Len
;
i
++
)
{
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
i
]
=
u32Data
[
i
-
1U
];
}
u16Result
=
EEPROM_CRC_Calc
(
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
,
u16WordNum
);
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
[
u16WordNum
]
=
(
uint32_t
)
u16Result
;
g_stEEPROMAccess
.
u32ProgAddr
=
g_pstEEPROMBlock
[
u16BlockID
].
u32BaseAddr
;
g_stEEPROMAccess
.
u32ProgAddr
+=
(
uint32_t
)
g_pstEEPROMBlock
[
u16BlockID
].
u16SectorSize
*
(
uint32_t
)
g_pstEEPROMBlock
[
u16BlockID
].
u8SectorOffset
;
g_stEEPROMAccess
.
u32ProgAddr
+=
(
uint32_t
)
g_pstEEPROMBlock
[
u16BlockID
].
u16BlockSize
*
(
uint32_t
)
g_pstEEPROMBlock
[
u16BlockID
].
u16RecordNum
;
g_stEEPROMAccess
.
u16ProgLen
=
g_pstEEPROMBlock
[
u16BlockID
].
u16BlockSize
/
4U
;
g_stEEPROMAccess
.
pu32ProgData
=
g_pstEEPROMBlock
[
u16BlockID
].
pu32Data
;
if
(
g_stEEPROMAccess
.
u8State
==
EEPROM_WR_STATE_ERASE
)
{
u32EndAddr
=
g_stEEPROMAccess
.
u32ProgAddr
+
(
uint32_t
)
g_pstEEPROMBlock
[
u16BlockID
].
u16SectorSize
-
1UL
;
g_pfnEEPROMMemErase
(
g_stEEPROMAccess
.
u32ProgAddr
,
u32EndAddr
);
}
else
{
g_pfnEEPROMMemWrite
(
g_stEEPROMAccess
.
u32ProgAddr
,
g_stEEPROMAccess
.
pu32ProgData
,
(
uint32_t
)
g_stEEPROMAccess
.
u16ProgLen
);
}
u8Error
=
0U
;
}
}
return
u8Error
;
}
void
EEPROM_Mem_Access_Complete_Callback
(
void
)
{
if
(
g_stEEPROMAccess
.
u8State
==
EEPROM_WR_STATE_ERASE
)
{
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_PROG
;
g_pfnEEPROMMemWrite
(
g_stEEPROMAccess
.
u32ProgAddr
,
g_stEEPROMAccess
.
pu32ProgData
,
(
uint32_t
)
g_stEEPROMAccess
.
u16ProgLen
);
}
else
{
g_stEEPROMAccess
.
u8State
=
EEPROM_WR_STATE_IDLE
;
}
}
static
uint16_t
EEPROM_CRC_Calc
(
uint32_t
*
pu32Data
,
uint16_t
u16Len
)
{
uint16_t
i
;
uint8_t
u8CRCHi
;
uint8_t
u8CRCLo
;
uint8_t
u8Index
;
uint8_t
*
pu8DataByte
;
uint16_t
u16CRCResult
;
u16CRCResult
=
0xFFFFU
;
if
(
pu32Data
!=
NULL
)
{
u8CRCHi
=
0xFFU
;
u8CRCLo
=
0xFFU
;
u16Len
<<=
2U
;
/* u16Len = u16Len * 4U */
pu8DataByte
=
(
uint8_t
*
)
pu32Data
;
for
(
i
=
0
;
i
<
u16Len
;
i
++
)
{
u8Index
=
u8CRCLo
^
pu8DataByte
[
i
];
u8CRCLo
=
u8CRCHi
^
g_u8EEPROMCRCTableH
[
u8Index
];
u8CRCHi
=
g_u8EEPROMCRCTableL
[
u8Index
];
}
u16CRCResult
=
(
uint16_t
)
u8CRCHi
;
u16CRCResult
<<=
8U
;
u16CRCResult
|=
(
uint16_t
)
u8CRCLo
;
}
return
u16CRCResult
;
}
HJ232_Source/source/Driver/src/IIC.c
0 → 100644
View file @
7a571ddf
/******************************************************************************
�?�?名:Simulated_IIC_Master.c
功能描述:IO端口模拟的IIC(I2C)主机函数库文�?
�? 者:张暄
�? 本:V1.0
�? 期:2016.12.21
******************************************************************************/
#include "IIC.h"
#include "gpio.h"
uint8_t
IIC_addr
=
0u
;
__inline
void
bsp_IIC_nop
(
void
)
{
__NOP
();
}
void
bsp_IIC_SCL_inConfig
(
void
)
{
*
((
volatile
uint8_t
*
)(
&
PORT
->
PMC0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PM0
+
SCL_LED_DRIVER_PORT
))
|=
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PIM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
POM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PU0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
}
void
bsp_IIC_SCL_outConfig
(
void
)
{
*
((
volatile
uint8_t
*
)(
&
PORT
->
PMC0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PIM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
POM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
}
void
bsp_IIC_SCL_out
(
uint8_t
dat
)
{
if
(
dat
)
{
*
(
(
volatile
uint8_t
*
)(
&
PORT
->
P0
+
6
)
)
|=
(
1
<<
PIN2
);
}
else
{
*
(
(
volatile
uint8_t
*
)(
&
PORT
->
P0
+
6
)
)
&=
(
~
(
1
<<
PIN2
)
);
}
}
void
bsp_IIC_SDA_inConfig
(
void
)
{
PORT_Init
(
IIC_SDA_27030
,
INPUT
);
}
void
bsp_IIC_SDA_outConfig
(
void
)
{
PORT_Init
(
IIC_SDA_27030
,
OUTPUT
);
}
void
bsp_IIC_SDA_out
(
uint8_t
dat
)
{
if
(
dat
)
{
*
(
(
volatile
uint8_t
*
)(
&
PORT
->
P0
+
6
)
)
|=
(
1
<<
PIN3
);
}
else
{
*
(
(
volatile
uint8_t
*
)(
&
PORT
->
P0
+
6
)
)
&=
(
~
(
1
<<
PIN3
)
);
}
}
uint8_t
bsp_IIC_SDA_getVal
(
void
)
{
if
(
PORT_GetBit
(
IIC_SDA_27030
)
)
{
return
1
;
}
else
{
return
0
;
}
}
/******************************************************************************
函数名:IIC_Init
�? 能:初始化IIC总线
�? 数:�?
返回值:�?
******************************************************************************/
void
Simulated_IIC_2_Init
(
void
)
{
*
((
volatile
uint8_t
*
)(
&
PORT
->
PMC0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PIM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
POM0
+
SCL_LED_DRIVER_PORT
))
&=
~
(
1
<<
SCL_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PMC0
+
SDA_LED_DRIVER_PORT
))
&=
~
(
1
<<
SDA_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PM0
+
SDA_LED_DRIVER_PORT
))
&=
~
(
1
<<
SDA_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
PIM0
+
SDA_LED_DRIVER_PORT
))
&=
~
(
1
<<
SDA_LED_DRIVER_PIN
);
*
((
volatile
uint8_t
*
)(
&
PORT
->
POM0
+
SDA_LED_DRIVER_PORT
))
&=
~
(
1
<<
SDA_LED_DRIVER_PIN
);
bsp_IIC_Stop
();
}
void
Simulated_Release_SCL
(
void
)
{
bsp_IIC_SCL_out
(
0
);
bsp_IIC_delay
(
10
);
}
/*-------------------------------------------------------------------------
* Function Name : bsp_delay
* Description :
* Input : None
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
bsp_IIC_delay
(
uint32_t
time
)
{
uint32_t
i
;
for
(
i
=
0
;
i
<=
time
;
i
++
)
{
bsp_IIC_nop
();
}
}
/******************************************************************************
函数名:IIC_Start
�? 能:在IIC总线上发送起始信�?发起一次IIC通信
�? 数:�?
返回值:�?
******************************************************************************/
void
bsp_IIC_Start
(
void
)
{
bsp_IIC_SDA_outConfig
();
bsp_IIC_SDA_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_SDA_out
(
0
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
}
/******************************************************************************
函数名:IIC_Stop
�? 能:在IIC总线上发送停止信�?终止当前IIC通信
�? 数:�?
返回值:�?
******************************************************************************/
void
bsp_IIC_Stop
(
void
)
{
bsp_IIC_SDA_outConfig
();
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
bsp_IIC_SDA_out
(
0
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_SDA_out
(
1
);
bsp_IIC_nop
();
}
/******************************************************************************
函数名:IIC_Transmit_Data
�? 能:向IIC总线上发�?字节数据
�? 数:Data:发送的数据
返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/
void
bsp_IIC_SendByte
(
uint8_t
Data
)
{
uint8_t
temp
;
uint8_t
d
=
Data
;
bsp_IIC_SDA_outConfig
();
for
(
temp
=
8
;
temp
!=
0
;
temp
--
)
{
if
(
d
&
0x80
)
{
bsp_IIC_SDA_out
(
1
);
}
else
{
bsp_IIC_SDA_out
(
0
);
}
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
d
=
d
<<
1
;
bsp_IIC_nop
();
}
}
/*-------------------------------------------------------------------------
* Function Name : bsp_IIC_ReadByte
* Description :
* Input : None
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
uint8_t
bsp_IIC_ReadByte
(
void
)
{
uint8_t
temp
;
uint8_t
rbyte
=
0
;
bsp_IIC_SDA_inConfig
();
bsp_IIC_nop
();
for
(
temp
=
8
;
temp
!=
0
;
temp
--
)
{
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
rbyte
=
rbyte
<<
1
;
bsp_IIC_nop
();
rbyte
=
rbyte
|
(
(
uint8_t
)(
bsp_IIC_SDA_getVal
()
)
);
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
}
return
(
rbyte
);
}
/*-------------------------------------------------------------------------
* Function Name : bsp_IIC_ACK
* Description : ack
* Input : None
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
bsp_IIC_ACK
(
void
)
{
bsp_IIC_SDA_outConfig
();
bsp_IIC_SDA_out
(
0
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
bsp_IIC_SDA_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
}
/*-------------------------------------------------------------------------
* Function Name : bsp_IIC_NACK
* Description : nack
* Input : None
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
bsp_IIC_NACK
(
void
)
{
bsp_IIC_SDA_outConfig
();
bsp_IIC_nop
();
bsp_IIC_SDA_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
1
);
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_SCL_out
(
0
);
bsp_IIC_nop
();
}
/******************************************************************************
函数名:bsp_IIC_WaitAck
�? 能:获取从总线上接收到的确认信�?
�? 数:�?
返回值:
******************************************************************************/
uint8_t
bsp_IIC_WaitAck
(
void
)
{
uint8_t
ack
=
1
;
uint16_t
i
=
IIC_WaitOverTime
;
bsp_IIC_SDA_inConfig
();
bsp_IIC_SCL_out
(
1
);
while
(
(
ack
)
&&
(
--
i
!=
0
)
)
{
ack
=
bsp_IIC_SDA_getVal
();
}
bsp_IIC_SCL_out
(
0
);
if
(
IIC_addr
==
0x38
)
{
}
else
if
(
IIC_addr
==
0x78
)
{
// if ( ack )
// {
// if ( IIC_3236_NACK_Time < 0xFFFFFFFF )
// { IIC_3236_NACK_Time ++; }
// }
// else
// { IIC_3236_NACK_Time = 0; }
}
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
bsp_IIC_nop
();
return
(
ack
);
}
HJ232_Source/source/Driver/src/LtDet_Simulated_IIC_Master.c
deleted
100644 → 0
View file @
46899d54
/******************************************************************************
文 件 名:Simulated_IIC_Master.c
功能描述:IO端口模拟的IIC(I2C)主机函数库文件
作 者:张暄
版 本:V1.0
日 期:2016.12.21
******************************************************************************/
#include "LtDet_Simulated_IIC_Master.h"
#include "gpio.h"
uint8_t
LtDet_IICReceivedACK
;
/******************************************************************************
函数名:IIC_Init
功 能:初始化IIC总线
参 数:无
返回值:无
******************************************************************************/
void
LtDet_IIC_Init
(
void
)
{
// PORT_Init(IIC_SCL_LtDet, OPENDRAIN_OUTPUT); //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
//PORT_Init(IIC_SDA_LtDet, INPUT); //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
}
/******************************************************************************
函数名:IIC_Start
功 能:在IIC总线上发送起始信号,发起一次IIC通信
参 数:无
返回值:无
******************************************************************************/
void
LtDet_IIC_Start
(
void
)
{
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
// PORT_SetBit(IIC_SDA_LtDet); //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_SetBit(IIC_SCL_LtDet); //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_Init(IIC_SDA_LtDet, OPENDRAIN_OUTPUT); //SDA输出0,此时SDA = 0
// PORT_ClrBit(IIC_SDA_LtDet);
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_ClrBit(IIC_SCL_LtDet); //SCL输出0,此时SCL = 0
LtDet_IIC_Delay
();
}
/******************************************************************************
函数名:IIC_Stop
功 能:在IIC总线上发送停止信号,终止当前IIC通信
参 数:无
返回值:无
******************************************************************************/
void
LtDet_IIC_Stop
(
void
)
{
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
// PORT_Init(IIC_SDA_LtDet, OPENDRAIN_OUTPUT); //SDA输出0,此时SDA = 0
// PORT_ClrBit(IIC_SDA_LtDet);
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_SetBit(IIC_SCL_LtDet); //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_SetBit(IIC_SDA_LtDet); //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
}
/******************************************************************************
函数名:IIC_Transmit_Data
功 能:向IIC总线上发送1字节数据
参 数:Data:发送的数据
返回值:总线上器件的确认(ACK) 0 - ACK 1 - NAK
******************************************************************************/
void
LtDet_IIC_Transmit_Data
(
uint8_t
Data
)
{
uint8_t
i
;
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
// PORT_ClrBit(IIC_SCL_LtDet);
LtDet_IIC_Delay
();
if
(
Data
&
0x80
){
// PORT_Init(IIC_SDA_LtDet, OPENDRAIN_OUTPUT);
// PORT_SetBit(IIC_SDA_LtDet);
// IIC_SDA_DIR = 0; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
;
}
else
{
// PORT_Init(IIC_SDA_LtDet, OPENDRAIN_OUTPUT);
// PORT_ClrBit(IIC_SDA_LtDet);
// IIC_SDA_DIR = 1; //SDA输出0,此时SDA = 0
// IIC_SDA = 0;
}
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_SetBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 0; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// IIC_SCL_DIR = 1; //SCL输出0,此时SCL = 0
// IIC_SCL = 0;
Data
<<=
1
;
}
// PORT_ClrBit(IIC_SCL_LtDet);
// PORT_Init(IIC_SDA_LtDet, INPUT);
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// PORT_SetBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 0; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// if(PORT_GetBit(IIC_SDA_LtDet)){
// LtDet_IICReceivedACK = 1;
// }
// else{
// LtDet_IICReceivedACK = 0;
// }
// IICReceivedACK = IIC_SDA;
// PORT_ClrBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 1; //SCL输出0,此时SCL = 0
// IIC_SCL = 0;
LtDet_IIC_Delay
();
}
/******************************************************************************
函数名:IIC_Receive_Data
功 能:从IIC总线上接收1字节数据
参 数:无
返回值:接收到的数据
******************************************************************************/
uint8_t
LtDet_IIC_Receive_Data
(
void
)
{
uint8_t
i
;
uint8_t
Data
;
Data
=
0
;
// PORT_Init(IIC_SDA_LtDet, INPUT);
//IIC_SDA_DIR = 0; //设置SDA为输入状态
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
for
(
i
=
0
;
i
<
8
;
i
++
)
{
Data
<<=
1
;
// PORT_SetBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 0; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
// if(PORT_GetBit(IIC_SDA_LtDet))
// Data |= 1;
// PORT_ClrBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 1; //SCL输出0,此时SCL = 0
// IIC_SCL = 0;
LtDet_IIC_Delay
();
LtDet_IIC_Delay
();
}
return
Data
;
}
/******************************************************************************
函数名:IIC_Transmit_ACK
功 能:向IIC总线上发送确认信号
参 数:ACK:确认信号的类型: IIC_ACK 肯定应答
IIC_NAK 否定应答
返回值:无
******************************************************************************/
void
LtDet_IIC_Transmit_ACK
(
uint8_t
ACK
)
{
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
if
(
ACK
>
IIC_NAK
)
return
;
// PORT_Init(IIC_SDA_LtDet, OPENDRAIN_OUTPUT);
// if(ACK)
// PORT_SetBit(IIC_SDA_LtDet);
// IIC_SDA_DIR = 0; //SDA被设置为输入,IO口为高阻状态,总线上SDA信号由上拉电阻拉高,此时SDA = 1
// else
// {
// PORT_ClrBit(IIC_SDA_LtDet);
// IIC_SDA_DIR = 1; //SDA输出0,此时SDA = 0
// IIC_SDA = 0;
// }
// LtDet_IIC_Delay();
// PORT_SetBit(IIC_SCL_LtDet);
// IIC_SCL_DIR = 0; //SCL被设置为输入,IO口为高阻状态,总线上SCL信号由上拉电阻拉高,此时SCL = 1
// LtDet_IIC_Delay();
// LtDet_IIC_Delay();
//
// PORT_ClrBit(IIC_SCL_LtDet);
// // IIC_SCL_DIR = 1; //SCL输出0,此时SCL = 0
// // IIC_SCL = 0;
// LtDet_IIC_Delay();
}
/******************************************************************************
函数名:IIC_Receive_ACK
功 能:获取从总线上接收到的确认信号
参 数:无
返回值:总线上器件的确认信号类型:IIC_ACK 肯定应答
IIC_NAK 否定应答
IIC_INVALID_ACK 无效的应答信号(应答信号还未收到)
******************************************************************************/
uint8_t
LtDet_IIC_Receive_ACK
(
void
)
{
uint8_t
ACK
;
ACK
=
LtDet_IICReceivedACK
;
LtDet_IICReceivedACK
=
IIC_INVALID_ACK
;
return
ACK
;
}
/******************************************************************************
函数名:IIC_Delay
功 能:延时5us,用于收发过程中的时序控制
注意:必须调整IIC_5us_DELAY_CALIBRATION参数校准延时时间在5us左右
参 数:ACK:确认信号的类型 0 - ACK 1 - NAK
返回值:无
******************************************************************************/
void
LtDet_IIC_Delay
(
void
)
{
uint8_t
i
;
for
(
i
=
0
;
i
<
IIC_FREQ_CALIBRATION
;
i
++
)
__NOP
();
}
HJ232_Source/source/Driver/src/bsp_BU27030.c
0 → 100644
View file @
7a571ddf
#include "bsp_BU27030.h"
#include "common.h"
#include "IIC.h"
uint16_t
IIC1_CheckSDA_Times
=
0u
;
uint16_t
IIC1_NACK_Times
=
0u
;
#define BU2703_SLAVE_ADDR 0X38
#define BU2703_FITER_SIZE 10
typedef
struct
{
/* data */
uint16_t
data1buf
[
BU2703_FITER_SIZE
];
uint8_t
index1
;
uint16_t
data1
;
}
BU2703_Datas_Struct
;
BU2703_Datas_Struct
BU2703Dat
;
uint8_t
Register_BU2703_Senser
[]
=
{
0x40
,
0X80
,
0x41
,
0X00
,
0x42
,
0X22
,
0x43
,
0X01
,
};
void
LIGHT_IIC_Write_Data
(
uint8_t
devAddr
,
uint8_t
len
,
uint8_t
*
Data
)
{
uint8_t
Ack
=
0
;
bsp_IIC_Start
(
);
bsp_IIC_SendByte
(
devAddr
*
2
);
Ack
=
bsp_IIC_WaitAck
(
);
if
(
Ack
!=
0
)
{
bsp_IIC_Stop
(
);
}
while
(
len
)
{
len
--
;
bsp_IIC_SendByte
(
*
(
Data
++
));
Ack
=
bsp_IIC_WaitAck
(
);
if
(
Ack
!=
0
)
{
bsp_IIC_Stop
(
);
}
};
bsp_IIC_Stop
(
);
}
void
BU2703_Senser_Init
(
void
)
{
uint8_t
mAddr
=
0XFF
;
uint16_t
i
=
0
;
mAddr
=
0X38
;
Simulated_IIC_2_Init
();
for
(
i
=
0
;
i
<
4
;
i
++
)
{
LIGHT_IIC_Write_Data
(
mAddr
,
2
,
&
Register_BU2703_Senser
[
i
*
2
]);
}
}
uint8_t
LIGHT_IIC_Read_Byte
(
uint8_t
devAddr
,
uint8_t
addr2
,
uint8_t
*
pData
)
{
uint8_t
Ack
=
0
;
bsp_IIC_Start
(
);
bsp_IIC_SendByte
(
devAddr
*
2
);
Ack
=
bsp_IIC_WaitAck
(
);
if
(
Ack
!=
0
)
{
bsp_IIC_Stop
(
);
return
0
;
}
bsp_IIC_SendByte
(
addr2
);
Ack
=
bsp_IIC_WaitAck
(
);
if
(
Ack
!=
0
)
{
bsp_IIC_Stop
(
);
return
0
;
}
bsp_IIC_Start
(
);
bsp_IIC_SendByte
(
devAddr
*
2
+
1
);
Ack
=
bsp_IIC_WaitAck
(
);
if
(
Ack
!=
0
)
{
bsp_IIC_Stop
(
);
return
0
;
}
*
pData
=
bsp_IIC_ReadByte
(
);
bsp_IIC_NACK
();
// 停止IIC
bsp_IIC_Stop
(
);
return
1
;
}
void
BU2703_Read_Datas
(
void
)
{
uint8_t
dataL
=
0
;
uint8_t
dataH
=
0
;
uint8_t
meas_en
=
0
;
uint16_t
temp
=
0xffff
;
LIGHT_IIC_Read_Byte
(
BU2703_SLAVE_ADDR
,
0x43
,
&
meas_en
);
if
(
meas_en
&
0x80
)
{
LIGHT_IIC_Read_Byte
(
BU2703_SLAVE_ADDR
,
0x52
,
&
dataL
);
LIGHT_IIC_Read_Byte
(
BU2703_SLAVE_ADDR
,
0x53
,
&
dataH
);
temp
=
dataH
;
temp
=
(
temp
<<
8
);
temp
|=
dataL
;
if
(
BU2703Dat
.
index1
>=
BU2703_FITER_SIZE
)
{
BU2703Dat
.
index1
=
0
;
App_SortNWord_u16
(
BU2703Dat
.
data1buf
,
BU2703_FITER_SIZE
);
BU2703Dat
.
data1
=
BU2703Dat
.
data1buf
[
BU2703_FITER_SIZE
/
2
];
//15*50ms update
}
if
(
temp
<
0xffff
)
{
BU2703Dat
.
data1buf
[
BU2703Dat
.
index1
]
=
temp
;
BU2703Dat
.
index1
++
;
}
}
}
uint16_t
BU2703_Get_Data1
(
void
)
{
return
BU2703Dat
.
data1
;
}
void
App_SwapWord_u16
(
uint16_t
*
pData1
,
uint16_t
*
pData2
)
{
uint16_t
psw
;
if
((
*
pData1
)
>
(
*
pData2
))
{
psw
=
(
*
pData2
);
(
*
pData2
)
=
(
*
pData1
);
(
*
pData1
)
=
psw
;
}
}
void
App_SortNWord_u16
(
uint16_t
*
SortData
,
uint8_t
len
)
{
uint8_t
n
=
0
,
m
;
for
(;
n
<
len
-
1
;
n
++
)
{
for
(
m
=
n
+
1
;
m
<
len
;
m
++
)
{
App_SwapWord_u16
((
SortData
+
n
),(
SortData
+
m
));
}
}
}
HJ232_Source/source/System/common.h
View file @
7a571ddf
...
@@ -538,4 +538,7 @@ typedef enum
...
@@ -538,4 +538,7 @@ typedef enum
NM_Mode_Wakeup
,
NM_Mode_Wakeup
,
}
NM_Mode_t
;
}
NM_Mode_t
;
#define GPIO_DIR_OUT 0
#define GPIO_DIR_IN 1
#endif
#endif
HJ232_Source/source/System/tasks.c
View file @
7a571ddf
...
@@ -140,7 +140,7 @@ void Sys_Run_Mode_100ms_Tasks_Group2(void)
...
@@ -140,7 +140,7 @@ void Sys_Run_Mode_100ms_Tasks_Group2(void)
void
Sys_Run_Mode_100ms_Tasks_Group3
(
void
)
void
Sys_Run_Mode_100ms_Tasks_Group3
(
void
)
{
{
BU2703_Read_Datas
();
}
}
void
Sys_Run_Mode_100ms_Tasks_Group4
(
void
)
void
Sys_Run_Mode_100ms_Tasks_Group4
(
void
)
...
...
HJ232_Source/tim4DelayCounter.uvoptx
View file @
7a571ddf
...
@@ -616,6 +616,54 @@
...
@@ -616,6 +616,54 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
<bShared>
0
</bShared>
</File>
</File>
<File>
<GroupNumber>
1
</GroupNumber>
<FileNumber>
33
</FileNumber>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<bDave2>
0
</bDave2>
<PathWithFileName>
.\source\Driver\inc\bsp_BU27030.h
</PathWithFileName>
<FilenameWithoutPath>
bsp_BU27030.h
</FilenameWithoutPath>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
<File>
<GroupNumber>
1
</GroupNumber>
<FileNumber>
34
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<bDave2>
0
</bDave2>
<PathWithFileName>
.\source\Driver\src\bsp_BU27030.c
</PathWithFileName>
<FilenameWithoutPath>
bsp_BU27030.c
</FilenameWithoutPath>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
<File>
<GroupNumber>
1
</GroupNumber>
<FileNumber>
35
</FileNumber>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<bDave2>
0
</bDave2>
<PathWithFileName>
.\source\Driver\inc\IIC.h
</PathWithFileName>
<FilenameWithoutPath>
IIC.h
</FilenameWithoutPath>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
<File>
<GroupNumber>
1
</GroupNumber>
<FileNumber>
36
</FileNumber>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<bDave2>
0
</bDave2>
<PathWithFileName>
.\source\Driver\src\IIC.c
</PathWithFileName>
<FilenameWithoutPath>
IIC.c
</FilenameWithoutPath>
<RteFlg>
0
</RteFlg>
<bShared>
0
</bShared>
</File>
</Group>
</Group>
<Group>
<Group>
...
@@ -626,7 +674,7 @@
...
@@ -626,7 +674,7 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<File>
<File>
<GroupNumber>
2
</GroupNumber>
<GroupNumber>
2
</GroupNumber>
<FileNumber>
3
3
</FileNumber>
<FileNumber>
3
7
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -638,7 +686,7 @@
...
@@ -638,7 +686,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
2
</GroupNumber>
<GroupNumber>
2
</GroupNumber>
<FileNumber>
3
4
</FileNumber>
<FileNumber>
3
8
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -650,7 +698,7 @@
...
@@ -650,7 +698,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
2
</GroupNumber>
<GroupNumber>
2
</GroupNumber>
<FileNumber>
3
5
</FileNumber>
<FileNumber>
3
9
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -662,7 +710,7 @@
...
@@ -662,7 +710,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
2
</GroupNumber>
<GroupNumber>
2
</GroupNumber>
<FileNumber>
36
</FileNumber>
<FileNumber>
40
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -674,7 +722,7 @@
...
@@ -674,7 +722,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
2
</GroupNumber>
<GroupNumber>
2
</GroupNumber>
<FileNumber>
37
</FileNumber>
<FileNumber>
41
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -694,7 +742,7 @@
...
@@ -694,7 +742,7 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
38
</FileNumber>
<FileNumber>
42
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -706,7 +754,7 @@
...
@@ -706,7 +754,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
39
</FileNumber>
<FileNumber>
43
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -718,7 +766,7 @@
...
@@ -718,7 +766,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
0
</FileNumber>
<FileNumber>
4
4
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -730,7 +778,7 @@
...
@@ -730,7 +778,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
1
</FileNumber>
<FileNumber>
4
5
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -742,7 +790,7 @@
...
@@ -742,7 +790,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
2
</FileNumber>
<FileNumber>
4
6
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -754,7 +802,7 @@
...
@@ -754,7 +802,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
3
</FileNumber>
<FileNumber>
4
7
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -766,7 +814,7 @@
...
@@ -766,7 +814,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
4
</FileNumber>
<FileNumber>
4
8
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -778,7 +826,7 @@
...
@@ -778,7 +826,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
4
5
</FileNumber>
<FileNumber>
4
9
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -790,7 +838,7 @@
...
@@ -790,7 +838,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
46
</FileNumber>
<FileNumber>
50
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -802,7 +850,7 @@
...
@@ -802,7 +850,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
47
</FileNumber>
<FileNumber>
51
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -814,7 +862,7 @@
...
@@ -814,7 +862,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
48
</FileNumber>
<FileNumber>
52
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -826,7 +874,7 @@
...
@@ -826,7 +874,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
49
</FileNumber>
<FileNumber>
53
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -838,7 +886,7 @@
...
@@ -838,7 +886,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
0
</FileNumber>
<FileNumber>
5
4
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -850,7 +898,7 @@
...
@@ -850,7 +898,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
1
</FileNumber>
<FileNumber>
5
5
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -862,7 +910,7 @@
...
@@ -862,7 +910,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
2
</FileNumber>
<FileNumber>
5
6
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -874,7 +922,7 @@
...
@@ -874,7 +922,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
3
</FileNumber>
<FileNumber>
5
7
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -886,7 +934,7 @@
...
@@ -886,7 +934,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
4
</FileNumber>
<FileNumber>
5
8
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -898,7 +946,7 @@
...
@@ -898,7 +946,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
5
5
</FileNumber>
<FileNumber>
5
9
</FileNumber>
<FileType>
4
</FileType>
<FileType>
4
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -910,7 +958,7 @@
...
@@ -910,7 +958,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
56
</FileNumber>
<FileNumber>
60
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -922,7 +970,7 @@
...
@@ -922,7 +970,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
57
</FileNumber>
<FileNumber>
61
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -934,7 +982,7 @@
...
@@ -934,7 +982,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
58
</FileNumber>
<FileNumber>
62
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -946,7 +994,7 @@
...
@@ -946,7 +994,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
59
</FileNumber>
<FileNumber>
63
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -958,7 +1006,7 @@
...
@@ -958,7 +1006,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
0
</FileNumber>
<FileNumber>
6
4
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -970,7 +1018,7 @@
...
@@ -970,7 +1018,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
1
</FileNumber>
<FileNumber>
6
5
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -982,7 +1030,7 @@
...
@@ -982,7 +1030,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
2
</FileNumber>
<FileNumber>
6
6
</FileNumber>
<FileType>
4
</FileType>
<FileType>
4
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -994,7 +1042,7 @@
...
@@ -994,7 +1042,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
3
</FileNumber>
<FileNumber>
6
7
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1006,7 +1054,7 @@
...
@@ -1006,7 +1054,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
4
</FileNumber>
<FileNumber>
6
8
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1018,7 +1066,7 @@
...
@@ -1018,7 +1066,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
6
5
</FileNumber>
<FileNumber>
6
9
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1030,7 +1078,7 @@
...
@@ -1030,7 +1078,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
66
</FileNumber>
<FileNumber>
70
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1042,7 +1090,7 @@
...
@@ -1042,7 +1090,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
67
</FileNumber>
<FileNumber>
71
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1054,7 +1102,7 @@
...
@@ -1054,7 +1102,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
68
</FileNumber>
<FileNumber>
72
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1066,7 +1114,7 @@
...
@@ -1066,7 +1114,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
69
</FileNumber>
<FileNumber>
73
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1078,7 +1126,7 @@
...
@@ -1078,7 +1126,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
7
0
</FileNumber>
<FileNumber>
7
4
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1090,7 +1138,7 @@
...
@@ -1090,7 +1138,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
7
1
</FileNumber>
<FileNumber>
7
5
</FileNumber>
<FileType>
4
</FileType>
<FileType>
4
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1102,7 +1150,7 @@
...
@@ -1102,7 +1150,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
7
2
</FileNumber>
<FileNumber>
7
6
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1114,7 +1162,7 @@
...
@@ -1114,7 +1162,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
7
3
</FileNumber>
<FileNumber>
7
7
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1126,7 +1174,7 @@
...
@@ -1126,7 +1174,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
3
</GroupNumber>
<GroupNumber>
3
</GroupNumber>
<FileNumber>
7
4
</FileNumber>
<FileNumber>
7
8
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1146,7 +1194,7 @@
...
@@ -1146,7 +1194,7 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<File>
<File>
<GroupNumber>
4
</GroupNumber>
<GroupNumber>
4
</GroupNumber>
<FileNumber>
7
5
</FileNumber>
<FileNumber>
7
9
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1158,7 +1206,7 @@
...
@@ -1158,7 +1206,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
4
</GroupNumber>
<GroupNumber>
4
</GroupNumber>
<FileNumber>
76
</FileNumber>
<FileNumber>
80
</FileNumber>
<FileType>
4
</FileType>
<FileType>
4
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1178,7 +1226,7 @@
...
@@ -1178,7 +1226,7 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
77
</FileNumber>
<FileNumber>
81
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1190,7 +1238,7 @@
...
@@ -1190,7 +1238,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
78
</FileNumber>
<FileNumber>
82
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1202,7 +1250,7 @@
...
@@ -1202,7 +1250,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
79
</FileNumber>
<FileNumber>
83
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1214,7 +1262,7 @@
...
@@ -1214,7 +1262,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
0
</FileNumber>
<FileNumber>
8
4
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1226,7 +1274,7 @@
...
@@ -1226,7 +1274,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
1
</FileNumber>
<FileNumber>
8
5
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1238,7 +1286,7 @@
...
@@ -1238,7 +1286,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
2
</FileNumber>
<FileNumber>
8
6
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1250,7 +1298,7 @@
...
@@ -1250,7 +1298,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
3
</FileNumber>
<FileNumber>
8
7
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1262,7 +1310,7 @@
...
@@ -1262,7 +1310,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
4
</FileNumber>
<FileNumber>
8
8
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1274,7 +1322,7 @@
...
@@ -1274,7 +1322,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
8
5
</FileNumber>
<FileNumber>
8
9
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1286,7 +1334,7 @@
...
@@ -1286,7 +1334,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
86
</FileNumber>
<FileNumber>
90
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1298,7 +1346,7 @@
...
@@ -1298,7 +1346,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
5
</GroupNumber>
<GroupNumber>
5
</GroupNumber>
<FileNumber>
87
</FileNumber>
<FileNumber>
91
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1318,7 +1366,7 @@
...
@@ -1318,7 +1366,7 @@
<RteFlg>
0
</RteFlg>
<RteFlg>
0
</RteFlg>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
88
</FileNumber>
<FileNumber>
92
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1330,7 +1378,7 @@
...
@@ -1330,7 +1378,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
89
</FileNumber>
<FileNumber>
93
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1342,7 +1390,7 @@
...
@@ -1342,7 +1390,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
0
</FileNumber>
<FileNumber>
9
4
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1354,7 +1402,7 @@
...
@@ -1354,7 +1402,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
1
</FileNumber>
<FileNumber>
9
5
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1366,7 +1414,7 @@
...
@@ -1366,7 +1414,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
2
</FileNumber>
<FileNumber>
9
6
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1378,7 +1426,7 @@
...
@@ -1378,7 +1426,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
3
</FileNumber>
<FileNumber>
9
7
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1390,7 +1438,7 @@
...
@@ -1390,7 +1438,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
4
</FileNumber>
<FileNumber>
9
8
</FileNumber>
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1402,7 +1450,7 @@
...
@@ -1402,7 +1450,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
9
5
</FileNumber>
<FileNumber>
9
9
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1414,7 +1462,7 @@
...
@@ -1414,7 +1462,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
96
</FileNumber>
<FileNumber>
100
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
@@ -1426,7 +1474,7 @@
...
@@ -1426,7 +1474,7 @@
</File>
</File>
<File>
<File>
<GroupNumber>
6
</GroupNumber>
<GroupNumber>
6
</GroupNumber>
<FileNumber>
97
</FileNumber>
<FileNumber>
101
</FileNumber>
<FileType>
5
</FileType>
<FileType>
5
</FileType>
<tvExp>
0
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<tvExpOptDlg>
0
</tvExpOptDlg>
...
...
HJ232_Source/tim4DelayCounter.uvprojx
View file @
7a571ddf
...
@@ -339,7 +339,7 @@
...
@@ -339,7 +339,7 @@
<MiscControls></MiscControls>
<MiscControls></MiscControls>
<Define></Define>
<Define></Define>
<Undefine></Undefine>
<Undefine></Undefine>
<IncludePath>
.\source\System;.\source\Driver\inc;.\source\Application;.\source\Application\LINE_IN;.\source\Application\PowerManagement;.\source\Application\RTE;.\source\Application\MCU_Core_Protocol;.\source\Application\Telltales;.\source\Application\Fuel;.\source\Application\Eeprom;.\source\Application\DataProcessor;.\source\Application\LightDetect;.\source\Application\BackLight;.\source\Application\Key;.\source\Application\Menu;.\source\Application\APPCan;.\source\UDS;.\source\Application\Gauges;.\source\Application\CoolantTemp;.\source\UDS2;.\\RTE\Device\BAT32A239KK64FB;.\source\Application\Mileage;.\source\Application\Display\GUI_LCD_DIS;.\source\Application\Display\SEG_LCD_DIS
</IncludePath>
<IncludePath>
.\source\System;.\source\Driver\inc;.\source\Application;.\source\Application\LINE_IN;.\source\Application\PowerManagement;.\source\Application\RTE;.\source\Application\MCU_Core_Protocol;.\source\Application\Telltales;.\source\Application\Fuel;.\source\Application\Eeprom;.\source\Application\DataProcessor;.\source\Application\LightDetect;.\source\Application\BackLight;.\source\Application\Key;.\source\Application\Menu;.\source\Application\APPCan;.\source\UDS;.\source\Application\Gauges;.\source\Application\CoolantTemp;.\source\UDS2;.\\RTE\Device\BAT32A239KK64FB;.\source\Application\Mileage;.\source\Application\Display\GUI_LCD_DIS;.\source\Application\Display\SEG_LCD_DIS
;.\source\Driver\inc
</IncludePath>
</VariousControls>
</VariousControls>
</Cads>
</Cads>
<Aads>
<Aads>
...
@@ -543,6 +543,26 @@
...
@@ -543,6 +543,26 @@
<FileType>
1
</FileType>
<FileType>
1
</FileType>
<FilePath>
.\source\Driver\src\flash.c
</FilePath>
<FilePath>
.\source\Driver\src\flash.c
</FilePath>
</File>
</File>
<File>
<FileName>
bsp_BU27030.h
</FileName>
<FileType>
5
</FileType>
<FilePath>
.\source\Driver\inc\bsp_BU27030.h
</FilePath>
</File>
<File>
<FileName>
bsp_BU27030.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
.\source\Driver\src\bsp_BU27030.c
</FilePath>
</File>
<File>
<FileName>
IIC.h
</FileName>
<FileType>
5
</FileType>
<FilePath>
.\source\Driver\inc\IIC.h
</FilePath>
</File>
<File>
<FileName>
IIC.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
.\source\Driver\src\IIC.c
</FilePath>
</File>
</Files>
</Files>
</Group>
</Group>
<Group>
<Group>
...
...
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