From f8013e4f432b323dfc3e3725a62858e73176742a Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期五, 01 十一月 2024 15:16:32 +0800 Subject: [PATCH] 更换了新的sdk,测试了实际的uwb测距 --- keil/include/main/main.c | 169 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 98 insertions(+), 71 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 9d45cf1..2214a33 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -93,6 +93,7 @@ uint16_t warning_distance,prewarning_distance; int16_t fVoltage_mv,first_search_flag; uint8_t bat_percent,g_start_send_flag=1; +uint8_t LORA_REV_uwb_up =0; uint8_t link_success_flag,motor_count; uint16_t gps_wait_count; uint8_t state5v = 1; @@ -281,20 +282,21 @@ uint8_t flag_sleeptimer,flag_secondtask,secondtask_count; static void sleep_timer_callback(void *dev, uint32_t time) { - IO_control_init(); - UWBPoll(); - - - MotorPoll(); + g_start_send_flag=1; +// IO_control_init(); +// UWBPoll(); +// +// +// MotorPoll(); - if(secondtask_count++%2==0) - { - flag_secondtask = 1; - }else{ - flag_secondtask = 0; - } +// if(secondtask_count++%2==0) +// { +// flag_secondtask = 1; +// }else{ +// flag_secondtask = 0; +// } - flag_sleeptimer = 1; +// flag_sleeptimer = 1; //马达震动逻辑 if(g_com_map[MOTOR_ENABLE]) @@ -338,6 +340,8 @@ { Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为 parameter_init_anchor();//g_com_map表初始化角色默认为基站 + g_com_map[DEV_ID]=0x6789; + g_com_map[GROUP_ID]=9; dev_id=g_com_map[DEV_ID];//这里不太对 group_id=g_com_map[GROUP_ID];//组ID tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间 @@ -492,45 +496,51 @@ uint32_t successful_cnt=0; uint8_t flag_4guart_needinit=0; #define TX_LEN 10 +#define RX_LEN 10 uint8_t tx_test_buf[TX_LEN] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; +uint8_t RF_RX_temp[RX_LEN]={0}; extern struct RxDoneMsg RxDoneParams; static void Lora_irq_handler(enum IO_PIN_T pin) { ceshi++; rf_irq_process(); - if(rf_get_transmit_flag() == RADIO_FLAG_TXDONE) - { - rf_set_transmit_flag(RADIO_FLAG_IDLE); - rf_enter_continous_rx(); -// rf_delay_ms(1000); -// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) -// { -//// DDL_Printf("tx fail \r\n"); -//// rf_enter_continous_rx(); -// } -// else -// { -// error_cnt ++; -//// DDL_Printf("Tx cnt %d\r\n", cnt ); -// } - } + //g_start_send_flag=1; +// if(rf_get_transmit_flag() == RADIO_FLAG_TXDONE) +// { +// rf_set_transmit_flag(RADIO_FLAG_IDLE); +// rf_enter_continous_rx(); +//// rf_delay_ms(1000); +//// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) +//// { +////// rf_enter_continous_rx(); +//// } +//// else +//// { +//// error_cnt ++; +//// } +// } if(rf_get_recv_flag() == RADIO_FLAG_RXDONE) { rf_set_recv_flag(RADIO_FLAG_IDLE); + memcpy(RF_RX_temp,RxDoneParams.Payload,RxDoneParams.Size); + if(RF_RX_temp[0]==0x48&&RF_RX_temp[1]==0x58) + { + LORA_REV_uwb_up=1; + + } + // rf_enter_continous_rx(); //重新进入接收模式 + //UwbRange(); // DDL_Printf("Rx : SNR: %f ,RSSI: %d \r\n", RxDoneParams.Snr, RxDoneParams.Rssi); - int i=0; + //int i=0; // for(i = 0; i < RxDoneParams.Size; i++) // { // printf("0x%02x ", RxDoneParams.Payload[i]); // } -// DDL_Printf("\r\n"); - error_cnt ++; -// DDL_Printf("###Rx cnt %d##\r\n", cnt); + // error_cnt ++; } if((rf_get_recv_flag() == RADIO_FLAG_RXTIMEOUT) || (rf_get_recv_flag() == RADIO_FLAG_RXERR)) { rf_set_recv_flag(RADIO_FLAG_IDLE); -// DDL_Printf("Rxerr\r\n"); } } void Board_LORA_NVIC_Init(GPIO_IRQ_HANDLER_T irq_handler) //LORA 中断配置 @@ -589,20 +599,20 @@ Board_LORA_NVIC_Init(Lora_irq_handler); Lora_init(); rf_set_default_para(); +// + rf_enter_continous_rx(); +// rf_set_transmit_flag(RADIO_FLAG_TXDONE); +// rf_set_transmit_flag(RADIO_FLAG_TXDONE); +// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != 0) +// { +// error_cnt++; +// } +// else +// { +// successful_cnt ++; +// } - rf_enter_continous_tx(); -// rf_set_transmit_flag(RADIO_FLAG_TXDONE); -// rf_set_transmit_flag(RADIO_FLAG_TXDONE); - if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != 0) - { - error_cnt++; -// printf("LORA Init Fail"); - } - else - { - successful_cnt ++; -// printf("LORA Init OK\r\n"); - } + // while (rf_get_transmit_flag() == RADIO_FLAG_IDLE) ; // // rf_set_transmit_flag(RADIO_FLAG_IDLE); @@ -617,22 +627,37 @@ // gps_air780_power_change(0,1);//开启gps,4G ////加速度计初始化必须在IO_control_init之前因为复用SDA引脚 // adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 -// Program_Init(); + Program_Init(); // uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); -// +// //// Initialize low power mode // power_init(); // AIR780E_Reset(); //4G模块重启,耗时1.5秒,这个是无法同步的关键 -// sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); + sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); -// sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 - + sleep_timer_start(__MS_TO_32K_CNT(1000));//测试 +#ifdef DEBUG_BOXING + io_pin_mux_set(IO_PIN_5,IO_FUNC0); + gpio_pin_set_dir(IO_PIN_5,GPIO_DIR_OUT,0); + io_pull_set(IO_PIN_5,IO_PULL_DOWN,IO_PULL_UP_LEVEL4); +#endif // board_acceleration_detection_init(move_handler); - - - + Uwbinit(); while (1) { + if(LORA_REV_uwb_up) + { + LORA_REV_uwb_up=0; + UwbRange(); + } + if(g_start_send_flag) + { + g_start_send_flag=0; + + } + + + // UwbRange(); // rf_irq_process(); // if(rf_get_transmit_flag() == RADIO_FLAG_TXDONE) // { @@ -650,23 +675,25 @@ // } -// - -// io14_state=gpio_pin_get_val(LORA_DIO); - rf_set_transmit_flag(RADIO_FLAG_IDLE); - rf_delay_ms(1000); - rf_enter_continous_tx(); -// rf_set_transmit_flag(RADIO_FLAG_TXDONE); - if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) - { -// DDL_Printf("tx fail \r\n"); -// rf_enter_continous_rx(); - } - else - { - successful_cnt ++; -// DDL_Printf("Tx cnt %d\r\n", cnt ); - } +//// +// +//// io14_state=gpio_pin_get_val(LORA_DIO); +// rf_set_transmit_flag(RADIO_FLAG_IDLE); +// rf_delay_ms(1000); +// rf_enter_continous_tx(); +//// rf_set_transmit_flag(RADIO_FLAG_TXDONE); +// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) +// { +//// rf_enter_continous_rx(); +// } +// else +// { +// successful_cnt ++; +// } + + + + // while (rf_get_transmit_flag() == RADIO_FLAG_IDLE) ; // // rf_set_transmit_flag(RADIO_FLAG_IDLE); -- Gitblit v1.9.3