Compare commits
2 Commits
Expansion_
...
Control_Bo
| Author | SHA1 | Date |
|---|---|---|
|
|
eae43f03b7 | |
|
|
e4af8b2619 |
Binary file not shown.
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
|
||||
|
||||
<component name="EventRecorderStub" version="1.0.0"/> <!--name and version of the component-->
|
||||
<events>
|
||||
</events>
|
||||
|
||||
</component_viewer>
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
T8684 1513:581.568 SEGGER J-Link V7.96q Log File
|
||||
T8684 1513:581.696 DLL Compiled: Jun 28 2024 12:33:32
|
||||
T8684 1513:581.696 Logging started @ 2024-09-06 11:31
|
||||
T8684 1513:581.696 Process: C:\APP\KeilMDK\UV4\UV4.exe
|
||||
T8684 1513:581.696 - 1451569.920ms
|
||||
T8684 1513:581.696 JLINK_SetWarnOutHandler(...)
|
||||
T8684 1513:581.696 - 0.003ms
|
||||
T8684 1513:581.696 JLINK_OpenEx(...)
|
||||
T8684 1513:583.360 Firmware: J-Link ARM-OB STM32 compiled Aug 22 2012 19:52:04
|
||||
T8684 1513:584.000 Firmware: J-Link ARM-OB STM32 compiled Aug 22 2012 19:52:04
|
||||
T8684 1513:585.408 Hardware: V7.00
|
||||
T8684 1513:585.408 S/N: 20090928
|
||||
T8684 1513:585.408 OEM: SEGGER
|
||||
T8684 1513:585.408 Feature(s): RDI,FlashDL,FlashBP,JFlash,GDB
|
||||
T8684 1513:585.664 Bootloader: (Could not read)
|
||||
T8684 1513:586.176 TELNET listener socket opened on port 19021
|
||||
T8684 1513:614.080 Device "CORTEX-M0" selected.
|
||||
T8684 1513:615.104 WEBSRV WEBSRV_Init(): Starting webserver thread(s)
|
||||
T8684 1513:615.232 WEBSRV Webserver running on local port 19080
|
||||
T8684 1513:615.232 Looking for J-Link GUI Server exe at: C:\APP\KeilMDK\ARM\Segger\JLinkGUIServer.exe
|
||||
T8684 1513:615.360 Looking for J-Link GUI Server exe at: C:\Program Files\SEGGER\JLink_V796q\JLinkGUIServer.exe
|
||||
T8684 1513:615.360 Forking J-Link GUI Server: C:\Program Files\SEGGER\JLink_V796q\JLinkGUIServer.exe
|
||||
T8684 1513:627.264 J-Link GUI Server info: "J-Link GUI server V7.96q "
|
||||
T8684 1513:630.208 - 48.508ms returns "O.K."
|
||||
T8684 1513:630.208 JLINK_GetEmuCaps()
|
||||
T8684 1513:630.208 - 0.008ms returns 0x88EA5833
|
||||
T8684 1513:630.208 JLINK_TIF_GetAvailable(...)
|
||||
T8684 1513:632.768 - 2.520ms
|
||||
T8684 1513:633.152 JLINK_SetErrorOutHandler(...)
|
||||
T8684 1513:633.152 - 0.017ms
|
||||
T8684 1513:633.152 JLINK_ExecCommand("ProjectFile = "D:\home\Desktop\items\Ó²¼þСÏîÄ¿\Öпذå\Èí¼þ\bleSDK6_v1.4.1\projects\blezongkong\mdk\JLinkSettings.ini"", ...).
|
||||
T8684 1513:637.120 Device "CORTEX-M0" selected.
|
||||
T8684 1513:637.632 - 4.325ms returns 0x00
|
||||
T8684 1513:639.936 JLINK_ExecCommand("Device = B6x", ...).
|
||||
T8684 1513:640.064 Flash bank @ 0x18000000: SFL: Parsing sectorization info from ELF file
|
||||
T8684 1513:640.064 FlashDevice.SectorInfo[0]: .SectorSize = 0x00001000, .SectorStartAddr = 0x00000000
|
||||
T8684 1513:640.064 OFL: Init() present @ offset 0x000000AB
|
||||
T8684 1513:640.064 OFL: UnInit() present @ offset 0x000001E1
|
||||
T8684 1513:640.064 OFL: EraseSector() present @ offset 0x00000293
|
||||
T8684 1513:640.064 OFL: ProgramPage() present @ offset 0x000002C5
|
||||
T8684 1513:640.064 OFL: EraseChip() present @ offset 0x00000225
|
||||
T8684 1513:640.064 OFL: BlankCheck() N/A
|
||||
T8684 1513:640.064 OFL: Verify() present @ offset 0x00000383
|
||||
T8684 1513:640.064 OFL: SEGGER_FL_Erase() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_Erase() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Program() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_Program() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Read() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_Read() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_CalcCRC() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_CalcCRC() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Start() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_Start() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_GetFlashInfo() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_OPEN_GetFlashInfo() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Verify() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_CheckBlank() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Prepare() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_Restore() N/A
|
||||
T8684 1513:640.192 OFL: SEGGER_FL_EraseChip() N/A
|
||||
T8684 1513:640.192 OFL var <SEGGER_FL_GoIntEn>: N/A
|
||||
T8684 1513:643.904 Device "B6X" selected.
|
||||
T8684 1513:644.288 - 4.394ms returns 0x00
|
||||
T8684 1513:644.288 JLINK_ExecCommand("DisableConnectionTimeout", ...).
|
||||
T8684 1513:644.288 ERROR: Unknown command
|
||||
T8684 1513:644.288 - 0.011ms returns 0x01
|
||||
T8684 1513:644.416 JLINK_GetHardwareVersion()
|
||||
T8684 1513:644.416 - 0.006ms returns 70000
|
||||
T8684 1513:644.416 JLINK_GetDLLVersion()
|
||||
T8684 1513:644.416 - 0.006ms returns 79617
|
||||
T8684 1513:644.416 JLINK_GetOEMString(...)
|
||||
T8684 1513:644.416 JLINK_GetFirmwareString(...)
|
||||
T8684 1513:644.416 - 0.037ms
|
||||
T8684 1513:652.096 JLINK_GetDLLVersion()
|
||||
T8684 1513:652.224 - 0.024ms returns 79617
|
||||
T8684 1513:652.224 JLINK_GetCompileDateTime()
|
||||
T8684 1513:652.224 - 0.006ms
|
||||
T8684 1513:654.144 JLINK_GetFirmwareString(...)
|
||||
T8684 1513:654.144 - 0.014ms
|
||||
T8684 1513:655.808 JLINK_GetHardwareVersion()
|
||||
T8684 1513:655.936 - 0.010ms returns 70000
|
||||
T8684 1513:657.600 JLINK_GetSN()
|
||||
T8684 1513:657.600 - 0.012ms returns 20090928
|
||||
T8684 1513:659.008 JLINK_GetOEMString(...)
|
||||
T8684 1513:664.640 JLINK_TIF_Select(JLINKARM_TIF_SWD)
|
||||
T8684 1513:664.896 - 0.316ms returns 0x00
|
||||
T8684 1513:664.896 JLINK_HasError()
|
||||
T8684 1513:664.896 JLINK_SetSpeed(5000)
|
||||
T8684 1513:664.896 - 0.059ms
|
||||
T8684 1513:664.896 JLINK_GetId()
|
||||
T8684 1513:668.992 ConfigTargetSettings() start
|
||||
T8684 1513:668.992 J-Link Script File: Executing ConfigTargetSettings()
|
||||
T8684 1513:670.528 ConfigTargetSettings() end - Took 14us
|
||||
T8684 1513:774.848 Failed to attach to CPU. Trying connect under reset.
|
||||
T8684 1514:295.552 Connect fallback: Reset via Reset pin & Connect.
|
||||
T8684 1514:351.360 ConfigTargetSettings() start
|
||||
T8684 1514:351.360 J-Link Script File: Executing ConfigTargetSettings()
|
||||
T8684 1514:352.384 ConfigTargetSettings() end - Took 10us
|
||||
T8684 1514:458.752 - 793.763ms returns 0x00000000
|
||||
T8684 1582:110.080 JLINK_Close()
|
||||
T8684 1582:130.432 - 20.341ms
|
||||
T8684 1582:130.432
|
||||
T8684 1582:130.432 Closed
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -343,7 +343,7 @@
|
|||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\src\sys_config.c</PathWithFileName>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<TargetName>OTA</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\output\</OutputDirectory>
|
||||
<OutputName>OTA_V2_8</OutputName>
|
||||
<OutputName>OTA_V2_9</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ void Event_Handle(uint16_t Event_List ,bool isOn,void *Parameter){
|
|||
(void)Parameter;
|
||||
switch(Event_List){
|
||||
case Buzzer_Event:
|
||||
Set_Status(OUT_BUZZER,isOn);
|
||||
Set_Status(IO_TTL_TX,isOn);
|
||||
break;
|
||||
case Pmode_Timeout_Event:
|
||||
if(!isOn){
|
||||
|
|
|
|||
|
|
@ -30,35 +30,54 @@ float temp_bat_voltage=0;
|
|||
|
||||
// uint8_t bat_str[50]={0,0},bat_str_len=0;
|
||||
|
||||
|
||||
const uint16_t coulomp_voltage_table[11] = {
|
||||
BAT_LEVEL_0PERCENT_VOLT,
|
||||
BAT_LEVEL_10PERCENT_VOLT,
|
||||
BAT_LEVEL_20PERCENT_VOLT,
|
||||
BAT_LEVEL_30PERCENT_VOLT,
|
||||
BAT_LEVEL_40PERCENT_VOLT,
|
||||
BAT_LEVEL_50PERCENT_VOLT,
|
||||
BAT_LEVEL_60PERCENT_VOLT,
|
||||
BAT_LEVEL_70PERCENT_VOLT,
|
||||
BAT_LEVEL_80PERCENT_VOLT,
|
||||
BAT_LEVEL_90PERCENT_VOLT,
|
||||
BAT_LEVEL_100PERCENT_VOLT,
|
||||
const float coulomp_voltage_tablesSLA[3][21] = {
|
||||
{ // 4串
|
||||
420.0f, 423.6f, 427.2f, 430.8f, 434.4f, 438.0f, 441.6f, 445.2f, 448.8f, 452.4f,
|
||||
456.0f, 459.6f, 463.2f, 466.8f, 470.4f, 474.0f, 477.6f, 481.2f, 484.8f, 488.4f, 492.0f
|
||||
},
|
||||
{ // 5串
|
||||
525.0f, 529.5f, 534.0f, 538.5f, 543.0f, 547.5f, 552.0f, 556.5f, 561.0f, 565.5f,
|
||||
570.0f, 574.5f, 579.0f, 583.5f, 588.0f, 592.5f, 597.0f, 601.5f, 606.0f, 610.5f, 615.0f
|
||||
},
|
||||
{ // 6串
|
||||
630.0f, 635.4f, 640.8f, 646.2f, 651.6f, 657.0f, 662.4f, 667.8f, 673.2f, 678.6f,
|
||||
684.0f, 689.4f, 694.8f, 700.2f, 705.6f, 711.0f, 716.4f, 721.8f, 727.2f, 732.6f, 738.0f
|
||||
}
|
||||
};
|
||||
|
||||
const float coulomp_voltage_tablesLi[3][21] = {
|
||||
{ // 4串
|
||||
|
||||
},
|
||||
{ // 5串
|
||||
|
||||
},
|
||||
{ // 6串
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
uint8_t pmu_voltage_to_percent(uint32_t volt){//电压转百分比
|
||||
uint8_t i, percent;
|
||||
|
||||
uint8_t table_index = BAT_Message.Bat_PACK ;
|
||||
|
||||
const float* voltage_table = coulomp_voltage_tablesSLA[table_index];
|
||||
|
||||
uint8_t i, percent;
|
||||
float step, base;
|
||||
if((volt < coulomp_voltage_table[0])){
|
||||
if((volt < voltage_table[0])){
|
||||
return 0;
|
||||
}
|
||||
if((volt >= coulomp_voltage_table[10])){
|
||||
if((volt >= voltage_table[20])){
|
||||
return 100;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
if((volt < coulomp_voltage_table[i+1]) && (volt >= coulomp_voltage_table[i])){
|
||||
step = (coulomp_voltage_table[i+1] - coulomp_voltage_table[i]) / 10.0;
|
||||
base = coulomp_voltage_table[i];
|
||||
for (i = 0; i < 20; i++) {
|
||||
if((volt < voltage_table[i+1]) && (volt >= voltage_table[i])){
|
||||
step = (voltage_table[i+1] - voltage_table[i]) / 10.0;
|
||||
base = voltage_table[i];
|
||||
percent = (10 * i) + (volt - base) / step;
|
||||
DEBUG("\n\ni:%d,volt:%d,step:%02.2f,base:%02.2f,percent:%d\n\n",i,volt,step,base,percent);
|
||||
return (uint8_t)percent;
|
||||
|
|
|
|||
|
|
@ -1,37 +1,37 @@
|
|||
#ifndef _APP_BAT_H_
|
||||
#define _APP_BAT_H_
|
||||
|
||||
#include "b6x.h"
|
||||
|
||||
|
||||
#define BAT_SxP1 4 // 电池四串一并
|
||||
#define BAT_VOLT(_Volt) (_Volt * BAT_SxP1) //电压单位转换
|
||||
#define BAT_Low_VOLT BAT_VOLT(105) //10.5V x 4 = 42V
|
||||
#define BAT_Full_VOLT BAT_VOLT(144) //14.4V x 4 = 57.6V
|
||||
|
||||
// #define BAT_LEVEL_0PERCENT_VOLT BAT_VOLT(105) // 0%:(105~110]=(42.0V~44.0V]
|
||||
// #define BAT_LEVEL_10PERCENT_VOLT BAT_VOLT(113) // 10%:(110~113]=(44.0V~45.2V]
|
||||
// #define BAT_LEVEL_20PERCENT_VOLT BAT_VOLT(116) // 20%:(113~116]=(45.2V~46.4V]
|
||||
// #define BAT_LEVEL_30PERCENT_VOLT BAT_VOLT(119) // 30%:(116~119]=(46.4V~47.6V]
|
||||
// #define BAT_LEVEL_40PERCENT_VOLT BAT_VOLT(122) // 40%:(119~122]=(47.6V~48.8V]
|
||||
// #define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(125) // 50%:(122~125]=(48.8V~50.0V]
|
||||
// #define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(128) // 60%:(125~128]=(50.0V~51.2V]
|
||||
// #define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(131) // 70%:(128~131]=(51.2V~52.4V]
|
||||
// #define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(134) // 80%:(131~134]=(52.4V~53.6V]
|
||||
// #define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(137) // 90%:(134~137]=(53.6V~54.8V]
|
||||
// #define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(144) //100%:(137~144]=(54.8V~57.6V]
|
||||
|
||||
// 内阻 20mΩ * 4 =80mΩ // 线损 10A 0.1V
|
||||
|
||||
#define BAT_LEVEL_0PERCENT_VOLT BAT_VOLT(105) // 0%
|
||||
#define BAT_LEVEL_10PERCENT_VOLT BAT_VOLT(107) // 10%
|
||||
#define BAT_LEVEL_20PERCENT_VOLT BAT_VOLT(109) // 20%
|
||||
#define BAT_LEVEL_30PERCENT_VOLT BAT_VOLT(111) // 30%
|
||||
#define BAT_LEVEL_40PERCENT_VOLT BAT_VOLT(113) // 40%
|
||||
#define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(115) // 50%
|
||||
#define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(117) // 60%
|
||||
#define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(119) // 70%
|
||||
#define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(123) // 80%
|
||||
#define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(127) // 90%
|
||||
#define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(134) //100%
|
||||
#define BAT_LEVEL_5PERCENT_VOLT BAT_VOLT(105.9) // 0%
|
||||
#define BAT_LEVEL_10PERCENT_VOLT BAT_VOLT(106.8) // 10%
|
||||
#define BAT_LEVEL_15PERCENT_VOLT BAT_VOLT(107.7) // 10%
|
||||
#define BAT_LEVEL_20PERCENT_VOLT BAT_VOLT(108.6) // 20%
|
||||
#define BAT_LEVEL_25PERCENT_VOLT BAT_VOLT(109.5) // 20%
|
||||
#define BAT_LEVEL_30PERCENT_VOLT BAT_VOLT(110.4) // 30%
|
||||
#define BAT_LEVEL_35PERCENT_VOLT BAT_VOLT(111.3) // 30%
|
||||
#define BAT_LEVEL_40PERCENT_VOLT BAT_VOLT(112.2) // 40%
|
||||
#define BAT_LEVEL_45PERCENT_VOLT BAT_VOLT(113.1) // 40%
|
||||
#define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(114) // 50%
|
||||
#define BAT_LEVEL_55PERCENT_VOLT BAT_VOLT(114.9) // 50%
|
||||
#define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(115.8) // 60%
|
||||
#define BAT_LEVEL_65PERCENT_VOLT BAT_VOLT(116.7) // 60%
|
||||
#define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(117.6) // 70%
|
||||
#define BAT_LEVEL_75PERCENT_VOLT BAT_VOLT(118.5) // 70%
|
||||
#define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(119.4) // 80%
|
||||
#define BAT_LEVEL_85PERCENT_VOLT BAT_VOLT(120.3) // 80%
|
||||
#define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(121.2) // 90%
|
||||
#define BAT_LEVEL_95PERCENT_VOLT BAT_VOLT(122.1) // 90%
|
||||
#define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(123) //100%
|
||||
|
||||
|
||||
// 充电状态
|
||||
|
|
@ -53,6 +53,9 @@ typedef struct BAT_Message{
|
|||
uint16_t Bat_Voltage; // 480=48.0V
|
||||
uint16_t Runing_Time; // 系统运行时间
|
||||
uint16_t Deep_ACC_Time; // 深踩油门时间
|
||||
uint8_t Bat_TYPE;
|
||||
uint8_t Bat_PACK;
|
||||
|
||||
} BAT_Message_t;
|
||||
|
||||
uint8_t pmu_voltage_to_percent(uint32_t volt); // 电压转百分比
|
||||
|
|
|
|||
|
|
@ -25,18 +25,31 @@ uint16_t ACC_Dmax ;
|
|||
bool app_control_en[PA_MAX]={
|
||||
[OUT_12V_Control] =OE_HIGH, // 12V电源控制输出 /H:12V输出
|
||||
[OUT_Door_lock] =OE_HIGH, // 开锁 /H:开锁(同)
|
||||
[IO_MANAGER_MODE] =OE_LOW, // 管理员模式 /低电平触发
|
||||
[IN_01] =OE_LOW, // 自定义输入
|
||||
[IN_GPS] =OE_HIGH, // GPS输入0 /H:低使能/边沿触发
|
||||
[IO_MANAGER_MODE] =OE_LOW, // 管理员模式 /边沿触发
|
||||
[IO_BACK] =OE_LOW, // 倒车 /H:前进/L:后退
|
||||
[IO_AUTO_BRAKE] =OE_HIGH, // 自动刹车 /H:高使能
|
||||
[IO_BRAKE] =OE_LOW, // 制动 /L:低使能
|
||||
|
||||
[IO_TTL_TX] =OE_LOW, // 串口发送
|
||||
[IO_TTL_RX] =OE_LOW, // 串口接收
|
||||
|
||||
[OUT_BUZZER] =OE_HIGH, // 蜂鸣器输出 /H:蜂鸣器响
|
||||
[IO_INTERACTION] =OE_LOW, // 交互信号输入 (人体感应器) /L:低电平触发
|
||||
};
|
||||
|
||||
sys_sta_t sys_sta;
|
||||
// ={
|
||||
// .Pmode = 0,
|
||||
// .Smode = 0,
|
||||
// .O_12V = 0,
|
||||
// .O_lock = 0,
|
||||
// .I_01 = 0,
|
||||
// .I_brake = 0,
|
||||
// .I_back = 0,
|
||||
// .IO_TX = 0,
|
||||
// .IO_RX = 0,
|
||||
// .A_brake = 0,
|
||||
// .A_Speed_Cut = 0,
|
||||
// .Reserve = 0,
|
||||
// };
|
||||
|
||||
// 油门控制输入初始化/PA08/CH3
|
||||
// 电池电压检测/充电检测/PA04/CH7
|
||||
|
|
@ -47,7 +60,7 @@ static void acc_in_bat_in_sadc_init(void)
|
|||
|
||||
// ADC
|
||||
iom_ctrl(PA08, IOM_ANALOG);//ACC//AIN7//油门
|
||||
// iom_ctrl(PA02, IOM_ANALOG);//ACC_FEEDBACK//AIN2//油门反馈
|
||||
iom_ctrl(PA02, IOM_ANALOG);//ACC_FEEDBACK//AIN2//油门反馈
|
||||
iom_ctrl(PA04, IOM_ANALOG);//BAT//AIN3//电池电量
|
||||
|
||||
// sadc init
|
||||
|
|
@ -133,42 +146,44 @@ void set_out_acc_percent(uint8_t percent){
|
|||
|
||||
//中控控制IO初始化
|
||||
void app_control_init(void){
|
||||
// IO init
|
||||
// out
|
||||
gpio_dir_output(OUT_12V_Control,OE_LOW);// 12V电源控制输出 /H:12V输出
|
||||
gpio_dir_input(OUT_12V_Control,IE_UP);
|
||||
gpio_dir_output(OUT_Door_lock,OE_LOW); // 电门锁 /H:开锁
|
||||
gpio_dir_input(OUT_Door_lock,IE_UP);
|
||||
gpio_dir_output(IO_MANAGER_MODE,OE_LOW);// 管理员模式 /边沿触发
|
||||
gpio_dir_output(IO_BACK,OE_HIGH); // 倒车 /H:前进/L:后退
|
||||
gpio_dir_output(IO_BRAKE,OE_LOW); // 制动 /L:低使能
|
||||
|
||||
gpio_dir_output(IO_MANAGER_MODE,OE_HIGH);// 管理员模式 /边沿触发
|
||||
gpio_dir_input(IO_MANAGER_MODE,IE_UP);
|
||||
gpio_dir_output(IO_TTL_TX,OE_HIGH); // 串口发送
|
||||
gpio_dir_output(IO_TTL_RX,OE_LOW); // 串口接收
|
||||
//in
|
||||
// gpio_dir_input(OUT_12V_Control,IE_DOWN);// 12V电源控制输出 /H:12V输出
|
||||
gpio_dir_input(OUT_Door_lock,IE_DOWN); // 电门锁 /H:开锁
|
||||
gpio_dir_input(IO_MANAGER_MODE,IE_DOWN);// 管理员模式 /边沿触发
|
||||
gpio_dir_input(IO_BACK,IE_DOWN); // 倒车 /H:前进/L:后退
|
||||
gpio_dir_input(IO_BRAKE,IE_DOWN); // 制动 /L:低使能
|
||||
|
||||
gpio_dir_output(IO_BACK,OE_HIGH);// 倒车 /H:前进/L:后退
|
||||
gpio_dir_input(IO_BACK,IE_UP);
|
||||
|
||||
gpio_dir_output(IO_AUTO_BRAKE,OE_HIGH); // 自动刹车 /H:高使能
|
||||
gpio_dir_input(IO_AUTO_BRAKE,IE_UP);
|
||||
gpio_dir_output(IO_BRAKE,OE_LOW); // 制动 /L:低使能
|
||||
gpio_dir_input(IO_BRAKE,IE_UP);
|
||||
|
||||
gpio_dir_input(IO_TTL_TX,IE_UP); // 串口发送
|
||||
gpio_dir_input(IO_TTL_RX,IE_UP); // 串口接收
|
||||
|
||||
gpio_dir_output(OUT_BUZZER,OE_LOW); // 蜂鸣器输出
|
||||
|
||||
gpio_dir_output(IO_INTERACTION,OE_HIGH);
|
||||
gpio_dir_input(IO_INTERACTION,IE_UP); // 交互信号输入 (人体感应器)
|
||||
gpio_dir_input(IO_TTL_TX,IE_DOWN); // 串口发送
|
||||
gpio_dir_input(IO_TTL_RX,IE_DOWN); // 串口接收
|
||||
|
||||
//默认都失能
|
||||
Set_Status(OUT_12V_Control,0);
|
||||
Set_Status(OUT_Door_lock,0);
|
||||
Set_Status(IO_AUTO_BRAKE,0);
|
||||
Set_Status(IO_MANAGER_MODE,0);
|
||||
Set_Status(IO_BACK,0); //失能倒车
|
||||
Set_Status(IO_BRAKE,0);
|
||||
Set_Status(OUT_BUZZER,0);
|
||||
|
||||
Set_Status(IO_TTL_TX,0);
|
||||
Set_Status(IO_TTL_RX,0);
|
||||
|
||||
// in
|
||||
gpio_dir_input(IN_01,IE_UP); // 自定义输入
|
||||
gpio_dir_input(IN_GPS,IE_UP); // GPS输入0 /边沿触发
|
||||
|
||||
// // EXTI config
|
||||
// exti_init(EXTI_DBC(15, 4));
|
||||
// exti_set(EXTI_FTS, EXTI_SRC(IO_INTERACTION) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE)); // falling
|
||||
// exti_set(EXTI_DBE, EXTI_SRC(IO_INTERACTION) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE));
|
||||
// exti_set(EXTI_IER, EXTI_SRC(IO_INTERACTION) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE));
|
||||
// exti_set(EXTI_FTS, EXTI_SRC(IN_GPS) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE)); // falling
|
||||
// exti_set(EXTI_DBE, EXTI_SRC(IN_GPS) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE));
|
||||
// exti_set(EXTI_IER, EXTI_SRC(IN_GPS) | EXTI_SRC(IO_BACK) | EXTI_SRC(IO_BRAKE) | EXTI_SRC(IO_MANAGER_MODE));
|
||||
|
||||
// IRQ enable
|
||||
// NVIC_EnableIRQ(EXTI_IRQn);
|
||||
|
|
@ -177,13 +192,13 @@ void app_control_init(void){
|
|||
sys_sta.Manager =0;
|
||||
sys_sta.Tourist =0;
|
||||
// sys_sta.Smode = 0;
|
||||
sys_sta.IOgps = 0;
|
||||
sys_sta.IOgps = Get_Status(IN_GPS);
|
||||
sys_sta.IOmanager = Get_Status(IO_MANAGER_MODE);
|
||||
|
||||
sys_sta.I_interaction = Get_Status(IO_INTERACTION);
|
||||
sys_sta.A_brake = Get_Status(IO_AUTO_BRAKE);
|
||||
sys_sta.I_01 = Get_Status(IN_01);
|
||||
sys_sta.I_back = Get_Status(IO_BACK);
|
||||
sys_sta.I_brake = Get_Status(IO_BRAKE);
|
||||
sys_sta.A_brake = 0;
|
||||
sys_sta.A_Speed_Cut = 0;
|
||||
sys_sta.O_lock = 0;
|
||||
sys_sta.P_Radar_EN =1;
|
||||
|
|
@ -208,9 +223,9 @@ void EXTI_IRQHandler(void)
|
|||
{
|
||||
uint32_t irq_sta = EXTI->RIF.Word;
|
||||
|
||||
if (irq_sta & EXTI_SRC(IO_INTERACTION))//
|
||||
if (irq_sta & EXTI_SRC(IN_GPS))//
|
||||
{
|
||||
EXTI->ICR.Word = EXTI_SRC(IO_INTERACTION);
|
||||
EXTI->ICR.Word = EXTI_SRC(IN_GPS);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -237,24 +252,26 @@ void EXTI_IRQHandler(void)
|
|||
void Control_procedure(void){
|
||||
//电门锁
|
||||
// sys_sta.Smode = 0;
|
||||
sys_sta.IOgps = 0; //更新GPS状态
|
||||
sys_sta.IOgps = Get_Status(IN_GPS); //更新GPS状态
|
||||
sys_sta.IOmanager = Get_Status(IO_MANAGER_MODE); //更新管理员模式状态
|
||||
sys_sta.O_lock = (0 != (sys_sta.Pmode | sys_sta.Smode));
|
||||
Set_Status(OUT_Door_lock, sys_sta.O_lock);
|
||||
// Set_Status(OUT_Door_lock,(PAD_User_Mode || PAD_Manager_Mode || Get_Status(IN_GPS) || SYS_Manager_STA));
|
||||
|
||||
//12V电源
|
||||
Set_Status(OUT_12V_Control ,sys_sta.O_12V);// 更新12V电源状态
|
||||
// Set_Status(OUT_12V_Control,(PAD_LED_ONOFF));
|
||||
|
||||
// 刹车
|
||||
Set_Status(IO_AUTO_BRAKE ,sys_sta.A_brake);// 高刹车
|
||||
Set_Status(IO_BRAKE ,sys_sta.A_brake);// 低刹车
|
||||
Set_Status(IO_BRAKE ,sys_sta.A_brake);// 输出为低电平时,可刹车
|
||||
sys_sta.I_brake = Get_Status(IO_BRAKE); //更新刹车状态// 输出为高电平时,可读取外部刹车状态
|
||||
// Set_Status(IO_BRAKE,SYS_AUTO_brake);
|
||||
|
||||
sys_sta.I_interaction = Get_Status(IO_INTERACTION);
|
||||
sys_sta.I_01 = Get_Status(IN_01);
|
||||
sys_sta.I_back = Get_Status(IO_BACK);
|
||||
sys_sta.IO_TX = Get_Status(IO_TTL_TX);
|
||||
sys_sta.IO_RX = Get_Status(IO_TTL_RX);
|
||||
// GRB_WS2812_Write_color(64, 0xffffff);
|
||||
|
||||
//油门控制
|
||||
if(0 != (sys_sta.Pmode | sys_sta.Smode)){
|
||||
uint8_t acc_percent =0;
|
||||
|
|
@ -265,12 +282,31 @@ void Control_procedure(void){
|
|||
acc_percent = (get_in_acc_percent() * sys_conf.Tourist_sLim) / 100.0;
|
||||
}
|
||||
}else{//管理员模式
|
||||
// Time_Event_Blink(GRB_WS2812_Event,500,500,0xffff,NULL);
|
||||
acc_percent = (get_in_acc_percent() * sys_conf.Manager_sLim) / 100.0;
|
||||
}
|
||||
set_out_acc_percent(acc_percent);
|
||||
}else{
|
||||
// Time_Event_Off(GRB_WS2812_Event,NULL);
|
||||
set_out_acc_percent(0);
|
||||
}
|
||||
|
||||
// //油门控制
|
||||
// if((PAD_User_Mode || PAD_Manager_Mode || Get_Status(IN_GPS) || SYS_Manager_STA)){
|
||||
// uint8_t acc_percent =0;
|
||||
|
||||
// // acc_percent = get_in_acc_percent() *
|
||||
// // (((PAD_Manager_Mode || SYS_Manager_STA) ? sys_conf.Manager_sLim : (SYS_AUTO_Speed_Cut ? sys_conf.Speed_Cut_sLim : sys_conf.Tourist_sLim)) / 100.0);
|
||||
|
||||
// if(PAD_Manager_Mode || SYS_Manager_STA){//管理员模式
|
||||
// acc_percent = (get_in_acc_percent() * sys_conf.Manager_sLim) / 100.0;
|
||||
// }else{//游客模式
|
||||
// if(SYS_AUTO_Speed_Cut){//自动减速
|
||||
// acc_percent = (get_in_acc_percent() * sys_conf.Speed_Cut_sLim) / 100.0;
|
||||
// }else{
|
||||
// acc_percent = (get_in_acc_percent() * sys_conf.Tourist_sLim) / 100.0;
|
||||
// }
|
||||
// }
|
||||
// set_out_acc_percent(acc_percent);
|
||||
// }else{
|
||||
// set_out_acc_percent(0);
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ extern uint16_t ACC_Dmax ;
|
|||
|
||||
enum app_adc_dac_chx{
|
||||
ACC_IN_CH =SADC_CH_AIN7, // 油门输入
|
||||
ACC_FEED_CH =SADC_CH_AIN2, // 油门输出监测
|
||||
BAT_IN_CH =SADC_CH_AIN3, // 电池输入
|
||||
};
|
||||
|
||||
|
|
@ -29,28 +30,27 @@ enum app_adc_dac_chx{
|
|||
enum app_control{
|
||||
OUT_12V_Control =PA17, // 12V电源控制输出 /H:12V输出
|
||||
OUT_Door_lock =PA18, // 电门锁 /H:开锁
|
||||
IN_01 =PA19, // 自定义输入
|
||||
IN_GPS =PA03, // GPS输入0 /边沿触发
|
||||
IO_MANAGER_MODE =PA13, // 管理员模式 /边沿触发
|
||||
IO_BACK =PA14, // 倒车 /H:前进/L:后退
|
||||
IO_AUTO_BRAKE =PA03, // 高制动 /高:高使能
|
||||
IO_BRAKE =PA15, // 低制动 /L:低使能
|
||||
IO_BRAKE =PA15, // 制动 /L:低使能
|
||||
|
||||
IO_TTL_TX =PA11, // 串口发送
|
||||
IO_TTL_RX =PA12, // 串口接收
|
||||
|
||||
RADAR_TXD0 =PA06, // 串口0发送
|
||||
RADAR_RXD0 =PA07, // 串口0接收
|
||||
RADAR_TXD0 =PA07, // 串口0发送
|
||||
RADAR_RXD0 =PA06, // 串口0接收
|
||||
PAD_TXD1 =PA10, // 串口1发送
|
||||
PAD_RXD1 =PA09, // 串口1接收
|
||||
|
||||
ACC_PA8_ADC7 =PA08, // 油门输入
|
||||
PWM4_DAC =PA05, // 油门输出
|
||||
ACC_FEEDBACK_ADC2 =PA02, // 油门输出监测
|
||||
|
||||
RGB_DATA_IO =PA16, // RGB数据输出
|
||||
|
||||
BAT_PA4_ADC3 =PA04, // 电池电压输入
|
||||
|
||||
OUT_BUZZER =PA19, // 蜂鸣器输出
|
||||
IO_INTERACTION =PA02, // 交互信号输入 (人体感应器)
|
||||
};
|
||||
|
||||
typedef struct sys_sta{
|
||||
|
|
@ -74,7 +74,7 @@ typedef struct sys_sta{
|
|||
union{// 输入状态
|
||||
uint8_t I_STA:8;
|
||||
struct{
|
||||
uint8_t I_interaction :1; // 交互信号(人体感应器)输入状态
|
||||
uint8_t I_01 :1; // 自定义输入状态
|
||||
uint8_t I_brake :1; // 制动信号输入状态
|
||||
uint8_t I_back :1; // 倒车信号输入状态
|
||||
uint8_t A_brake :1; // 自动刹车状态
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
|
|||
}
|
||||
}else if(CMDCode == 0x06){
|
||||
BAT_Message.Bat_Voltage = get_bat_voltage() * 10;
|
||||
BAT_Message.Bat_Percent = pmu_voltage_to_percent(BAT_Message.Bat_Voltage);
|
||||
BAT_Message.Bat_Percent = pmu_voltage_to_percent(BAT_Message.Bat_Voltage);
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_STA;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Percent;
|
||||
break;
|
||||
|
|
@ -428,6 +428,35 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
|
|||
len_count =0;
|
||||
break;
|
||||
}
|
||||
case 0x0308: // 电池类型信息
|
||||
if(CMDCode == 0x03){
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_TYPE >> 8;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_TYPE & 0xff;
|
||||
MODBUS_Sent_BUF[2] +=2;
|
||||
if(0 == --reg_val_num){
|
||||
break;
|
||||
}
|
||||
}else if(CMDCode == 0x06){
|
||||
BAT_Message.Bat_TYPE =reg_val_num ? 1 : 0;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_TYPE >> 8;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_TYPE & 0xff;
|
||||
break;
|
||||
}
|
||||
case 0x0309: // 电池包信息
|
||||
if(CMDCode == 0x03){
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_PACK >> 8;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_PACK & 0xff;
|
||||
MODBUS_Sent_BUF[2] +=2;
|
||||
if(0 == --reg_val_num){
|
||||
break;
|
||||
}
|
||||
}else if(CMDCode == 0x06){
|
||||
BAT_Message.Bat_PACK =reg_val_num > 10 ? 10 : reg_val_num;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_PACK >> 8;
|
||||
MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_PACK & 0xff;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
default:
|
||||
len_count =0;
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ void conf_init(void);
|
|||
|
||||
/**************************系统版本**************************/
|
||||
// 软件本号
|
||||
#define SW_VERSION (8)
|
||||
#define SW_VERSION (9) //之前是8
|
||||
// 硬件本号
|
||||
#define HW_VERSION (2)
|
||||
// 版本类型:0:0x04000;1:0x20000//不可修改
|
||||
|
|
|
|||
Loading…
Reference in New Issue