zhyinch
2021-09-22 451d480321fd775084c0faf5d1877ed83f21d59b
V1.57
已修改6个文件
95 ■■■■ 文件已修改
源码/核心板/MDK-ARM/Project.uvoptx 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/algorithm/TrackingDiff.c 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/beep_logic_app.c 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/dw_app.c 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/dw_app.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/main.c 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Ô´Âë/ºËÐİå/MDK-ARM/Project.uvoptx
@@ -125,7 +125,7 @@
        <SetRegEntry>
          <Number>0</Number>
          <Key>DLGUARM</Key>
          <Name></Name>
          <Name>d</Name>
        </SetRegEntry>
        <SetRegEntry>
          <Number>0</Number>
@@ -164,7 +164,7 @@
          <Type>0</Type>
          <LineNumber>60</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134261482</Address>
          <Address>134261534</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
@@ -175,6 +175,38 @@
          <ExecCommand></ExecCommand>
          <Expression>\\UWB_Projects\../Src/application/global_param.c\60</Expression>
        </Bp>
        <Bp>
          <Number>1</Number>
          <Type>0</Type>
          <LineNumber>1115</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134242240</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
          <SizeOfObject>0</SizeOfObject>
          <BreakByAccess>0</BreakByAccess>
          <BreakIfRCount>1</BreakIfRCount>
          <Filename>E:\GIT\UWB_SmallModule\婧愮爜\Src\application\dw_app.c</Filename>
          <ExecCommand></ExecCommand>
          <Expression>\\UWB_Projects\../Src/application/dw_app.c\1115</Expression>
        </Bp>
        <Bp>
          <Number>2</Number>
          <Type>0</Type>
          <LineNumber>1120</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>0</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
          <SizeOfObject>0</SizeOfObject>
          <BreakByAccess>0</BreakByAccess>
          <BreakIfRCount>0</BreakIfRCount>
          <Filename>..\Src\application\dw_app.c</Filename>
          <ExecCommand></ExecCommand>
          <Expression></Expression>
        </Bp>
      </Breakpoint>
      <WatchWindow1>
        <Ww>
Ô´Âë/ºËÐİå/Src/algorithm/TrackingDiff.c
@@ -33,7 +33,7 @@
void NewTrackingDiffUpdate(u8 channel, float target)
{
    float error;
    if(g_Tagdist[channel]==0xffff)
    if(g_Tagdist[channel]==0x1ffff)
    {
    pos_predict[channel]=target;
    }
Ô´Âë/ºËÐİå/Src/application/beep_logic_app.c
@@ -13,7 +13,7 @@
#define ONTIME3 5   // 500ms
#define OFFTIME3 5  // 500ms
uint16_t min_dist1,min_dist2;
int32_t min_dist1,min_dist2;
extern u16 JDQ_time;
void Relay1Task(u16 min_dist)
{
@@ -141,8 +141,8 @@
            if(beep_judge_cnt++ >= 100)
            {    
                beep_judge_cnt = 0;
                min_dist1=0xffff;
                min_dist2=0xffff;
                min_dist1=0x1ffff;
                min_dist2=0x1ffff;
                for(i = 0; i < 255;i++)
                {
                    if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1])
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -48,7 +48,7 @@
uint32_t g_UWB_com_interval = 0; 
float dis_after_filter;                //当前距离值
LPFilter_Frac* p_Dis_Filter;        //测距用的低通滤波器
uint16_t g_Tagdist[TAG_NUM_IN_SYS];
int32_t g_Tagdist[TAG_NUM_IN_SYS];
uint8_t g_flag_Taggetdist[256];
static uint64_t get_tx_timestamp_u64(void)
@@ -110,12 +110,12 @@
            g_flag_Taggetdist[i]++;
            if(g_flag_Taggetdist[i]>=2)
            {
                g_Tagdist[i]=0xffff;
                g_Tagdist[i]=0x1ffff;
            }
        }
    }
}
extern u16 g_commap_antdelay;
extern int16_t g_commap_antdelay;
void Dw1000_Init(void)
{
    /* Reset and initialise DW1000.
@@ -132,7 +132,7 @@
    
    /* Apply default antenna delay value. See NOTE 1 below. */
    dwt_setrxantennadelay(RX_ANT_DLY);        //设置接收天线延迟
    dwt_settxantennadelay(g_commap_antdelay);        //设置发射天线延迟
    dwt_settxantennadelay(0);        //设置发射天线延迟
    /* Set expected response's delay and timeout. See NOTE 4 and 5 below.
     * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */
@@ -348,14 +348,16 @@
    for(i=0;i<nearbase_num;i++)
    { memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX+nearbase_num*2+i*2],&nearbase_distlist[i],2);}
   
    memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX+nearbase_num*4],&g_commap_antdelay,2);
        for(i=0;i<MAX_NEARBASE_NUM;i++)
    {
        nearbase_distlist[i]=0x1ffff;
    }
    tx_nearpoll_msg[MESSAGE_TYPE_IDX] = NEAR_POLL;    
    memcpy(&tx_nearpoll_msg[ANCHOR_ID_IDX],&mainbase_id,2);    
    dwt_writetxdata(13+4*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
    dwt_writetxfctrl(13+4*nearbase_num, 0);//设置超宽带发送数据长度
    dwt_writetxdata(15+4*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
    dwt_writetxfctrl(15+4*nearbase_num, 0);//设置超宽带发送数据长度
    dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置
    
    flag_finalsend=0;
@@ -462,7 +464,7 @@
                                    dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000
                                    dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度
                                    memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
                                if(temp_dist!=0x1ffff)
                                if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1)
                                    {
                                        g_Resttimer=0;
                                        IWDG_Feed();
@@ -514,7 +516,7 @@
                                    LED0_BLINK;
//                                    memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
//                                    tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
                                    if(temp_dist!=0x1ffff)
                                    if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1)
                                    {
                                        #ifdef USART_SINGLE_OUTPUT
                                        usart_send[2] = 1;//正常模式
@@ -764,6 +766,7 @@
uint32_t frame_len;
uint32_t resp_tx_time;
uint8_t rec_nearbase_num,anc_report_num;
int16_t rec_antdelay;
void Anchor_RecPoll(void)
{
            tmp_time=TIM3->CNT;
@@ -787,6 +790,8 @@
            battary = rx_buffer[BATTARY_IDX];
            button = rx_buffer[BUTTON_IDX];
            frame_seq_nb2 = rx_buffer[SEQUENCE_IDX];
            if(result==0)
            {
@@ -841,7 +846,7 @@
extern u16 dist_threshold;
u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,getrange_success=0;
int32_t filter_dist,filter_speed;
u8 newmeasure;
u8 newmeasure,recpoll_len;
u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
{
    u8 motorstate;
@@ -943,16 +948,15 @@
                    LED0_BLINK; //每成功一次通讯则闪烁一次
                    dis_after_filter=dist_cm;
                    hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10;
                    for(si=0;si<10;si++)
                        if(recpoll_len==rec_nearbase_num*4+15)
                    {
                        if(smallcar_idlist[si]==tag_id_recv)
                        {
                            hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10-(int16_t)g_com_map[NOMOVESLEEP_TIME]*10;
                            hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10-rec_antdelay*10;
                        }
                    }
                    g_flag_Taggetdist[taglist_pos]=0;
                    
                    if(hex_dist>-1000&&hex_dist<2000000)
                    if(hex_dist>-100000&&hex_dist<2000000)
                    {
                    if(abs(hex_dist-his_dist[taglist_pos])<dist_threshold||misdist_num[taglist_pos]>3)
                    {
@@ -970,7 +974,12 @@
                        misdist_num[taglist_pos]=0;
                    tagdist_list[taglist_pos] = filter_dist;    
                    his_dist[taglist_pos]=hex_dist;    
                        if(hex_dist>0)
                        {
                        g_Tagdist[taglist_pos]=hex_dist/10;    
                        }else{
                            g_Tagdist[taglist_pos]= 1;
                        }
                #ifdef USART_SINGLE_OUTPUT
                    usart_send[2] = 1;//正常模式 
                    usart_send[3] = 17;//数据段长度
@@ -1031,6 +1040,7 @@
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位
        frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度
        recpoll_len = frame_len;
        dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据
        memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2);
        //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据
@@ -1092,6 +1102,7 @@
                memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
                memcpy(&rec_ancidlist,&rx_buffer[NEARBASEID_INDEX],2*rec_nearbase_num);
                memcpy(&rec_ancdistlist,&rx_buffer[NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
                memcpy(&rec_antdelay,&rx_buffer[NEARBASEID_INDEX+nearbase_num*4],2);
            #ifdef USART_ALL_OUTPUT
                    usart_send[2] = 0x0c;//正常模式 
                    usart_send[3] = 8+rec_nearbase_num*4;//数据段长度
Ô´Âë/ºËÐİå/Src/application/dw_app.h
@@ -134,7 +134,7 @@
void Tag_App(void);
void Anchor_App(void);
void tag_sleep_configuraion(void);
extern uint16_t g_Tagdist[TAG_NUM_IN_SYS];
extern int32_t g_Tagdist[TAG_NUM_IN_SYS];
extern uint8_t g_flag_Taggetdist[256];
extern void TagDistClear(void);
void Dw1000_App_Init(void);
Ô´Âë/ºËÐİå/Src/main.c
@@ -100,7 +100,7 @@
        {dist_threshold = 15000;}
}
u16 JDQ_time;
u16 g_commap_antdelay;
int16_t g_commap_antdelay;
void Program_Init(void)
{    float temp;
    u16 temp2;
@@ -145,10 +145,10 @@
        
    OUT485_ENABLE;
    ComMapCheck();    
    g_com_map[VERSION] = 0x0138;
    g_com_map[VERSION] = 0x0139;
    FLASH_Read(FLASH_HARDWARE_FLAG, (uint8_t*)&g_com_map[HARDWAREFLAG_INDEX], 16);
    dist_threshold = (g_com_map[SPEEDFILTER_THRES]*10)/(1000/g_com_map[COM_INTERVAL]);
    g_commap_antdelay = (float)g_com_map[ANT_LENGTH]*5.8;
    g_commap_antdelay = g_com_map[ANT_LENGTH];
    JDQ_time = g_com_map[WAR_JDQ_TIME]*10;
    g_com_map[SW_TYPE] =     SW_FANGZHUANG;
    dev_id = g_com_map[DEV_ID];
@@ -185,7 +185,7 @@
    
    for(i=0;i<255;i++)
    {
        g_Tagdist[i]=0xffff;
        g_Tagdist[i]=0x1ffff;
    }
}