Compare commits
3 Commits
Expansion_
...
master
| Author | SHA1 | Date |
|---|---|---|
|
|
e09217e672 | |
|
|
140696f581 | |
|
|
0553d9712a |
|
|
@ -1,2 +1,29 @@
|
|||
/.vscode/
|
||||
output/
|
||||
*.rar
|
||||
*.o
|
||||
*.d
|
||||
*.crf
|
||||
*.htm
|
||||
*.dep
|
||||
*.map
|
||||
*.bak
|
||||
*.lnp
|
||||
*.lst
|
||||
*.ini
|
||||
*.iex
|
||||
*.scvd
|
||||
*.uvguix
|
||||
.uvoptx
|
||||
*.dbg*
|
||||
*.uvguix.*
|
||||
.mxproject
|
||||
|
||||
!*.uvprojx
|
||||
!*.h
|
||||
!*.c
|
||||
!*.ioc
|
||||
!*.axf
|
||||
!*.bin
|
||||
!*.hex
|
||||
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@
|
|||
|
||||
#if !defined(DBG_UART_BAUD)
|
||||
#if (SYS_CLK == 1)
|
||||
#define DBG_UART_BAUD BRR_DIV(115200, 32M)
|
||||
#define DBG_UART_BAUD BRR_DIV(9600, 32M)
|
||||
#elif (SYS_CLK == 2)
|
||||
#define DBG_UART_BAUD BRR_DIV(115200, 48M)
|
||||
#define DBG_UART_BAUD BRR_DIV(9600, 48M)
|
||||
#elif (SYS_CLK == 3)
|
||||
#define DBG_UART_BAUD BRR_DIV(115200, 64M)
|
||||
#define DBG_UART_BAUD BRR_DIV(9600, 64M)
|
||||
#else
|
||||
#define DBG_UART_BAUD (BRR_115200)
|
||||
#define DBG_UART_BAUD BRR_DIV(9600, 16M)
|
||||
#endif //SYS_CLK
|
||||
#endif
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -125,7 +125,7 @@
|
|||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U20090928 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO11 -FD20003000 -FC5000 -FN1 -FF0B6x_256kB_PY_D.FLM -FS018000000 -FL040000 -FP0($$Device:B6x$.\Flash\B6x_256kB_PY_D.FLM)</Name>
|
||||
<Name>-U20090928 -O78 -S5 -ZTIFSpeedSel1000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO11 -FD20003000 -FC5000 -FN1 -FF0B6x_256kB_PY_D.FLM -FS018000000 -FL040000 -FP0($$Device:B6x$.\Flash\B6x_256kB_PY_D.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
|
|
@ -252,7 +252,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>core</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
@ -400,7 +400,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>drivers\src</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
@ -624,7 +624,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>drivers</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
@ -664,7 +664,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>ble\app</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@
|
|||
|
||||
#include "sys_config.h"
|
||||
|
||||
|
||||
radar_daraframe_t radar_daraframe;
|
||||
|
||||
/*
|
||||
|
||||
|
||||
// 定时处理数和获取数据
|
||||
tmr_id_t radar_timer_tmr_id;
|
||||
|
||||
|
|
@ -64,7 +66,7 @@ static tmr_tk_t radar_timer_handler(tmr_id_t id){
|
|||
#elif (1 ==RADAR_MODE)
|
||||
uint8_t data[8]={0x02,0x03,0x00,0x01,0x00,0x01,0xD5,0xf9};////读取实时值数据//120ms
|
||||
#endif
|
||||
Car_Distance =radar_daraframe.Back_data/100;
|
||||
Car_Distance =radar_daraframe.Back_data;
|
||||
radar_daraframe.Back_data=0xffff;
|
||||
uart_send(UART1_PORT,8,data);
|
||||
}else{
|
||||
|
|
@ -74,18 +76,18 @@ static tmr_tk_t radar_timer_handler(tmr_id_t id){
|
|||
#elif (1 ==RADAR_MODE)
|
||||
uint8_t data[8]={0x01,0x03,0x00,0x01,0x00,0x01,0xD5,0xCA};////读取实时值数据//120ms
|
||||
#endif
|
||||
Car_Distance =radar_daraframe.Front_data/100;
|
||||
Car_Distance =radar_daraframe.Front_data;
|
||||
radar_daraframe.Front_data=0xffff;
|
||||
uart_send(UART1_PORT,8,data);
|
||||
}
|
||||
|
||||
if((0 < Car_Distance) && Car_Distance < (Get_Status(IN_Back)?sys_conf_info.AUTO_Brake_Distance_B :sys_conf_info.AUTO_Brake_Distance)){//小于自动刹车距离时
|
||||
if((35 < Car_Distance) && (Car_Distance < (Get_Status(IN_Back) ? (sys_conf_info.AUTO_Brake_Distance_B * 100) : (sys_conf_info.AUTO_Brake_Distance * 100)))){//小于自动刹车距离时
|
||||
if(!SYS_AUTO_brake){
|
||||
Time_Event_Blink(Buzzer_Event,100,100,0xffff,NULL);
|
||||
}
|
||||
SYS_AUTO_brake =1;//使能自动刹车
|
||||
SYS_AUTO_Speed_Cut=1;
|
||||
}else if((0 < Car_Distance) && Car_Distance < (Get_Status(IN_Back)?sys_conf_info.AUTO_Speed_Cut_Distance_B :sys_conf_info.AUTO_Speed_Cut_Distance)){//小于自动减速距离时
|
||||
}else if((35 < Car_Distance) && (Car_Distance < (Get_Status(IN_Back) ? (sys_conf_info.AUTO_Speed_Cut_Distance_B * 100) : (sys_conf_info.AUTO_Speed_Cut_Distance * 100)))){//小于自动减速距离时
|
||||
if(SYS_AUTO_brake || !SYS_AUTO_Speed_Cut){
|
||||
Time_Event_Blink(Buzzer_Event,200,500,0xffff,NULL);
|
||||
}
|
||||
|
|
@ -186,3 +188,216 @@ void app_radar_Receive(uint8_t data){
|
|||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#define DBG_RADAR_EN 0
|
||||
|
||||
#if (DBG_RADAR_EN)
|
||||
#include "dbg.h"
|
||||
#define DEBUG(format, ...) debug("[RADAR]" format "\r\n", ##__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG(format, ...)
|
||||
//#define debugHex(dat, len)
|
||||
#endif
|
||||
|
||||
|
||||
static bool radar_NewData_flag=0;// 新数据标志位
|
||||
static uint8_t radar_CMDSend_cnt=0; // 发送命令计数
|
||||
radar_data_t radar_data;
|
||||
|
||||
|
||||
// 自动刹车或减速判断处理函数
|
||||
void radar_AUTO_BrakeORSpeedCut(uint8_t radar_id , uint16_t Car_Distance){ //距离数据30~4500mm
|
||||
|
||||
if(radar_id == RADAR_ID_Front){
|
||||
radar_daraframe.Front_data =Car_Distance;
|
||||
}else{
|
||||
radar_daraframe.Back_data =Car_Distance;
|
||||
}
|
||||
// 自动刹车距离
|
||||
uint16_t Brake_Distance = ((radar_id == RADAR_ID_Back ) ? sys_conf_info.AUTO_Brake_Distance_B : sys_conf_info.AUTO_Brake_Distance) * 100;
|
||||
// 自动减速距离
|
||||
uint16_t Speed_Cut_Distance = ((radar_id == RADAR_ID_Back ) ? sys_conf_info.AUTO_Speed_Cut_Distance_B : sys_conf_info.AUTO_Speed_Cut_Distance) * 100;
|
||||
|
||||
if((35 < Car_Distance) && Car_Distance < Brake_Distance){//小于自动刹车距离时
|
||||
if(!SYS_AUTO_brake){
|
||||
Time_Event_Blink(Buzzer_Event,100,100,0xffff,NULL);
|
||||
}
|
||||
SYS_AUTO_brake =1;//使能自动刹车
|
||||
SYS_AUTO_Speed_Cut=1;
|
||||
}else if((35 < Car_Distance) && Car_Distance < Speed_Cut_Distance){//小于自动减速距离时
|
||||
if(SYS_AUTO_brake || !SYS_AUTO_Speed_Cut){
|
||||
Time_Event_Blink(Buzzer_Event,200,500,0xffff,NULL);
|
||||
}
|
||||
SYS_AUTO_brake =0;
|
||||
SYS_AUTO_Speed_Cut=1;//使能自动减速
|
||||
}else{
|
||||
if(SYS_AUTO_brake || SYS_AUTO_Speed_Cut){
|
||||
Time_Event_Off(Buzzer_Event,NULL);
|
||||
}
|
||||
SYS_AUTO_brake =0;
|
||||
SYS_AUTO_Speed_Cut=0;
|
||||
}
|
||||
DEBUG("\r\nAB:%d,AS:%d\r\n", SYS_AUTO_brake, SYS_AUTO_Speed_Cut);
|
||||
}
|
||||
|
||||
uint8_t radar_flag_cnt=0;
|
||||
|
||||
static uint8_t new_state_cnt=3;//标记状态是否变化
|
||||
|
||||
// 雷达开关 //0:关 1:开
|
||||
bool radar_ONOFF =1;
|
||||
|
||||
|
||||
// 定时处理数和获取数据
|
||||
static tmr_tk_t radar_timer_handler(tmr_id_t id){
|
||||
(void)(id);
|
||||
|
||||
if(Get_Status(OUT_Door_lock)){
|
||||
// 定时发送状态信息
|
||||
if(radar_flag_cnt > 8){
|
||||
uint8_t ret_data[20]={0,0};
|
||||
radar_flag_cnt =0;
|
||||
ret_data[radar_flag_cnt++] =BAT_Message.Bat_STA; // 电池状态
|
||||
ret_data[radar_flag_cnt++] =BAT_Message.Bat_Voltage >> 8; //电池电压
|
||||
ret_data[radar_flag_cnt++] =BAT_Message.Bat_Voltage & 0xff;
|
||||
ret_data[radar_flag_cnt++] =get_in_acc_percent();// 当前油门百分比
|
||||
ret_data[radar_flag_cnt++] =radar_daraframe.Front_data /100;// 前雷达距离信息
|
||||
ret_data[radar_flag_cnt++] =radar_daraframe.Back_data/100;// 后雷达距离信息
|
||||
// 读取系统配置
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.M_mode_sLim;
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.U_mode_sLim;
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.AUTO_Brake_Distance;
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.AUTO_Speed_Cut_Distance;
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.AUTO_Brake_Distance_B;
|
||||
ret_data[radar_flag_cnt++]=sys_conf_info.AUTO_Speed_Cut_Distance_B;
|
||||
ret_data[radar_flag_cnt++] =(Get_Status(IN_GPS)<<0) | (Get_Status(IN_Back)<<1) | (Get_Status(OUT_Low_brake)<<2)
|
||||
| (Get_Status(IN_Manager_Mode)<<3) | ((PAD_Manager_Mode)<<4)
|
||||
| ((PAD_User_Mode)<<5) | ((SYS_AUTO_Speed_Cut)<<6) | ((SYS_AUTO_brake)<<7);
|
||||
app_uart_Sendcmd(UART1_PORT,0x10,0x01,ret_data,radar_flag_cnt);
|
||||
radar_flag_cnt =0;
|
||||
return _MS(250);//300ms
|
||||
}else {
|
||||
radar_flag_cnt++;
|
||||
}
|
||||
}else{
|
||||
radar_flag_cnt =0;
|
||||
}
|
||||
|
||||
if(radar_NewData_flag == 1){
|
||||
radar_NewData_flag =0; // 清空新数据标志位
|
||||
radar_CMDSend_cnt =0; // 清空发送命令计数
|
||||
DEBUG("ID =%d,distance =%d", radar_data.radar_id ,radar_data.distance);
|
||||
}
|
||||
if((radar_CMDSend_cnt !=0)||(1 ==new_state_cnt)){//
|
||||
DEBUG("Clear:CMD_cnt =%d", radar_CMDSend_cnt);
|
||||
radar_CMDSend_cnt =0; // 清空发送命令计数
|
||||
radar_AUTO_BrakeORSpeedCut(radar_data.radar_id , 0);//复位自动刹车和减速状态
|
||||
}
|
||||
if(new_state_cnt > 0){
|
||||
new_state_cnt--;
|
||||
}
|
||||
// 进入游客模式开启雷达 //管理员模式优先于游客模式
|
||||
if(Get_Status(OUT_Door_lock) && !(PAD_Manager_Mode || Get_Status(IN_Manager_Mode)) && (1 == radar_ONOFF)){
|
||||
// 根据倒车状态确定雷达ID
|
||||
DEBUG("SendCMD:ID=%#02x", (1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front);
|
||||
app_radar_Sendcmd((1 == Get_Status(IN_Back)) ? RADAR_ID_Back : RADAR_ID_Front ,RADAR_MODE_Real);
|
||||
new_state_cnt =3;
|
||||
radar_CMDSend_cnt++;
|
||||
}
|
||||
|
||||
return _MS(150);//300ms
|
||||
}
|
||||
|
||||
static uint8_t radar_buff[9];
|
||||
|
||||
// 数据接收
|
||||
void app_radar_Receive(uint8_t data){
|
||||
static uint8_t cnt=0,radar_state=0;
|
||||
switch(radar_state){
|
||||
case 0://dev_addr
|
||||
if (data == 0x01 || data == 0x02) {
|
||||
radar_buff[0]=data;
|
||||
radar_state = 1;
|
||||
}
|
||||
break;
|
||||
case 1://cmd_id
|
||||
if (data == 0x03) {
|
||||
radar_buff[1]=data;
|
||||
radar_state = 2;
|
||||
}else {
|
||||
radar_state = 0;
|
||||
radar_buff[0]=0;
|
||||
}
|
||||
break;
|
||||
case 2://length
|
||||
if (data == 0x02) {
|
||||
radar_buff[2]=data;
|
||||
radar_state = 3;
|
||||
cnt=0;
|
||||
}else {
|
||||
radar_state = 0;
|
||||
radar_buff[0]=0;
|
||||
}
|
||||
break;
|
||||
case 3://data
|
||||
radar_buff[3+cnt] =data;
|
||||
cnt++;
|
||||
if(cnt==2){
|
||||
cnt=0;
|
||||
radar_state = 4;
|
||||
}
|
||||
|
||||
break;
|
||||
case 4://crc16
|
||||
radar_buff[5+cnt] =data;
|
||||
cnt++;
|
||||
if(cnt==2){
|
||||
uint16_t crc16 =crc16_checkout(radar_buff,5);
|
||||
if(crc16 == (((uint16_t)radar_buff[6] << 8 ) | radar_buff[5])){
|
||||
radar_data.radar_id = radar_buff[0];
|
||||
radar_data.distance = ((uint16_t)radar_buff[3] << 8 ) | radar_buff[4];
|
||||
radar_AUTO_BrakeORSpeedCut(radar_data.radar_id ,radar_data.distance);
|
||||
radar_NewData_flag = 1;
|
||||
}
|
||||
cnt=0;
|
||||
radar_state = 0;
|
||||
radar_buff[0]=0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//发送读取实时值数据命令
|
||||
void app_radar_Sendcmd(uint8_t radar_id , uint8_t radar_mode){
|
||||
|
||||
if(radar_id == RADAR_ID_Front){
|
||||
radar_daraframe.Front_data =0xffff;
|
||||
}else{
|
||||
radar_daraframe.Back_data =0xffff;
|
||||
}
|
||||
|
||||
uint8_t len=0;
|
||||
uint8_t data[8];
|
||||
|
||||
data[len++] = radar_id;
|
||||
data[len++] = 0x03;
|
||||
data[len++] = 0x01;
|
||||
data[len++] = radar_mode ? 0x01 : 0x00; // 0x01:实时值(120ms) 0x00:处理值(520ms)
|
||||
data[len++] = 0x00;
|
||||
data[len++] = 0x01;
|
||||
|
||||
uint16_t crc16 =crc16_checkout(data,len);
|
||||
data[len++] = crc16 & 0xff;
|
||||
data[len++] = (crc16 >> 8) & 0xff;
|
||||
uart_send(UART1_PORT,len,data);
|
||||
}
|
||||
|
||||
// 雷达测离初始化
|
||||
void app_radar_init(void){
|
||||
radar_data.radar_id = RADAR_ID_Front;
|
||||
radar_data.distance = 0;
|
||||
// sftmr_init(); //main函数中已初始化
|
||||
sftmr_start(10, radar_timer_handler);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,14 +10,37 @@ typedef struct radar_daraframe{
|
|||
volatile uint16_t Back_data;
|
||||
} radar_daraframe_t;
|
||||
|
||||
enum RADAR_MODE{
|
||||
RADAR_MODE_Dispose = 0, //处理模式
|
||||
RADAR_MODE_Real = 1, //实时模式
|
||||
};
|
||||
|
||||
enum RADAR_ID{
|
||||
RADAR_ID_Front = 0x01, //前雷达ID
|
||||
RADAR_ID_Back = 0x02, //后雷达ID
|
||||
};
|
||||
|
||||
typedef struct radar_data{
|
||||
uint8_t radar_id;
|
||||
uint16_t distance;
|
||||
} radar_data_t;
|
||||
|
||||
extern radar_daraframe_t radar_daraframe;
|
||||
extern uint8_t radar_buff[];
|
||||
extern uint8_t Rec_lenght;
|
||||
|
||||
// 雷达开关 //0:关 1:开
|
||||
extern bool radar_ONOFF;
|
||||
|
||||
// 雷达测离初始化
|
||||
void app_radar_init(void);
|
||||
|
||||
// 串口数据接收
|
||||
void app_radar_Receive(uint8_t data);
|
||||
|
||||
//发送读取实时值数据命令
|
||||
void app_radar_Sendcmd(uint8_t radar_id , uint8_t radar_mode);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -91,10 +91,29 @@ static void app_uart1_hande(void){
|
|||
}
|
||||
app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,0x01,uart1_daraframe.data,uart1_daraframe.length);
|
||||
break;
|
||||
// case 0x04:
|
||||
|
||||
// break;
|
||||
|
||||
case 0x04:
|
||||
ret_data[length++] =BAT_Message.Bat_STA; // 电池状态
|
||||
ret_data[length++] =BAT_Message.Bat_Voltage >> 8; //电池电压
|
||||
ret_data[length++] =BAT_Message.Bat_Voltage & 0xff;
|
||||
ret_data[length++] =get_in_acc_percent();// 当前油门百分比
|
||||
ret_data[length++] =radar_daraframe.Front_data /100;// 前雷达距离信息
|
||||
ret_data[length++] =radar_daraframe.Back_data/100;// 后雷达距离信息
|
||||
// 读取系统配置
|
||||
ret_data[length++]=sys_conf_info.M_mode_sLim;
|
||||
ret_data[length++]=sys_conf_info.U_mode_sLim;
|
||||
ret_data[length++]=sys_conf_info.AUTO_Brake_Distance;
|
||||
ret_data[length++]=sys_conf_info.AUTO_Speed_Cut_Distance;
|
||||
ret_data[length++]=sys_conf_info.AUTO_Brake_Distance_B;
|
||||
ret_data[length++]=sys_conf_info.AUTO_Speed_Cut_Distance_B;
|
||||
ret_data[length++] =(Get_Status(IN_GPS)<<0) | (Get_Status(IN_Back)<<1) | (Get_Status(OUT_Low_brake)<<2)
|
||||
| (Get_Status(IN_Manager_Mode)<<3) | ((PAD_Manager_Mode)<<4)
|
||||
| ((PAD_User_Mode)<<5) | ((SYS_AUTO_Speed_Cut)<<6) | ((SYS_AUTO_brake)<<7);
|
||||
app_uart_Sendcmd(UART1_PORT,0x4,0x01,ret_data,length);
|
||||
break;
|
||||
case 0x05: //0 关闭雷达//1 启用雷达
|
||||
radar_ONOFF = 0 == uart1_daraframe.data[0] ? 0 : 1;
|
||||
app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,0x01,uart1_daraframe.data,uart1_daraframe.length);
|
||||
break;
|
||||
default :
|
||||
app_uart_Sendcmd(UART1_PORT,uart1_daraframe.cmd_id,uart1_daraframe.reg_addr,uart1_daraframe.data,uart1_daraframe.length);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ static void devInit(void)
|
|||
{
|
||||
uint16_t rsn = rstrsn();
|
||||
|
||||
dbgInit();
|
||||
// dbgInit();
|
||||
// debug("Start(rsn:0x%X)...\r\n", rsn);
|
||||
#if (1 ==BLE_ENABLE)
|
||||
// Init BLE App
|
||||
|
|
|
|||
Loading…
Reference in New Issue