PAD通信协议优化 zsxfly20240819

This commit is contained in:
zsx 2024-08-19 08:46:40 +08:00
parent 91135a05fe
commit c95d8275c2
4 changed files with 4265 additions and 4211 deletions

File diff suppressed because it is too large Load Diff

View File

@ -3633,9 +3633,9 @@
</Doc> </Doc>
<Doc> <Doc>
<Name>..\src\app_radar.c</Name> <Name>..\src\app_radar.c</Name>
<ColumnNumber>0</ColumnNumber> <ColumnNumber>23</ColumnNumber>
<TopLine>82</TopLine> <TopLine>82</TopLine>
<CurrentLine>101</CurrentLine> <CurrentLine>102</CurrentLine>
<Folding>1</Folding> <Folding>1</Folding>
<ContractedFolders></ContractedFolders> <ContractedFolders></ContractedFolders>
<PaneID>0</PaneID> <PaneID>0</PaneID>

View File

@ -17,45 +17,126 @@ volatile uint8_t Rec_data_cnt =0;
static void PAD_Data_Hande(void){ static void PAD_Data_Hande(void){
uint8_t ret_data[MAX_LEN]={0,0}; uint8_t ret_data[MAX_LEN]={0,0};
uint8_t length=0; uint8_t length=0;
switch(PAD_daraframe.cmd_id){ switch(PAD_daraframe.reg_addr){
case 0x01: // 配置系统参数 case 0x01: // 写入系统配置
sys_conf.Manager_sLim= PAD_daraframe.data[0]; if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Tourist_sLim= PAD_daraframe.data[1]; write_cfg(&sys_conf);
sys_conf.Brake_DLimit= PAD_daraframe.data[2]; }
sys_conf.Speed_Cut_DLimit= PAD_daraframe.data[3]; break;
sys_conf.Brake_DLimit_B= PAD_daraframe.data[4]; case 0x02: // 管理员模式油门极限寄存器(Unit:%)
sys_conf.Speed_Cut_DLimit_B= PAD_daraframe.data[5]; if(PAD_daraframe.cmd_id == 0x03){// 读取
write_cfg(&sys_conf); // ret_data[length++] =0;
case 0x02: // 读取系统配置 ret_data[length++] =sys_conf.Manager_sLim;
ret_data[length++]=sys_conf.Manager_sLim; // if(0 == --PAD_daraframe.length){
ret_data[length++]=sys_conf.Tourist_sLim; break;
ret_data[length++]=sys_conf.Brake_DLimit; // }
ret_data[length++]=sys_conf.Speed_Cut_DLimit; }else if(PAD_daraframe.cmd_id == 0x06){// 写入
ret_data[length++]=sys_conf.Brake_DLimit_B; sys_conf.Manager_sLim =PAD_daraframe.data[0];
ret_data[length++]=sys_conf.Speed_Cut_DLimit_B; break;
}
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,ret_data,length); case 0x03: // 游客模式油门极限寄存器(Unit:%)
if(PAD_daraframe.cmd_id == 0x03){// 读取
// ret_data[length++] =0;
ret_data[length++] =sys_conf.Tourist_sLim;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Tourist_sLim =PAD_daraframe.data[0];
break;
}
case 0x04: // 减速油门极限寄存器(Unit:%)(自动减速时油门极限)
if(PAD_daraframe.cmd_id == 0x03){// 读取
// ret_data[length++] =0;
ret_data[length++] =sys_conf.Speed_Cut_sLim;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Speed_Cut_sLim =PAD_daraframe.data[0];
break;
}
case 0x05: // 刹车距离极限寄存器(前进)(Unit:mm)
if(PAD_daraframe.cmd_id == 0x03){// 读取
ret_data[length++] =sys_conf.Brake_DLimit & 0x00FF;
ret_data[length++] =sys_conf.Brake_DLimit >> 8;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Brake_DLimit =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
break;
}
case 0x06: // 减速距离极限寄存器(Unit:mm)
if(PAD_daraframe.cmd_id == 0x03){// 读取
ret_data[length++] =sys_conf.Speed_Cut_DLimit & 0x00FF;
ret_data[length++] =sys_conf.Speed_Cut_DLimit >> 8;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Speed_Cut_DLimit =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
break;
}
case 0x07: // 刹车距离极限寄存器(前进)(Unit:mm)
if(PAD_daraframe.cmd_id == 0x03){// 读取
ret_data[length++] =sys_conf.Brake_DLimit_B & 0x00FF;
ret_data[length++] =sys_conf.Brake_DLimit_B >> 8;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Brake_DLimit_B =(((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
break;
}
case 0x08: // 减速距离极限寄存器(Unit:mm)
if(PAD_daraframe.cmd_id == 0x03){// 读取
ret_data[length++] =sys_conf.Speed_Cut_DLimit_B & 0x00FF;
ret_data[length++] =sys_conf.Speed_Cut_DLimit_B >> 8;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_conf.Speed_Cut_DLimit_B = (((uint16_t)PAD_daraframe.data[1]) << 8) | PAD_daraframe.data[0];
break;
}
case 0x09: //PAD模式寄存器
if(PAD_daraframe.cmd_id == 0x03){// 读取
// ret_data[length++] =0;
ret_data[length++] =sys_sta.Pmode;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_sta.Pmode = PAD_daraframe.data[0] & 0x03;//0 退出模式//1 进入游客模式//2 进入管理员模式
break;
}
case 0x0A: //系统模式寄存器
if(PAD_daraframe.cmd_id == 0x03){// 读取
// ret_data[length++] =0;
ret_data[length++] =sys_sta.Smode;
// if(0 == --PAD_daraframe.length){
break;
// }
}
case 0x0B: //0 关闭12V输出//1 开启12V输出
if(PAD_daraframe.cmd_id == 0x03){// 读取
// ret_data[length++] =0;
ret_data[length++] =sys_sta.O_12V;
// if(0 == --PAD_daraframe.length){
break;
// }
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
sys_sta.O_12V = PAD_daraframe.data[0] & 0x01;
break;
}
break; break;
case 0x03: //0 退出模式//1 进入游客模式//2 进入管理员模式 // default :
sys_sta.Pmode = PAD_daraframe.data[0] & 0x03; // app_PAD_Sendcmd(PAD_daraframe.cmd_id,PAD_daraframe.reg_addr,PAD_daraframe.data,PAD_daraframe.length);
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,PAD_daraframe.data,PAD_daraframe.length);
break;
case 0x04: //0 关闭12V输出//1 开启12V输出
sys_sta.O_12V = PAD_daraframe.data[0];
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,PAD_daraframe.data,PAD_daraframe.length);
break;
// case 0x04:
// break; // break;
default :
app_PAD_Sendcmd(PAD_daraframe.cmd_id,PAD_daraframe.reg_addr,PAD_daraframe.data,PAD_daraframe.length);
break;
/*
....
*/
} }
app_PAD_Sendcmd(PAD_daraframe.cmd_id ,PAD_daraframe.reg_addr ,ret_data ,length);
Rec_state =0;//数据处理完要清零,准备接收下一帧数据 Rec_state =0;//数据处理完要清零,准备接收下一帧数据
} }
@ -105,7 +186,7 @@ void app_PAD_Receive(uint8_t data){
break; break;
case 5://CRC8 case 5://CRC8
PAD_daraframe.crc = crc8_maxim(frame, 5 + PAD_daraframe.length); PAD_daraframe.crc = crc8_maxim(frame, 5 + PAD_daraframe.length);
#if PAD_CRC8_EN #if !PAD_CRC8_EN
PAD_daraframe.crc = data; PAD_daraframe.crc = data;
#endif #endif
//计算并验证crc8 //计算并验证crc8

View File

@ -10,7 +10,7 @@
#define MAX_LEN 32 #define MAX_LEN 32
//0:失能数据校验 //0:失能数据校验
#define PAD_CRC8_EN 1 #define PAD_CRC8_EN 0
typedef struct PAD_daraframe typedef struct PAD_daraframe
{ {