Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f9b7dbe1ed | |||
| c8b47e57ab | |||
| daa4fd6bd3 | |||
| 4f4a1635ab | |||
| 4ed261893e | |||
| e5fe7833e6 | |||
| b5f2f3bc5f |
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -2,6 +2,8 @@
|
|||||||
"files.associations": {
|
"files.associations": {
|
||||||
"MAIN.C": "cpp",
|
"MAIN.C": "cpp",
|
||||||
"CAN.C": "cpp",
|
"CAN.C": "cpp",
|
||||||
"temperature.C": "cpp"
|
"temperature.C": "cpp",
|
||||||
|
"IO.C": "cpp",
|
||||||
|
"PS.C": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
91
CAN.C
91
CAN.C
@@ -283,6 +283,7 @@ void CAN_vInit(void)
|
|||||||
CAN_vSetListCommand(0x010B0002); // MO11 for list 1
|
CAN_vSetListCommand(0x010B0002); // MO11 for list 1
|
||||||
CAN_vSetListCommand(0x010C0002); // MO12 for list 1
|
CAN_vSetListCommand(0x010C0002); // MO12 for list 1
|
||||||
CAN_vSetListCommand(0x010D0002); // MO13 for list 1
|
CAN_vSetListCommand(0x010D0002); // MO13 for list 1
|
||||||
|
CAN_vSetListCommand(0x010E0002); // MO14 for list 1
|
||||||
|
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// Configuration of the CAN Message Objects 0 - 31:
|
/// Configuration of the CAN Message Objects 0 - 31:
|
||||||
@@ -776,8 +777,6 @@ void CAN_vInit(void)
|
|||||||
/// - message object is used as receive object
|
/// - message object is used as receive object
|
||||||
/// - this message object is assigned to list 1 (node 0)
|
/// - this message object is assigned to list 1 (node 0)
|
||||||
|
|
||||||
//--------------MOCTR11 = 0x00A00000---------------------------------------
|
|
||||||
|
|
||||||
CAN_vWriteCANAddress(CAN_MOCTR11); // Addressing MO11 control register
|
CAN_vWriteCANAddress(CAN_MOCTR11); // Addressing MO11 control register
|
||||||
|
|
||||||
CAN_vWriteAMData(0x00A00000); // load MO11 control register
|
CAN_vWriteAMData(0x00A00000); // load MO11 control register
|
||||||
@@ -788,11 +787,11 @@ void CAN_vInit(void)
|
|||||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
/// order (like class 1)
|
/// order (like class 1)
|
||||||
/// - extended 29-bit identifier
|
/// - extended 29-bit identifier
|
||||||
/// - identifier 29-bit: 0x15000004
|
/// - identifier 29-bit: 0x15000006
|
||||||
|
|
||||||
//--------------MOAR11 = 0xF5000004---------------------------------------
|
//--------------MOAR11 = 0xF5000006---------------------------------------
|
||||||
|
|
||||||
CAN_vWriteAMData(0xF5000004); // load MO11 arbitration register
|
CAN_vWriteAMData(0xF5000006); // load MO11 arbitration register
|
||||||
|
|
||||||
// CAN Address pointing to the CAN_MODATAH11
|
// CAN Address pointing to the CAN_MODATAH11
|
||||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
@@ -942,11 +941,11 @@ void CAN_vInit(void)
|
|||||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
/// order (like class 1)
|
/// order (like class 1)
|
||||||
/// - extended 29-bit identifier
|
/// - extended 29-bit identifier
|
||||||
/// - identifier 29-bit: 0x14000001
|
/// - identifier 29-bit: 0x11000001
|
||||||
|
|
||||||
//--------------MOAR13 = 0xF4000001---------------------------------------
|
//--------------MOAR13 = 0xF1000001---------------------------------------
|
||||||
|
|
||||||
CAN_vWriteAMData(0xF4000001); // load MO13 arbitration register
|
CAN_vWriteAMData(0xF1000001); // load MO13 arbitration register
|
||||||
|
|
||||||
// CAN Address pointing to the CAN_MODATAH13
|
// CAN Address pointing to the CAN_MODATAH13
|
||||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
@@ -1004,7 +1003,81 @@ void CAN_vInit(void)
|
|||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// Configuration of Message Object 14:
|
/// Configuration of Message Object 14:
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// - message object 14 is not valid
|
/// - message object 14 is valid
|
||||||
|
/// - message object is used as receive object
|
||||||
|
/// - this message object is assigned to list 1 (node 0)
|
||||||
|
|
||||||
|
|
||||||
|
//--------------MOCTR14 = 0x00A00000---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteCANAddress(CAN_MOCTR14); // Addressing MO14 control register
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x00A00000); // load MO14 control register
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MOAR14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||||
|
/// order (like class 1)
|
||||||
|
/// - extended 29-bit identifier
|
||||||
|
/// - identifier 29-bit: 0x15000004
|
||||||
|
|
||||||
|
//--------------MOAR14 = 0xF5000004---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0xF5000004); // load MO14 arbitration register
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MODATAH14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
|
||||||
|
//--------------MODATAH14 = 0x00000000---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x00000000); // load MO14 data register high
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MODATAL14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
//--------------MODATAL14 = 0x00000000---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x00000000); // load MO14 data register low
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MOAMR14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
/// - only accept receive frames with matching IDE bit
|
||||||
|
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||||
|
|
||||||
|
//--------------CAN_MOAMR14 = 0x3FFFFFFF------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x3FFFFFFF); // load MO14 acceptance mask register
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MOIPR14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
/// - use message pending register 0 bit position 14
|
||||||
|
|
||||||
|
//--------------MOIPR14 = 0x00000E00---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x00000E00); // load MO14 interrupt pointer register
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MOFGPR14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
|
||||||
|
//--------------MOFGPR14 = 0x00000000---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x00000000); // load MO14 FIFO/gateway pointer register
|
||||||
|
|
||||||
|
// CAN Address pointing to the CAN_MOFCR14
|
||||||
|
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||||
|
|
||||||
|
/// - this object is a STANDARD MESSAGE OBJECT
|
||||||
|
/// - 8 valid data bytes
|
||||||
|
|
||||||
|
//--------------MOFCR14 = 0x08000000---------------------------------------
|
||||||
|
|
||||||
|
CAN_vWriteAMData(0x08000000); // load MO14 function control register
|
||||||
|
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// Configuration of Message Object 15:
|
/// Configuration of Message Object 15:
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -17,8 +17,8 @@
|
|||||||
</Extensions>
|
</Extensions>
|
||||||
|
|
||||||
<DaveTm>
|
<DaveTm>
|
||||||
<dwLowDateTime>187610842</dwLowDateTime>
|
<dwLowDateTime>-1575929917</dwLowDateTime>
|
||||||
<dwHighDateTime>31157159</dwHighDateTime>
|
<dwHighDateTime>31246864</dwHighDateTime>
|
||||||
</DaveTm>
|
</DaveTm>
|
||||||
|
|
||||||
<Target>
|
<Target>
|
||||||
@@ -320,7 +320,7 @@
|
|||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>9</FileNumber>
|
<FileNumber>9</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>.\User.c</PathWithFileName>
|
<PathWithFileName>.\User.c</PathWithFileName>
|
||||||
|
|||||||
49
IO.C
49
IO.C
@@ -191,26 +191,19 @@ void IO_vInit(void)
|
|||||||
/// - is used as general input
|
/// - is used as general input
|
||||||
/// - pull-up device is assigned
|
/// - pull-up device is assigned
|
||||||
/// P1.5:
|
/// P1.5:
|
||||||
/// - is used as general purpose output
|
/// - is used as general input
|
||||||
/// - push/pull output is selected
|
/// - pull-up device is assigned
|
||||||
/// - the pin status is low level
|
|
||||||
/// - pull-down device is assigned
|
|
||||||
/// P1.6:
|
/// P1.6:
|
||||||
/// - is used as general purpose output
|
/// - is used as general purpose output
|
||||||
/// - push/pull output is selected
|
/// - push/pull output is selected
|
||||||
/// - the pin status is low level
|
/// - the pin status is low level
|
||||||
/// - pull device is disabled (tristate)
|
/// - pull device is disabled (tristate)
|
||||||
|
|
||||||
SFR_PAGE(_pp3, noSST); // switch to page 3
|
|
||||||
P1_OD = 0x00; // load open-drain register
|
|
||||||
|
|
||||||
SFR_PAGE(_pp1, noSST); // switch to page 1
|
SFR_PAGE(_pp1, noSST); // switch to page 1
|
||||||
P1_PUDSEL = 0xDF; // load pullup/pulldown select register
|
|
||||||
P1_PUDEN = 0xBF; // load pullup/pulldown enable register
|
P1_PUDEN = 0xBF; // load pullup/pulldown enable register
|
||||||
|
|
||||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||||
P1_DIR = 0x60; // load direction register
|
P1_DIR = 0x40; // load direction register
|
||||||
|
|
||||||
|
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// Configuration of Port P2:
|
/// Configuration of Port P2:
|
||||||
@@ -223,62 +216,50 @@ void IO_vInit(void)
|
|||||||
/// P3.2:
|
/// P3.2:
|
||||||
/// - is used as general purpose output
|
/// - is used as general purpose output
|
||||||
/// - open drain output is selected
|
/// - open drain output is selected
|
||||||
/// - the pin status is low level
|
/// - the pin status is high level
|
||||||
/// - pull-up device is assigned
|
/// - pull-up device is assigned
|
||||||
/// P3.3:
|
/// P3.3:
|
||||||
/// - is used as general purpose output
|
/// - is used as general purpose output
|
||||||
/// - open drain output is selected
|
/// - open drain output is selected
|
||||||
/// - the pin status is low level
|
/// - the pin status is high level
|
||||||
/// - pull-up device is assigned
|
/// - pull-up device is assigned
|
||||||
/// P3.4:
|
/// P3.4:
|
||||||
/// - is used as general purpose output
|
/// - is used as general purpose output
|
||||||
/// - open drain output is selected
|
/// - open drain output is selected
|
||||||
/// - the pin status is low level
|
/// - the pin status is high level
|
||||||
/// - pull-up device is assigned
|
/// - pull-up device is assigned
|
||||||
/// P3.5:
|
/// P3.5:
|
||||||
/// - is used as general purpose output
|
/// - is used as general purpose output
|
||||||
/// - open drain output is selected
|
/// - open drain output is selected
|
||||||
/// - the pin status is low level
|
/// - the pin status is high level
|
||||||
/// - pull-up device is assigned
|
/// - pull-up device is assigned
|
||||||
/// P3.6:
|
/// P3.6:
|
||||||
/// - is used as general purpose output
|
/// - is used as general input
|
||||||
/// - push/pull output is selected
|
/// - pull-up device is assigned
|
||||||
/// - the pin status is low level
|
|
||||||
/// - pull-down device is assigned
|
|
||||||
/// P3.7:
|
|
||||||
/// - is used as general purpose output
|
|
||||||
/// - push/pull output is selected
|
|
||||||
/// - the pin status is low level
|
|
||||||
/// - pull-down device is assigned
|
|
||||||
|
|
||||||
SFR_PAGE(_pp3, noSST); // switch to page 3
|
SFR_PAGE(_pp3, noSST); // switch to page 3
|
||||||
P3_OD = 0x3C; // load open-drain register
|
P3_OD = 0x3C; // load open-drain register
|
||||||
|
|
||||||
SFR_PAGE(_pp1, noSST); // switch to page 1
|
SFR_PAGE(_pp1, noSST); // switch to page 1
|
||||||
P3_PUDSEL = 0x3F; // load pullup/pulldown select register
|
P3_PUDSEL = 0xFF; // load pullup/pulldown select register
|
||||||
P3_PUDEN = 0xFC; // load pullup/pulldown enable register
|
P3_PUDEN = 0x7C; // load pullup/pulldown enable register
|
||||||
|
|
||||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||||
P3_DIR = 0xFC; // load direction register
|
P3_DIR = 0x3C; // load direction register
|
||||||
|
P3_DATA = 0x3C; // load data output register
|
||||||
|
|
||||||
|
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// Configuration of Port P4:
|
/// Configuration of Port P4:
|
||||||
/// -----------------------------------------------------------------------
|
/// -----------------------------------------------------------------------
|
||||||
/// P4.3:
|
/// P4.3:
|
||||||
/// - is used as general purpose output
|
/// - is used as general input
|
||||||
/// - push/pull output is selected
|
/// - pull-up device is assigned
|
||||||
/// - the pin status is low level
|
|
||||||
/// - pull-down device is assigned
|
|
||||||
|
|
||||||
|
|
||||||
SFR_PAGE(_pp1, noSST); // switch to page 1
|
SFR_PAGE(_pp1, noSST); // switch to page 1
|
||||||
P4_PUDSEL = 0x00; // load pullup/pulldown select register
|
|
||||||
P4_PUDEN = 0x08; // load pullup/pulldown enable register
|
P4_PUDEN = 0x08; // load pullup/pulldown enable register
|
||||||
|
|
||||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||||
P4_DIR = 0x08; // load direction register
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// USER CODE BEGIN (IO_Init,3)
|
// USER CODE BEGIN (IO_Init,3)
|
||||||
|
|||||||
27
MAIN.C
27
MAIN.C
@@ -235,37 +235,34 @@ void main(void)
|
|||||||
|
|
||||||
// SetConfig(1,CFG_MPS_Single,CFG_Repeatbility_High);
|
// SetConfig(1,CFG_MPS_Single,CFG_Repeatbility_High);
|
||||||
|
|
||||||
RomNum = Search_ROM(romid); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ROM ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>romid<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
// RomNum = Search_ROM(romid); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ROM ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>romid<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
// if(1 == power_state)//<2F><><EFBFBD>绽<EFBFBD>ѲŸ<D1B2><C5B8><EFBFBD>ʱ<EFBFBD><CAB1>
|
// if(1 == power_state)//<2F><><EFBFBD>绽<EFBFBD>ѲŸ<D1B2><C5B8><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
// {
|
// {
|
||||||
bm8563SetTime(&inittime);//20250802 <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetTime(&inittime);//20250802 <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
//E3<45><33>ʼ<EFBFBD><CABC> 20251117
|
||||||
|
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01; // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ1
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ2
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01; // ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01; // E3<45><33>Դ
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ1
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ2
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ3
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ4
|
||||||
|
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
|
||||||
// USER CODE BEGIN (MAIN_Main,4)
|
|
||||||
// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();}
|
|
||||||
// tmp[3] = (ubyte)CntCan_1;
|
|
||||||
// tmp[2] = (ubyte)(CntCan_1>>8);
|
|
||||||
|
|
||||||
// SwSample();
|
// SwSample();
|
||||||
CanRXTX();
|
CanRXTX();
|
||||||
CanErrorProcess();
|
CanErrorProcess();
|
||||||
WDT_vRefresh();
|
WDT_vRefresh();
|
||||||
// LedDr();
|
// LedDr();
|
||||||
BootMain();
|
BootMain();
|
||||||
|
|
||||||
|
|
||||||
// tmp[1] = (ubyte)CntCan_1;
|
|
||||||
// tmp[0] = (ubyte)(CntCan_1>>8);
|
|
||||||
// CAN_vLoadData(0x2, (ulong *)(tmp)); // Add this Line
|
|
||||||
// CAN_vTransmit(2);
|
|
||||||
// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();}
|
|
||||||
// USER CODE END
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End of function main
|
} // End of function main
|
||||||
|
|||||||
83
SHARED_INT.C
83
SHARED_INT.C
@@ -133,9 +133,10 @@ void SHINT_vInit(void)
|
|||||||
|
|
||||||
IEN0 |= 0x20; // load interrupt enable register 0
|
IEN0 |= 0x20; // load interrupt enable register 0
|
||||||
|
|
||||||
|
/// - Timer21 Interrupt is Selected
|
||||||
|
|
||||||
|
|
||||||
IEN1 |= 0x00; // load interrupt enable register 1
|
IEN1 |= 0x04; // load interrupt enable register 1
|
||||||
|
|
||||||
|
|
||||||
// USER CODE BEGIN (SHINT_Init,3)
|
// USER CODE BEGIN (SHINT_Init,3)
|
||||||
@@ -306,6 +307,86 @@ RTCProcess();
|
|||||||
} // End of function SHINT_viXINTR5Isr
|
} // End of function SHINT_viXINTR5Isr
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void SHINT_viXINTR8Isr(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This is the service routine for the shared interrupt node
|
||||||
|
// XINTR8. XINTR8 ISR Node is shared by External Interrupt
|
||||||
|
// 2,Timer 21,CORDIC,UART1,UART1 Fractional Divider(BRG
|
||||||
|
// Interrupt), and MDU[1:0]. Depending on the selected module
|
||||||
|
// interrupt it is called.
|
||||||
|
// EXT2 - It is called for the External interrupt 2.
|
||||||
|
// T21 - Depending on the selected operating mode it is called
|
||||||
|
// when TF2 is set by an overflow or underflow of the timer 21
|
||||||
|
// register or when EXF2 is set by a negative transition on
|
||||||
|
// T2EX.
|
||||||
|
// UART1 - It is called after the BRG timer overflows and sets
|
||||||
|
// the NDOV bit.
|
||||||
|
// It is called after each transmission (flag TI_1 set) or
|
||||||
|
// reception (flag RI_1 set) of a data unit.
|
||||||
|
// Please note that you have to add application specific code
|
||||||
|
// to this function.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue none
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2025/11/17
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// You have two choices for interrupt type select in Project Settings Page
|
||||||
|
// under Global Settings Section.
|
||||||
|
// If you select CHOICE 1 then ISR will be generated with push and pop.
|
||||||
|
// If you select CHOICE 2 then ISR will be generated without push and pop.
|
||||||
|
// Default choice is CHOICE 2.
|
||||||
|
// Current selection is CHOICE 2
|
||||||
|
|
||||||
|
// USER CODE BEGIN (SHINT_XINTR8Isr,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
void SHINT_viXINTR8Isr(void) interrupt XINTR8INT
|
||||||
|
{
|
||||||
|
|
||||||
|
// USER CODE BEGIN (SHINT_XINTR8Isr,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
EA = 0; // disable global interrupt
|
||||||
|
_push_(SYSCON0); // push the current RMAP
|
||||||
|
|
||||||
|
SET_RMAP(); // sets RMAP
|
||||||
|
|
||||||
|
// Timer 21 interrupt handling section...
|
||||||
|
|
||||||
|
if (TF2)
|
||||||
|
{
|
||||||
|
// a timer 21 overflow has occured
|
||||||
|
|
||||||
|
TF2 = 0;
|
||||||
|
|
||||||
|
// USER CODE BEGIN (SHINT_XINTR8Isr,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// USER CODE BEGIN (SHINT_XINTR8Isr,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
_pop_(SYSCON0); // restore the old RMAP
|
||||||
|
EA = 1; // enable global interrupt
|
||||||
|
|
||||||
|
} // End of function SHINT_viXINTR8Isr
|
||||||
|
|
||||||
|
|
||||||
// USER CODE BEGIN (SHARED_INT_General,10)
|
// USER CODE BEGIN (SHARED_INT_General,10)
|
||||||
|
|
||||||
// USER CODE END
|
// USER CODE END
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ void SHINT_vInit(void);
|
|||||||
|
|
||||||
#define XINTR5INT 5
|
#define XINTR5INT 5
|
||||||
|
|
||||||
|
#define XINTR8INT 8
|
||||||
|
|
||||||
// USER CODE BEGIN (SHARED_INT_Header,9)
|
// USER CODE BEGIN (SHARED_INT_Header,9)
|
||||||
|
|
||||||
// USER CODE END
|
// USER CODE END
|
||||||
|
|||||||
181
T21.C
Normal file
181
T21.C
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module Timer 21
|
||||||
|
// @Filename T21.C
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains functions that use the T21 module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2025/11/17 18:48:53
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
#include "MAIN.H"
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @External Prototypes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Local Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void T21_vInit(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This is the initialization function of the Timer 21
|
||||||
|
// function library. It is assumed that the SFRs used by this
|
||||||
|
// library are in their reset state.
|
||||||
|
//
|
||||||
|
// The following SFRs and SFR fields will be initialized:
|
||||||
|
// T21_RC2H/RC2L - reload/capture timer 21 register
|
||||||
|
// T21_T2H/T2L - timer 21 register
|
||||||
|
// EX2 - timer 21 interrupt enable
|
||||||
|
// T21_T2MOD - timer 21 mode register
|
||||||
|
// CP/RL2 - Capture/Reload select
|
||||||
|
// EXEN2 - External enable control
|
||||||
|
// TR2 - Timer21 run control
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2025/11/17
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Init,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
void T21_vInit(void)
|
||||||
|
{
|
||||||
|
// USER CODE BEGIN (T21_Init,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// Operating Mode
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// 16-bit timer function with automatic reload when timer 21 overflows
|
||||||
|
/// Prescaler enabled - input clock = fPCLK
|
||||||
|
/// the timer 21 resolution is .042 ?s
|
||||||
|
/// the timer 21 overflow is 1.000 ?s
|
||||||
|
/// timer 21 interrupt: enabled
|
||||||
|
/// timer 21 will be started
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// Register Initialization
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SET_RMAP();
|
||||||
|
|
||||||
|
T21_T2L = 0xE8; // load timer 21 register, low byte
|
||||||
|
|
||||||
|
T21_T2H = 0xFF; // load timer 21 register, high byte
|
||||||
|
|
||||||
|
T21_RC2L = 0xE8; // load timer 21 reload/capture register,
|
||||||
|
// low byte
|
||||||
|
T21_RC2H = 0xFF; // load timer 21 reload/capture register,
|
||||||
|
// high byte
|
||||||
|
T21_T2MOD = 0x10; // load timer 21 mode register
|
||||||
|
/// Timer 21 Interrupt enable bit is set in SHINT_vInit() function
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Init,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
TR2 = 1; // start timer
|
||||||
|
|
||||||
|
RESET_RMAP();
|
||||||
|
|
||||||
|
} // End of function T21_vInit
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_General,10)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
104
T21.H
Normal file
104
T21.H
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module Timer 21
|
||||||
|
// @Filename T21.H
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains all function prototypes and macros for
|
||||||
|
// the T21 module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2025/11/17 18:48:53
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _T21_H_
|
||||||
|
#define _T21_H_
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Global Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
void T21_vInit(void);
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Interrupt Vectors
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
// Shared interrupt vector definitions are defined in SHARED_INT.H
|
||||||
|
|
||||||
|
// USER CODE BEGIN (T21_Header,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
#endif // ifndef _T21_H_
|
||||||
244
User.c
244
User.c
@@ -2,14 +2,14 @@
|
|||||||
#include "RTC.H"
|
#include "RTC.H"
|
||||||
#include "temperature.H"
|
#include "temperature.H"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
//can<EFBFBD><EFBFBD>Ϣ
|
//can信息
|
||||||
UnInfCan UnInfCan_1 = {0};
|
UnInfCan UnInfCan_1 = {0};
|
||||||
UnSwOut UnSwOut_1 = {0};
|
UnSwOut UnSwOut_1 = {0};
|
||||||
|
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//CAN发送周期
|
||||||
uword CntCan_1 = 0;
|
uword CntCan_1 = 0;
|
||||||
bit FlgCan_1 = 0;
|
bit FlgCan_1 = 0;
|
||||||
//<EFBFBD><EFBFBD>һ<EFBFBD>βɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָʾ
|
//第一次采集到有效数据指示
|
||||||
bit FlgOneTime = 0;
|
bit FlgOneTime = 0;
|
||||||
|
|
||||||
uword RgCanPerid = 1000;
|
uword RgCanPerid = 1000;
|
||||||
@@ -17,41 +17,45 @@ uword RgCanPerid = 1000;
|
|||||||
UnTimeOutput sleeptime = {0};
|
UnTimeOutput sleeptime = {0};
|
||||||
UnTimeOutput waketime = {0};
|
UnTimeOutput waketime = {0};
|
||||||
UnTimeOutput currenttime = {0};
|
UnTimeOutput currenttime = {0};
|
||||||
UnTimeOutput inittime = {00,1,1,0,0,0,0,0};// Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2000<30>꣬1<EAA3AC><31>1<EFBFBD><31> <20><><EFBFBD>գ<EFBFBD>0<EFBFBD><30>0<EFBFBD><30>00
|
UnTimeOutput inittime = {00,1,1,0,0,0,0,0};// 默认设置 2000年,1月1日 周日,0:0:00
|
||||||
UnTimeOutput un_time_output1 = {0};//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨ʱ<EFBFBD><EFBFBD>
|
UnTimeOutput un_time_output1 = {0};//接收设定时间
|
||||||
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf输出
|
||||||
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf输出
|
||||||
|
UnInfCanKGFOutput un_inf_can_kgf_output3 = {0};//kgf或结果
|
||||||
|
UnInfCanKGFOutput un_inf_can_kgf_output4 = {0};//kgf或结果
|
||||||
|
|
||||||
|
UnSampleKgfCommand un_sample_kgf_command = {0};//kgf转发
|
||||||
UnTimeOutput waketimelast = {0};
|
UnTimeOutput waketimelast = {0};
|
||||||
UnTimeOutput wake_time_10min = {0};
|
UnTimeOutput wake_time_10min = {0};
|
||||||
SystemState sleepstate = STATE_INIT;
|
SystemState sleepstate = STATE_INIT;
|
||||||
//PWM 20181227
|
//PWM 20181227
|
||||||
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
|
||||||
ubyte powerstate = 0;//<EFBFBD><EFBFBD>Դ״̬
|
ubyte powerstate = 0;//电源状态
|
||||||
|
|
||||||
ubyte vcu_can_cnt = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD>
|
ubyte vcu_can_cnt = 0; // 帧累加器
|
||||||
ubyte vcu_can_last = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥֵ
|
ubyte vcu_can_last = 0; // 帧累加器过去值
|
||||||
bool flg_wake_ecu = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
bool flg_wake_ecu = 0; //控制器唤醒标志
|
||||||
bool flg_KGF = 0;//KGF<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
bool flg_KGF = 0;//KGF唤醒标志
|
||||||
|
|
||||||
ubyte can_error_cnt = 0;
|
ubyte can_error_cnt = 0;
|
||||||
ubyte can_error_flg = 0;
|
ubyte can_error_flg = 0;
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
//RTC<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//RTC定时器
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
void RTCProcess(void)
|
void RTCProcess(void)
|
||||||
{
|
{
|
||||||
//************************************************************************
|
//************************************************************************
|
||||||
//////CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//////CAN发送周期
|
||||||
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
||||||
|
|
||||||
//************************************************************************
|
//************************************************************************
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//can<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//can错误处理
|
||||||
void CanErrorProcess(void)
|
void CanErrorProcess(void)
|
||||||
{
|
{
|
||||||
ubyte ubNSRL;
|
ubyte ubNSRL;
|
||||||
@@ -91,10 +95,10 @@ void CanErrorProcess(void)
|
|||||||
void CanTransmit(void)
|
void CanTransmit(void)
|
||||||
{
|
{
|
||||||
//----------------- --------
|
//----------------- --------
|
||||||
// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 装载数据
|
||||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
{
|
{
|
||||||
CAN_waitTransmit(DF_SwTx);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
CAN_waitTransmit(DF_SwTx);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||||
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
||||||
CAN_vTransmit(DF_SwTx);
|
CAN_vTransmit(DF_SwTx);
|
||||||
}
|
}
|
||||||
@@ -112,12 +116,12 @@ void canSendTo(ubyte index,ubyte *buf)
|
|||||||
CanTransmitbuf[4] = buf[6];
|
CanTransmitbuf[4] = buf[6];
|
||||||
CanTransmitbuf[5] = buf[7];
|
CanTransmitbuf[5] = buf[7];
|
||||||
|
|
||||||
CAN_waitTransmit(index);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
CAN_waitTransmit(index);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||||
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// 装载数据
|
||||||
CAN_vTransmit(index);
|
CAN_vTransmit(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
//CAN发送一帧
|
||||||
void CanTX(void)
|
void CanTX(void)
|
||||||
{
|
{
|
||||||
//-----------------------------------
|
//-----------------------------------
|
||||||
@@ -133,7 +137,7 @@ void CanTX(void)
|
|||||||
CanTransmit();
|
CanTransmit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//休眠处理函数
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
void SystemStateMachine(SystemState *RgSTT)
|
void SystemStateMachine(SystemState *RgSTT)
|
||||||
{
|
{
|
||||||
@@ -142,9 +146,9 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
{
|
{
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_INIT:
|
case STATE_INIT:
|
||||||
if(NORMAL == flg_wake_ecu)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(NORMAL == flg_wake_ecu)//控制器唤醒
|
||||||
{
|
{
|
||||||
bm8563SetAlarm(&waketime); //<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
bm8563SetAlarm(&waketime); //设置唤醒时间
|
||||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
*RgSTT = STATE_ON;
|
*RgSTT = STATE_ON;
|
||||||
}
|
}
|
||||||
@@ -155,52 +159,52 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_ON:
|
case STATE_ON:
|
||||||
if( (bm8563CheckAlarmFlag()) || (OFF == WAKE_UP_PIN) )//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>عر<D8B9>
|
if(bm8563CheckAlarmFlag())//唤醒时间到以及高压开关关闭
|
||||||
{
|
{
|
||||||
bm8563SetTime(&inittime);//20250802 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetTime(&inittime);//20250802 初始化时间 解决因为时间不对导致无法休眠问题
|
||||||
bm8563SetAlarm(&sleeptime);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
bm8563SetAlarm(&sleeptime);//设置休眠时间
|
||||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
KGF_PIN = 0; //KGF休眠
|
||||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_PIN = 1; //can芯片休眠
|
||||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BATTERY_PIN = 0;//电池休眠
|
||||||
*RgSTT = STATE_INIT; // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬
|
*RgSTT = STATE_INIT; // 初始化状态
|
||||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
PS_vSetPowerDown();//休眠
|
||||||
}
|
}
|
||||||
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<EFBFBD>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//比较值是否一样,不一样的话立马更新
|
||||||
{
|
{
|
||||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
bm8563SetAlarm(&waketime);
|
bm8563SetAlarm(&waketime);
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON; // 保持状态(唤醒后由中断处理)
|
||||||
}
|
}
|
||||||
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>״̬
|
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//等于工作状态
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>STATE_ON2
|
*RgSTT = STATE_ON2; // 进入STATE_ON2
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON; // 保持
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_ON2:
|
case STATE_ON2:
|
||||||
if( (WAKE_UP_PIN == OFF) || (POWER_STANDBY == powerstate) )//<EFBFBD>ܿ<EFBFBD><EFBFBD>عرջ<EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD>standy
|
if( POWER_STANDBY == powerstate )//总开关关闭或者进入standy
|
||||||
{
|
{
|
||||||
bm8563SetTime(&inittime);//20250802 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA>䲻<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetTime(&inittime);//20250802 初始化时间 解决因为时间不对导致无法休眠问题
|
||||||
bm8563SetAlarm(&sleeptime);
|
bm8563SetAlarm(&sleeptime);
|
||||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
KGF_PIN = 0; //KGF休眠
|
||||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_PIN = 1; //can芯片休眠
|
||||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BATTERY_PIN = 0;//电池休眠
|
||||||
*RgSTT = STATE_INIT; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_INIT; // 保持状态(唤醒后由中断处理)
|
||||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
PS_vSetPowerDown();//休眠
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON2; // 保持
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD>
|
//CAN发送接收
|
||||||
void CanRXTX(void)
|
void CanRXTX(void)
|
||||||
{
|
{
|
||||||
stCAN_SWObj StrCanRx = {0};
|
stCAN_SWObj StrCanRx = {0};
|
||||||
@@ -230,7 +234,7 @@ void CanRXTX(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(CAN_ubNewData(DF_SwRxKGF2))//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(CAN_ubNewData(DF_SwRxKGF2))//等待KGF唤醒
|
||||||
{
|
{
|
||||||
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
||||||
|
|
||||||
@@ -241,6 +245,24 @@ void CanRXTX(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(CAN_ubNewData(DF_SwZFKGF1))//接受E3的转发控制
|
||||||
|
{
|
||||||
|
CAN_vGetMsgObj(DF_SwZFKGF1, &StrCanRx);
|
||||||
|
|
||||||
|
un_sample_kgf_command.arr[2] = StrCanRx.ulDATAL.ubDB[0];
|
||||||
|
un_sample_kgf_command.arr[3] = StrCanRx.ulDATAL.ubDB[1];
|
||||||
|
un_sample_kgf_command.arr[0] = StrCanRx.ulDATAL.ubDB[2];
|
||||||
|
un_sample_kgf_command.arr[1] = StrCanRx.ulDATAL.ubDB[3];
|
||||||
|
un_sample_kgf_command.arr[6] = StrCanRx.ulDATAH.ubDB[0];
|
||||||
|
un_sample_kgf_command.arr[7] = StrCanRx.ulDATAH.ubDB[1];
|
||||||
|
un_sample_kgf_command.arr[4] = StrCanRx.ulDATAH.ubDB[2];
|
||||||
|
un_sample_kgf_command.arr[5] = StrCanRx.ulDATAH.ubDB[3];
|
||||||
|
|
||||||
|
CAN_vReleaseObj(DF_SwZFKGF1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
@@ -260,25 +282,25 @@ void CanRXTX(void)
|
|||||||
|
|
||||||
CAN_vReleaseObj(DF_SwRx);
|
CAN_vReleaseObj(DF_SwRx);
|
||||||
|
|
||||||
vcu_can_cnt ++;//<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
vcu_can_cnt ++;//节点在线检测累加
|
||||||
|
|
||||||
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬
|
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//整车电源状态
|
||||||
|
|
||||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//设定休眠时间
|
||||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//唤醒时间
|
||||||
if(TimeTemp >= MAX_TIME)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>
|
if(TimeTemp >= MAX_TIME)//最大限制值,30天
|
||||||
{
|
{
|
||||||
TimeTemp = MAX_TIME;
|
TimeTemp = MAX_TIME;
|
||||||
}
|
}
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
// 分钟 → 小时
|
||||||
HoursTemp = TimeTemp / 60;
|
HoursTemp = TimeTemp / 60;
|
||||||
sleeptime.bit_data.minute = TimeTemp % 60;
|
sleeptime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
// Сʱ <20><> <20><>
|
// 小时 → 天
|
||||||
DaysTemp = HoursTemp / 24;
|
DaysTemp = HoursTemp / 24;
|
||||||
sleeptime.bit_data.hour = HoursTemp % 24;
|
sleeptime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
if(DaysTemp >= 30)//<EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
if(DaysTemp >= 30)//日超过范围
|
||||||
{
|
{
|
||||||
sleeptime.bit_data.day = 30;
|
sleeptime.bit_data.day = 30;
|
||||||
}
|
}
|
||||||
@@ -287,21 +309,21 @@ void CanRXTX(void)
|
|||||||
sleeptime.bit_data.day = DaysTemp;
|
sleeptime.bit_data.day = DaysTemp;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//设定唤醒时间
|
||||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//唤醒时间
|
||||||
if(TimeTemp > MAX_TIME)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>
|
if(TimeTemp > MAX_TIME)//最大限制值,30天
|
||||||
{
|
{
|
||||||
TimeTemp = MAX_TIME;
|
TimeTemp = MAX_TIME;
|
||||||
}
|
}
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
// 分钟 → 小时
|
||||||
HoursTemp = TimeTemp / 60;
|
HoursTemp = TimeTemp / 60;
|
||||||
waketime.bit_data.minute = TimeTemp % 60;
|
waketime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
// Сʱ <20><> <20><>
|
// 小时 → 天
|
||||||
DaysTemp = HoursTemp / 24;
|
DaysTemp = HoursTemp / 24;
|
||||||
waketime.bit_data.hour = HoursTemp % 24;
|
waketime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
if(DaysTemp >= 30)//<EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
if(DaysTemp >= 30)//日超过范围
|
||||||
{
|
{
|
||||||
waketime.bit_data.day = 30;
|
waketime.bit_data.day = 30;
|
||||||
}
|
}
|
||||||
@@ -311,75 +333,97 @@ void CanRXTX(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD>
|
//休眠处理
|
||||||
SystemStateMachine(&sleepstate);
|
SystemStateMachine(&sleepstate); //
|
||||||
|
|
||||||
|
|
||||||
//1000ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
//1000ms发送一帧
|
||||||
if(!FlgCan_1)
|
if(!FlgCan_1)
|
||||||
{
|
{
|
||||||
FlgCan_1 = 1;
|
FlgCan_1 = 1;
|
||||||
|
|
||||||
bm8563GetTime(¤ttime);//1s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
bm8563GetTime(¤ttime);//1s更新一次时钟
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>ַ0x03<EFBFBD><EFBFBD>
|
// 读取分钟(地址0x03)
|
||||||
UnSwSample_1.arr[4] = (BM8563_ReadReg(BM8563_ALARM_MIN));
|
UnSwSample_1.arr[4] = (BM8563_ReadReg(BM8563_ALARM_MIN));
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD>ȡСʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ0x04<EFBFBD><EFBFBD>
|
// 读取小时(地址0x04)
|
||||||
UnSwSample_1.arr[2] = (BM8563_ReadReg(BM8563_ALARM_HOUR)); // 24Сʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit6-7
|
UnSwSample_1.arr[2] = (BM8563_ReadReg(BM8563_ALARM_HOUR)); // 24小时制需屏蔽Bit6-7
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD>ַ0x05<EFBFBD><EFBFBD>
|
// 读取日(地址0x05)
|
||||||
UnSwSample_1.arr[1] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>λ
|
UnSwSample_1.arr[1] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // 屏蔽控制位
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD>ַ0x05<EFBFBD><EFBFBD>
|
// 读取日(地址0x05)
|
||||||
UnSwSample_1.arr[5] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>λ
|
UnSwSample_1.arr[5] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // 屏蔽控制位
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ַ0x06<EFBFBD><EFBFBD>BM8563<EFBFBD><EFBFBD>ֵΪ0x01-0x07<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCDת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 读取周(地址0x06,BM8563周值为0x01-0x07,无需BCD转换)
|
||||||
UnSwSample_1.arr[3] = BM8563_ReadReg(BM8563_ALARM_WEEK); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3λ
|
UnSwSample_1.arr[3] = BM8563_ReadReg(BM8563_ALARM_WEEK); // 仅保留低3位
|
||||||
|
|
||||||
CanTX();
|
CanTX();
|
||||||
|
|
||||||
if(vcu_can_cnt == vcu_can_last)//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
|
{
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF01 = un_sample_kgf_command.bit_data.KGF01_CH01_Reserve | un_inf_can_kgf_output1.bit_data.KGF01;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF02 = un_sample_kgf_command.bit_data.KGF01_CH02_Reserve | un_inf_can_kgf_output1.bit_data.KGF02;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF03 = un_sample_kgf_command.bit_data.KGF01_CH03_Reserve | un_inf_can_kgf_output1.bit_data.KGF03;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF04 = un_sample_kgf_command.bit_data.KGF01_PrechargeRelay | un_inf_can_kgf_output1.bit_data.KGF04;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF05 = un_sample_kgf_command.bit_data.KGF01_CH05_Reserve | un_inf_can_kgf_output1.bit_data.KGF05;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF06 = un_sample_kgf_command.bit_data.KGF01_CH06_Reserve | un_inf_can_kgf_output1.bit_data.KGF06;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF07 = un_sample_kgf_command.bit_data.KGF01_HighVoltageRelayA | un_inf_can_kgf_output1.bit_data.KGF07;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF08 = un_sample_kgf_command.bit_data.KGF01_HighVoltageRelayB | un_inf_can_kgf_output1.bit_data.KGF08;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF09 = un_sample_kgf_command.bit_data.KGF01_CH09_Reserve | un_inf_can_kgf_output1.bit_data.KGF09;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF10 = un_sample_kgf_command.bit_data.KGF01_CH10_Reserve | un_inf_can_kgf_output1.bit_data.KGF10;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF11 = un_sample_kgf_command.bit_data.KGF01_LowVoltageRelayA | un_inf_can_kgf_output1.bit_data.KGF11;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF12 = un_sample_kgf_command.bit_data.KGF01_LowVoltageRelayB | un_inf_can_kgf_output1.bit_data.KGF12;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF13 = un_sample_kgf_command.bit_data.KGF01_LowVoltageCharge | un_inf_can_kgf_output1.bit_data.KGF13;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF14 = un_sample_kgf_command.bit_data.KGF01_CH14_Reserve | un_inf_can_kgf_output1.bit_data.KGF14;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF15 = un_sample_kgf_command.bit_data.KGF01_CH15_Reserve | un_inf_can_kgf_output1.bit_data.KGF15;
|
||||||
|
un_inf_can_kgf_output3.bit_data.KGF16 = un_sample_kgf_command.bit_data.KGF01_CH16_Reserve | un_inf_can_kgf_output1.bit_data.KGF16;
|
||||||
|
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF01 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerA | un_inf_can_kgf_output2.bit_data.KGF01;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF02 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerB | un_inf_can_kgf_output2.bit_data.KGF02;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF03 = un_sample_kgf_command.bit_data.KGF02_RemotePower | un_inf_can_kgf_output2.bit_data.KGF03;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF04 = un_sample_kgf_command.bit_data.KGF02_VcuE3Power | un_inf_can_kgf_output2.bit_data.KGF04;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF05 = un_sample_kgf_command.bit_data.KGF02_NetworkSwitchPowerA | un_inf_can_kgf_output2.bit_data.KGF05;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF06 = un_sample_kgf_command.bit_data.KGF02_NetworkSwitchPowerB | un_inf_can_kgf_output2.bit_data.KGF06;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF07 = un_sample_kgf_command.bit_data.KGF02_LeftHeadlightA | un_inf_can_kgf_output2.bit_data.KGF07;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF08 = un_sample_kgf_command.bit_data.KGF02_LeftHeadlightB | un_inf_can_kgf_output2.bit_data.KGF08;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF09 = un_sample_kgf_command.bit_data.KGF02_RightHeadlightA | un_inf_can_kgf_output2.bit_data.KGF09;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF10 = un_sample_kgf_command.bit_data.KGF02_RightHeadlightB | un_inf_can_kgf_output2.bit_data.KGF10;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF11 = un_sample_kgf_command.bit_data.KGF02_LeftTaillightA | un_inf_can_kgf_output2.bit_data.KGF11;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF12 = un_sample_kgf_command.bit_data.KGF02_LeftTaillightB | un_inf_can_kgf_output2.bit_data.KGF12;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF13 = un_sample_kgf_command.bit_data.KGF02_RightTaillightA | un_inf_can_kgf_output2.bit_data.KGF13;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF14 = un_sample_kgf_command.bit_data.KGF02_RightTaillightB | un_inf_can_kgf_output2.bit_data.KGF14;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF15 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerC | un_inf_can_kgf_output2.bit_data.KGF15;
|
||||||
|
un_inf_can_kgf_output4.bit_data.KGF16 = un_sample_kgf_command.bit_data.KGF02_ComputerPowerD | un_inf_can_kgf_output2.bit_data.KGF16;
|
||||||
|
|
||||||
|
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output3.arr[0]);
|
||||||
|
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output4.arr[0]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(vcu_can_cnt == vcu_can_last)//数据一样表示故障
|
||||||
{
|
{
|
||||||
flg_wake_ecu = FAULT;
|
flg_wake_ecu = FAULT;
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01;// ң<><D2A3><EFBFBD><EFBFBD>
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01;// <20><><EFBFBD>罻<EFBFBD><E7BDBB><EFBFBD><EFBFBD>
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01;// <20><><EFBFBD>罻<EFBFBD><E7BDBB><EFBFBD><EFBFBD>
|
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20<32>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
|
|
||||||
|
|
||||||
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
{
|
|
||||||
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
|
|
||||||
// canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
flg_wake_ecu = NORMAL;
|
flg_wake_ecu = NORMAL;
|
||||||
vcu_can_last = vcu_can_cnt;//<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD>
|
vcu_can_last = vcu_can_cnt;//数据更新
|
||||||
}
|
}
|
||||||
|
|
||||||
GetTemp();//1s<EFBFBD>ɼ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
GetTemp();//1s采集一次温度
|
||||||
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
|
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
|
||||||
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
|
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
|
||||||
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
||||||
|
|
||||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
{
|
{
|
||||||
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1.arr[0]);
|
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1.arr[0]); //不需要发送 小车不需要采集
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625判断是否出现总线错误
|
||||||
|
|
||||||
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<32>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
|
||||||
{
|
{
|
||||||
can_error_flg = can_error_cnt;
|
can_error_flg = can_error_cnt;
|
||||||
CAN_vInit();
|
CAN_vInit();
|
||||||
|
|||||||
194
temperature.C
194
temperature.C
@@ -89,12 +89,12 @@ unsigned char read_bit(void)
|
|||||||
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||||
Delay_us(1); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 3us
|
DELAY_3US(); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 3us
|
||||||
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> DQ <20><><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> DQ <20><><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
SFR_PAGE(_pp0, noSST); // switch to page 0
|
SFR_PAGE(_pp0, noSST); // switch to page 0
|
||||||
P3_DIR = P3_DIR & 0xDF;// load direction register
|
P3_DIR = P3_DIR & 0xDF;// load direction register
|
||||||
|
|
||||||
Delay_us(3); // <20>ȴ<EFBFBD> 10us ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
|
DELAY_10US(); // <20>ȴ<EFBFBD> 10us ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
|
||||||
|
|
||||||
res = DQ;
|
res = DQ;
|
||||||
Delay_us(27); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
|
Delay_us(27); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
|
||||||
@@ -109,11 +109,11 @@ void write_bit(char bitval)
|
|||||||
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
||||||
|
|
||||||
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||||
Delay_us(2); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5us
|
DELAY_3US(); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5us
|
||||||
if(bitval == 1) DQ =1; // <20><><EFBFBD><EFBFBD> д 1<><31><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
if(bitval == 1) DQ =1; // <20><><EFBFBD><EFBFBD> д 1<><31><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||||
Delay_us(25); // <20><><EFBFBD><EFBFBD> д 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> 60 us
|
Delay_us(30); // <20><><EFBFBD><EFBFBD> д 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> 60 us
|
||||||
DQ = 1; // <20>ͷ<EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
DQ = 1; // <20>ͷ<EFBFBD> DQ <20><><EFBFBD><EFBFBD>
|
||||||
Delay_us(5); // <20><>д 0<><30><EFBFBD>ָ<EFBFBD> ʱ<><CAB1> 10us
|
DELAY_10US(); // <20><>д 0<><30><EFBFBD>ָ<EFBFBD> ʱ<><CAB1> 10us
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
@@ -268,63 +268,35 @@ BOOL ConvertTemp(void)
|
|||||||
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* @retval <20><>״̬
|
* @retval <20><>״̬
|
||||||
*/
|
*/
|
||||||
//BOOL ReadTempWaiting(uword *iTemp)
|
BOOL ReadTempWaiting(uword *iTemp)
|
||||||
//{
|
{
|
||||||
// ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
|
ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
|
||||||
// M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
|
M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
|
||||||
|
|
||||||
// /*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
||||||
// if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
|
if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
|
||||||
// {
|
{
|
||||||
// UnSwSample_1.bit_data.temperature[1] = 1;
|
UnSwSample_1.bit_data.temperature[1] = 1;
|
||||||
// return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
||||||
// }
|
}
|
||||||
|
|
||||||
// /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
||||||
// UnSwSample_1.bit_data.temperature[1] = scrb[8];
|
// UnSwSample_1.bit_data.temperature[1] = scrb[8];
|
||||||
// if(scrb[8] != MY_OW_CRC8(scrb, 8))
|
if(scrb[8] != MY_OW_CRC8(scrb, 8))
|
||||||
// {
|
{
|
||||||
|
|
||||||
// return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
||||||
// }
|
}
|
||||||
//// UnSwSample_1.bit_data.temperature[1] = *iTemp;
|
// UnSwSample_1.bit_data.temperature[1] = *iTemp;
|
||||||
// /*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
/*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
||||||
// *iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb;
|
*iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb;
|
||||||
//
|
|
||||||
// return TRUE;
|
return TRUE;
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
* @param <20><>
|
|
||||||
* @retval ״̬
|
|
||||||
*/
|
|
||||||
|
|
||||||
//BOOL GetTemp(void)
|
|
||||||
//{
|
|
||||||
// static uword intTemp = 0;//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Լ<EFBFBD><D4BC>仯
|
|
||||||
// float fTemp;
|
|
||||||
// int signedInt_f_tem = 0;
|
|
||||||
////---------------------------------------
|
|
||||||
// intTemp = 0;
|
|
||||||
// if(ConvertTemp() == FALSE) return FALSE;
|
|
||||||
// Delay_us(6000);
|
|
||||||
// ReadTempWaiting(&intTemp);
|
|
||||||
|
|
||||||
// signedInt_f_tem = (int)intTemp;
|
|
||||||
//
|
|
||||||
// fTemp = ( (float)(signedInt_f_tem)/256.0 ) + 40.0;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//// fTemp = M601_OutputtoTemp(signedInt_f_tem);
|
|
||||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// signedInt_f_tem = (int)(fTemp*10);
|
|
||||||
//// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// UnSwSample_1.bit_data.temperature[0] = signedInt_f_tem;
|
|
||||||
// return TRUE;
|
|
||||||
//}
|
|
||||||
/**-----------------------------------------------------------------------
|
/**-----------------------------------------------------------------------
|
||||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>ȡ˳<C8A1><EFBFBD>λ-><3E><>λ<EFBFBD><CEBB>
|
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>ȡ˳<C8A1><EFBFBD>λ-><3E><>λ<EFBFBD><CEBB>
|
||||||
* @param <20><>
|
* @param <20><>
|
||||||
@@ -460,26 +432,58 @@ BOOL M601_ReadScratchpad(unsigned char* scr, unsigned char j)
|
|||||||
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
|
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
|
||||||
* @retval <20><>״̬
|
* @retval <20><>״̬
|
||||||
*/
|
*/
|
||||||
BOOL ReadTempWaiting(unsigned short* iTemp, unsigned char j)
|
//BOOL ReadTempWaiting(unsigned short* iTemp, unsigned char j)
|
||||||
|
//{
|
||||||
|
// unsigned char scrb[sizeof(M601_SCRATCHPAD_READ)];
|
||||||
|
// M601_SCRATCHPAD_READ* scr = (M601_SCRATCHPAD_READ*)scrb;
|
||||||
|
|
||||||
|
// /*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
||||||
|
// if (M601_ReadScratchpad(scrb, j) == 0)
|
||||||
|
// {
|
||||||
|
// return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
||||||
|
// if (scrb[8] != MY_OW_CRC8(scrb, 8))
|
||||||
|
// {
|
||||||
|
// return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
||||||
|
// *iTemp = (unsigned short)scr->T_msb << 8 | scr->T_lsb;
|
||||||
|
|
||||||
|
// return TRUE;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
* @param <20><>
|
||||||
|
* @retval ״̬
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL GetTemp(void)
|
||||||
{
|
{
|
||||||
unsigned char scrb[sizeof(M601_SCRATCHPAD_READ)];
|
static uword intTemp = 0;//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Լ<EFBFBD><D4BC>仯
|
||||||
M601_SCRATCHPAD_READ* scr = (M601_SCRATCHPAD_READ*)scrb;
|
float fTemp;
|
||||||
|
int signedInt_f_tem = 0;
|
||||||
|
//---------------------------------------
|
||||||
|
// intTemp = 0;
|
||||||
|
if(ConvertTemp() == FALSE) return FALSE;
|
||||||
|
Delay_us(6500);
|
||||||
|
ReadTempWaiting(&intTemp);
|
||||||
|
|
||||||
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
|
signedInt_f_tem = (int)intTemp;
|
||||||
if (M601_ReadScratchpad(scrb, j) == 0)
|
|
||||||
{
|
|
||||||
return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
|
fTemp = ( (float)(signedInt_f_tem)/256.0 ) + 40.0;
|
||||||
if (scrb[8] != MY_OW_CRC8(scrb, 8))
|
|
||||||
{
|
|
||||||
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
|
|
||||||
*iTemp = (unsigned short)scr->T_msb << 8 | scr->T_lsb;
|
|
||||||
|
|
||||||
|
// fTemp = M601_OutputtoTemp(signedInt_f_tem);
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
signedInt_f_tem = (int)(fTemp*10);
|
||||||
|
// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UnSwSample_1.bit_data.temperature[0] = signedInt_f_tem;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -487,32 +491,32 @@ BOOL ReadTempWaiting(unsigned short* iTemp, unsigned char j)
|
|||||||
* @param <20><>
|
* @param <20><>
|
||||||
* @retval ״̬
|
* @retval ״̬
|
||||||
*/
|
*/
|
||||||
BOOL GetTemp(void)
|
//BOOL GetTemp(void)
|
||||||
{
|
//{
|
||||||
float fTemp;
|
// float fTemp;
|
||||||
static unsigned int iTemp[MAXNUM];
|
// static unsigned int iTemp[MAXNUM];
|
||||||
int i;
|
// int i;
|
||||||
int signedInt_f_tem = 0;
|
// int signedInt_f_tem = 0;
|
||||||
//----------------------------------------------------
|
////----------------------------------------------------
|
||||||
// memset(romid, 0, sizeof(romid));//<2F><><EFBFBD><EFBFBD>
|
//// memset(romid, 0, sizeof(romid));//<2F><><EFBFBD><EFBFBD>
|
||||||
|
//
|
||||||
|
// /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬһ<C6AC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
|
// if(ConvertTemp() == FALSE) return FALSE;
|
||||||
|
// Delay_us(6500);
|
||||||
|
|
||||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬһ<C6AC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
//
|
||||||
if(ConvertTemp() == FALSE) return FALSE;
|
// for (i = 0; i < RomNum; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ
|
||||||
Delay_us(6500);
|
// {
|
||||||
|
// iTemp[i] = 0;
|
||||||
|
// /*<2A><><EFBFBD><EFBFBD>*/
|
||||||
|
// ReadTempWaiting(&iTemp[i], i);
|
||||||
|
|
||||||
|
// fTemp = M601_OutputtoTemp((int)iTemp[i]); //<2F>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
for (i = 0; i < RomNum; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ
|
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
// signedInt_f_tem = (int)(fTemp*10);
|
||||||
iTemp[i] = 0;
|
// // <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
/*<2A><><EFBFBD><EFBFBD>*/
|
// UnSwSample_1.bit_data.temperature[i] = (unsigned int)signedInt_f_tem;
|
||||||
ReadTempWaiting(&iTemp[i], i);
|
// }
|
||||||
|
// return TRUE;
|
||||||
fTemp = M601_OutputtoTemp((int)iTemp[i]); //<2F>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
//}
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
signedInt_f_tem = (int)(fTemp*10);
|
|
||||||
// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
UnSwSample_1.bit_data.temperature[1] = (unsigned int)signedInt_f_tem;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,6 +4,16 @@
|
|||||||
#include "MAIN.H"
|
#include "MAIN.H"
|
||||||
|
|
||||||
|
|
||||||
|
#define DELAY_3US() _nop_(); _nop_(); _nop_()
|
||||||
|
|
||||||
|
#define DELAY_5US() _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
|
||||||
|
|
||||||
|
#define DELAY_10US() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); \
|
||||||
|
_nop_(); _nop_(); _nop_(); _nop_(); _nop_()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define DQ P3_5
|
#define DQ P3_5
|
||||||
|
|
||||||
///*Bit definition of config register*/
|
///*Bit definition of config register*/
|
||||||
|
|||||||
54
user.H
54
user.H
@@ -8,6 +8,7 @@
|
|||||||
#define DF_SwTxKGF2 10
|
#define DF_SwTxKGF2 10
|
||||||
#define DF_SwTxTemp 12
|
#define DF_SwTxTemp 12
|
||||||
#define DF_SwRxKGF2 13
|
#define DF_SwRxKGF2 13
|
||||||
|
#define DF_SwZFKGF1 14
|
||||||
|
|
||||||
#define MAX_TIME 43200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
|
#define MAX_TIME 43200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
@@ -22,21 +23,18 @@
|
|||||||
|
|
||||||
#define BATTERY_PIN P3_6 //<2F><><EFBFBD>ؿ<EFBFBD><D8BF>ƽ<EFBFBD>
|
#define BATTERY_PIN P3_6 //<2F><><EFBFBD>ؿ<EFBFBD><D8BF>ƽ<EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
#define ON 0 //<2F><><EFBFBD><EFBFBD>
|
#define ON 0 //<2F><><EFBFBD><EFBFBD>
|
||||||
#define OFF 1 //<2F>ɿ<EFBFBD>
|
#define OFF 1 //<2F>ɿ<EFBFBD>
|
||||||
|
|
||||||
#define FAULT 0
|
#define FAULT 0
|
||||||
#define NORMAL 1
|
#define NORMAL 1
|
||||||
|
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬ö<CCAC><C3B6>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬ö<CCAC><C3B6>
|
||||||
typedef enum {
|
typedef enum {
|
||||||
POWER_STANDBY,
|
POWER_STANDBY,
|
||||||
POWER_WORKING,
|
POWER_WORKING,
|
||||||
POWER_EMERGENCY,
|
POWER_EMERGENCY,
|
||||||
POWER_PRE_CHARGE,
|
POWER_PRE_CHARGE,
|
||||||
POWER_NEUTRAL,
|
|
||||||
POWER_SLEEP
|
POWER_SLEEP
|
||||||
} PowerState;
|
} PowerState;
|
||||||
|
|
||||||
@@ -96,8 +94,55 @@ typedef union _UnInfCanKGFOutput
|
|||||||
} UnInfCanKGFOutput;
|
} UnInfCanKGFOutput;
|
||||||
|
|
||||||
|
|
||||||
|
// VCU -> <20>ɼ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD> 0x15000004
|
||||||
|
typedef struct _StrSampleKgfCommand
|
||||||
|
{
|
||||||
|
//-----KGF01 Ŀ<><C4BF>λͼ byte0..1-----------------------------------------
|
||||||
|
unsigned int KGF01_CH01_Reserve : 1; // bit0 ͨ<><CDA8>1
|
||||||
|
unsigned int KGF01_CH02_Reserve : 1; // bit1 ͨ<><CDA8>2
|
||||||
|
unsigned int KGF01_CH03_Reserve : 1; // bit2 ͨ<><CDA8>3
|
||||||
|
unsigned int KGF01_PrechargeRelay : 1; // bit3 ͨ<><CDA8>4 Ԥ<><D4A4><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>
|
||||||
|
unsigned int KGF01_CH05_Reserve : 1; // bit4 ͨ<><CDA8>5
|
||||||
|
unsigned int KGF01_CH06_Reserve : 1; // bit5 ͨ<><CDA8>6
|
||||||
|
unsigned int KGF01_HighVoltageRelayA : 1; // bit6 ͨ<><CDA8>7 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>A
|
||||||
|
unsigned int KGF01_HighVoltageRelayB : 1; // bit7 ͨ<><CDA8>8 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>B
|
||||||
|
unsigned int KGF01_CH09_Reserve : 1; // bit8 ͨ<><CDA8>9
|
||||||
|
unsigned int KGF01_CH10_Reserve : 1; // bit9 ͨ<><CDA8>10
|
||||||
|
unsigned int KGF01_LowVoltageRelayA : 1; // bit10 ͨ<><CDA8>11 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>A
|
||||||
|
unsigned int KGF01_LowVoltageRelayB : 1; // bit11 ͨ<><CDA8>12 <20><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>B
|
||||||
|
unsigned int KGF01_LowVoltageCharge : 1; // bit12 ͨ<><CDA8>13 <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
||||||
|
unsigned int KGF01_CH14_Reserve : 1; // bit13 ͨ<><CDA8>14
|
||||||
|
unsigned int KGF01_CH15_Reserve : 1; // bit14 ͨ<><CDA8>15
|
||||||
|
unsigned int KGF01_CH16_Reserve : 1; // bit15 ͨ<><CDA8>16
|
||||||
|
|
||||||
|
//-----KGF02 Ŀ<><C4BF>λͼ byte2..3-----------------------------------------
|
||||||
|
unsigned int KGF02_ComputerPowerA : 1; // bit16 ͨ<><CDA8>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴA
|
||||||
|
unsigned int KGF02_ComputerPowerB : 1; // bit17 ͨ<><CDA8>2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴB
|
||||||
|
unsigned int KGF02_RemotePower : 1; // bit18 ͨ<><CDA8>3 ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||||
|
unsigned int KGF02_VcuE3Power : 1; // bit19 ͨ<><CDA8>4 VCU(E3)<29><>Դ
|
||||||
|
unsigned int KGF02_NetworkSwitchPowerA : 1; // bit20 ͨ<><CDA8>5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴA
|
||||||
|
unsigned int KGF02_NetworkSwitchPowerB : 1; // bit21 ͨ<><CDA8>6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴB
|
||||||
|
unsigned int KGF02_LeftHeadlightA : 1; // bit22 ͨ<><CDA8>7 <20><>ǰ<EFBFBD><C7B0>A
|
||||||
|
unsigned int KGF02_LeftHeadlightB : 1; // bit23 ͨ<><CDA8>8 <20><>ǰ<EFBFBD><C7B0>B
|
||||||
|
unsigned int KGF02_RightHeadlightA : 1; // bit24 ͨ<><CDA8>9 <20><>ǰ<EFBFBD><C7B0>A
|
||||||
|
unsigned int KGF02_RightHeadlightB : 1; // bit25 ͨ<><CDA8>10 <20><>ǰ<EFBFBD><C7B0>B
|
||||||
|
unsigned int KGF02_LeftTaillightA : 1; // bit26 ͨ<><CDA8>11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A
|
||||||
|
unsigned int KGF02_LeftTaillightB : 1; // bit27 ͨ<><CDA8>12 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||||
|
unsigned int KGF02_RightTaillightA : 1; // bit28 ͨ<><CDA8>13 <20>Һ<EFBFBD><D2BA><EFBFBD>A
|
||||||
|
unsigned int KGF02_RightTaillightB : 1; // bit29 ͨ<><CDA8>14 <20>Һ<EFBFBD><D2BA><EFBFBD>B
|
||||||
|
unsigned int KGF02_ComputerPowerC : 1; // bit30 ͨ<><CDA8>15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴC
|
||||||
|
unsigned int KGF02_ComputerPowerD : 1; // bit31 ͨ<><CDA8>16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԴD
|
||||||
|
|
||||||
|
//-----<2D><><EFBFBD><EFBFBD> byte4..7--------------------------------------------------
|
||||||
|
ulong Reserve ; // bit32..63
|
||||||
|
|
||||||
|
} StrSampleKgfCommand;
|
||||||
|
|
||||||
|
typedef union _UnSampleKgfCommand
|
||||||
|
{
|
||||||
|
StrSampleKgfCommand bit_data; // ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ubyte arr[sizeof(StrSampleKgfCommand)]; // ͨ<><CDA8><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С
|
||||||
|
} UnSampleKgfCommand;
|
||||||
|
|
||||||
|
|
||||||
//---<2D>ⲿҪʹ<D2AA>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------------
|
//---<2D>ⲿҪʹ<D2AA>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------------
|
||||||
@@ -105,11 +150,12 @@ extern UnSwOut UnSwOut_1;
|
|||||||
extern UnInfCan UnInfCan_1;
|
extern UnInfCan UnInfCan_1;
|
||||||
extern uword CntCan_1;
|
extern uword CntCan_1;
|
||||||
extern bit FlgCan_1;
|
extern bit FlgCan_1;
|
||||||
|
|
||||||
extern ubyte can_error_cnt;
|
extern ubyte can_error_cnt;
|
||||||
extern ubyte can_error_flg;
|
extern ubyte can_error_flg;
|
||||||
|
|
||||||
|
|
||||||
extern UnInfCanKGFOutput un_inf_can_kgf_output1;//kgf<67><66><EFBFBD><EFBFBD>
|
extern UnInfCanKGFOutput un_inf_can_kgf_output1;//kgf<67><66><EFBFBD><EFBFBD>
|
||||||
|
extern UnInfCanKGFOutput un_inf_can_kgf_output2;//kgf<67><66><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
void CanRXTX(void);
|
void CanRXTX(void);
|
||||||
void SwSample(void);
|
void SwSample(void);
|
||||||
|
|||||||
Reference in New Issue
Block a user