PAD通信协议优化 zsxfly20240819
This commit is contained in:
parent
91135a05fe
commit
c95d8275c2
File diff suppressed because it is too large
Load Diff
|
@ -3633,9 +3633,9 @@
|
|||
</Doc>
|
||||
<Doc>
|
||||
<Name>..\src\app_radar.c</Name>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<ColumnNumber>23</ColumnNumber>
|
||||
<TopLine>82</TopLine>
|
||||
<CurrentLine>101</CurrentLine>
|
||||
<CurrentLine>102</CurrentLine>
|
||||
<Folding>1</Folding>
|
||||
<ContractedFolders></ContractedFolders>
|
||||
<PaneID>0</PaneID>
|
||||
|
|
|
@ -17,45 +17,126 @@ volatile uint8_t Rec_data_cnt =0;
|
|||
static void PAD_Data_Hande(void){
|
||||
uint8_t ret_data[MAX_LEN]={0,0};
|
||||
uint8_t length=0;
|
||||
|
||||
switch(PAD_daraframe.cmd_id){
|
||||
case 0x01: // 配置系统参数
|
||||
sys_conf.Manager_sLim= PAD_daraframe.data[0];
|
||||
sys_conf.Tourist_sLim= PAD_daraframe.data[1];
|
||||
sys_conf.Brake_DLimit= PAD_daraframe.data[2];
|
||||
sys_conf.Speed_Cut_DLimit= PAD_daraframe.data[3];
|
||||
sys_conf.Brake_DLimit_B= PAD_daraframe.data[4];
|
||||
sys_conf.Speed_Cut_DLimit_B= PAD_daraframe.data[5];
|
||||
write_cfg(&sys_conf);
|
||||
case 0x02: // 读取系统配置
|
||||
ret_data[length++]=sys_conf.Manager_sLim;
|
||||
ret_data[length++]=sys_conf.Tourist_sLim;
|
||||
ret_data[length++]=sys_conf.Brake_DLimit;
|
||||
ret_data[length++]=sys_conf.Speed_Cut_DLimit;
|
||||
ret_data[length++]=sys_conf.Brake_DLimit_B;
|
||||
ret_data[length++]=sys_conf.Speed_Cut_DLimit_B;
|
||||
|
||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id,0x01,ret_data,length);
|
||||
|
||||
switch(PAD_daraframe.reg_addr){
|
||||
case 0x01: // 写入系统配置
|
||||
if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||
write_cfg(&sys_conf);
|
||||
}
|
||||
break;
|
||||
case 0x02: // 管理员模式油门极限寄存器(Unit:%)
|
||||
if(PAD_daraframe.cmd_id == 0x03){// 读取
|
||||
// ret_data[length++] =0;
|
||||
ret_data[length++] =sys_conf.Manager_sLim;
|
||||
// if(0 == --PAD_daraframe.length){
|
||||
break;
|
||||
// }
|
||||
}else if(PAD_daraframe.cmd_id == 0x06){// 写入
|
||||
sys_conf.Manager_sLim =PAD_daraframe.data[0];
|
||||
break;
|
||||
}
|
||||
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;
|
||||
case 0x03: //0 退出模式//1 进入游客模式//2 进入管理员模式
|
||||
sys_sta.Pmode = PAD_daraframe.data[0] & 0x03;
|
||||
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:
|
||||
|
||||
// default :
|
||||
// app_PAD_Sendcmd(PAD_daraframe.cmd_id,PAD_daraframe.reg_addr,PAD_daraframe.data,PAD_daraframe.length);
|
||||
// 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;//数据处理完要清零,准备接收下一帧数据
|
||||
}
|
||||
|
||||
|
@ -105,7 +186,7 @@ void app_PAD_Receive(uint8_t data){
|
|||
break;
|
||||
case 5://CRC8
|
||||
PAD_daraframe.crc = crc8_maxim(frame, 5 + PAD_daraframe.length);
|
||||
#if PAD_CRC8_EN
|
||||
#if !PAD_CRC8_EN
|
||||
PAD_daraframe.crc = data;
|
||||
#endif
|
||||
//计算并验证crc8
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#define MAX_LEN 32
|
||||
|
||||
//0:失能数据校验
|
||||
#define PAD_CRC8_EN 1
|
||||
#define PAD_CRC8_EN 0
|
||||
|
||||
typedef struct PAD_daraframe
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue