| | |
| | | #include "mk_phy.h" |
| | | #include "mk_pwm.h" |
| | | |
| | | #define DEBUG_MODE |
| | | //#define DEBUG_MODE |
| | | extern int simple_main(void); |
| | | extern int temp_main(void); |
| | | void uart_change_check(uint16_t gpio_state); |
| | |
| | | // LOG_INFO(TRACE_MODULE_APP, "The voltage measured %d mv\r\n", |
| | | // ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV)); |
| | | fVoltage_mv=ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV); |
| | | fVoltage_mv=fVoltage_mv*2; |
| | | if(fVoltage_mv < 3300) |
| | | fVoltage_mv=fVoltage_mv*2+1100; |
| | | if(fVoltage_mv < 2000) |
| | | { |
| | | bat_percent = 0; |
| | | } |
| | | else if(fVoltage_mv > 4100) |
| | | else if(fVoltage_mv > 3100) |
| | | { |
| | | bat_percent = 100; |
| | | } |
| | | else |
| | | { |
| | | bat_percent = ((fVoltage_mv - 3300) /8); |
| | | bat_percent = ((fVoltage_mv - 2000) /11); |
| | | } |
| | | } |
| | | if(fVoltage_mv<3300) |
| | | { |
| | | power_low_flag=1; |
| | | gps_air780_power_change(gps_power_state,0);//gps原样,关闭4G |
| | | //LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n"); |
| | | }else{ |
| | | power_low_flag=0; |
| | | gps_air780_power_change(gps_power_state,1);//gps原样,开启4G |
| | | //LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n"); |
| | | } |
| | | PCA9555_Set_One_Value_Output(ADC_MINIUS,1);//拉高 |
| | | // LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv); |
| | | // if(fVoltage_mv<3300) |
| | | // { |
| | | // power_low_flag=1; |
| | | // gps_air780_power_change(gps_power_state,0);//gps原样,关闭4G |
| | | // //LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n"); |
| | | // }else{ |
| | | // power_low_flag=0; |
| | | // gps_air780_power_change(gps_power_state,1);//gps原样,开启4G |
| | | // //LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n"); |
| | | // } |
| | | // PCA9555_Set_One_Value_Output(ADC_MINIUS,1);//拉高 |
| | | // LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent); |
| | | } |
| | | extern uint8_t gps_uwb_flag,gps_need_data_flag; |
| | |
| | | void IMUTask(void) |
| | | { |
| | | if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1) |
| | | {power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH); |
| | | { |
| | | LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n"); |
| | | power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH); |
| | | mcu_deep_sleep(); |
| | | } |
| | | } |
| | |
| | | } |
| | | void MinuteTask(void) |
| | | { |
| | | PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 |
| | | // PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 |
| | | adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | } |
| | | //uint16_t adc_count; |
| | | //uint8_t adc_start_flag; |
| | | void SecondTask(void) |
| | | {static uint8_t second_count; |
| | | if(second_count++>60) |
| | | { |
| | | second_count = 0; |
| | | MinuteTask(); |
| | | } |
| | | // if(adc_count++>3600&&adc_start_flag) |
| | | // { |
| | | // adc_count = 0; |
| | | // MinuteTask(); |
| | | // } |
| | | |
| | | // if(!power_low_flag) |
| | | // Gps_change(); |
| | |
| | | uint8_t Get_anchor_appdata_flag; |
| | | uint8_t Get_anchor_appdata_num; |
| | | extern uint8_t update_tag_time; |
| | | uint8_t sleep_limit_time=1; |
| | | uint8_t sleep_limit_time=10; |
| | | uint8_t enable_sleep_count,sleep_flag; |
| | | extern float motor_keeptime; |
| | | static void sleep_timer_callback(void *dev, uint32_t time) |
| | | { |
| | | |
| | |
| | | enable_sleep_count=0; |
| | | sleep_flag=1; |
| | | } |
| | | |
| | | if(motor_keeptime>0) |
| | | { |
| | | motor_keeptime--; |
| | | } |
| | | |
| | | g_start_send_flag=1; |
| | | // if(delaysleep_count>0) |
| | |
| | | static void move_handler(enum IO_PIN_T pin) |
| | | { |
| | | nomove_count=0; |
| | | Motion_Detection_callback(); |
| | | // LOG_INFO(TRACE_MODULE_APP, "加速度唤醒了\r\n"); |
| | | // LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv); |
| | | // Motion_Detection_callback(); |
| | | } |
| | | static void pca_handler(enum IO_PIN_T pin) |
| | | { |
| | |
| | | ip2 = (g_com_map[TCP_IP_2]>>12&0xf)*1000+(g_com_map[TCP_IP_2]>>8&0xf)*100+(g_com_map[TCP_IP_2]>>4&0xf)*10+(g_com_map[TCP_IP_2]&0xf); |
| | | ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf); |
| | | port = g_com_map[TCP_PORT]; |
| | | g_com_map[VERSION] = (1<<8)|4; |
| | | g_com_map[VERSION] = (1<<8)|9; |
| | | LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); |
| | | LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port); |
| | |
| | | if(state5v==1) |
| | | { |
| | | state5v=0; |
| | | sleep_limit_time=1;//新增插入串口后30s不休眠 |
| | | sleep_limit_time=10;//新增插入串口后30s不休眠 |
| | | enable_sleep_count=0;//重新插拔可以重置时间 |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | extern uint8_t shengji_flag; |
| | | extern uint16_t adc_caiji; |
| | | uint8_t send_frame1[10]; |
| | | extern uint8_t adc_one; |
| | | int main(void) |
| | | { |
| | | board_clock_run(); |
| | |
| | | LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n"); |
| | | |
| | | struct PWM_CFG_T usr_pwm_cfg = { |
| | | .general_prescale = 15, |
| | | .general_prescale = 7, |
| | | .int_en = 1, |
| | | .callback = pwm_callback, |
| | | }; |
| | |
| | | |
| | | IIC2_Init(); |
| | | SC7A22H_Motion_Detection_Init(); |
| | | gpio_pin_clr(ADC_GND_ENABLE); |
| | | // gpio_pin_clr(ADC_GND_ENABLE); |
| | | Program_Init(); |
| | | uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | power_init(); |
| | |
| | | sleep_timer_start(__MS_TO_32K_CNT(5000));//测试 |
| | | #endif |
| | | board_5V_input_init(voltage_input_handler); |
| | | adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | // adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | board_acceleration_detection_init(move_handler); |
| | | Uwb_init(); |
| | | Dw1000_App_Init(); |
| | | // adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 |
| | | while (1) |
| | | { |
| | | if(flag_secondtask) |
| | |
| | | } |
| | | if(g_start_send_flag) |
| | | { |
| | | |
| | | // adc_caiji++; |
| | | // if(adc_caiji>5&&adc_one==0) |
| | | // { |
| | | // adc_one=1; |
| | | // adc_caiji=0; |
| | | // MinuteTask(); |
| | | // } |
| | | // else if(adc_one==1&&adc_caiji>3600) |
| | | // { |
| | | // adc_caiji=0; |
| | | // MinuteTask(); |
| | | // } |
| | | |
| | | // send_frame1[0] = 0x55; |
| | | // send_frame1[1] = 0xAA; |
| | | // send_frame1[2] = nomove_count; |
| | | // memcpy(&send_frame1[3],&fVoltage_mv,2); |
| | | //// send_frame1[3] = data_length+5; |
| | | //// send_frame1[4] = CMD_REPLY; |
| | | //// send_frame1[5] = index; |
| | | //// send_frame1[6] = data_length; |
| | | // uart_send(UART_ID0, send_frame1,5, NULL); |
| | | |
| | | g_start_send_flag = 0; |
| | | gpio_pin_set(IO_PIN_7);//亮 |
| | | // LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv); |
| | | SwitchTagState(); |
| | | gpio_pin_clr(IO_PIN_7);//灭 |
| | | } |
| | |
| | | LoraUp_Poll(); |
| | | #ifndef DEBUG_MODE |
| | | |
| | | if(sleep_flag&&state5v==0){//开始一段时间无休眠 |
| | | if(sleep_flag&&state5v==0&&motor_keeptime==0){//开始一段时间无休眠 |
| | | trace_flush(); |
| | | uint32_t lock = int_lock(); |
| | | //LOG_INFO(TRACE_MODULE_APP, "进入低功耗"); |