Pārlūkot izejas kodu

临时显示空管与功耗降低

HBR 6 dienas atpakaļ
vecāks
revīzija
28dd213c3e
5 mainītis faili ar 295 papildinājumiem un 345 dzēšanām
  1. 3 2
      Drivers/Board/nb_drv.c
  2. 3 3
      Users/lcd/lcd_ghg102.c
  3. 4 5
      Users/rtc_isr.c
  4. 86 118
      Users/tdc_tof/tdc_ms1030.c
  5. 199 217
      Users/tdc_tof/tof_isr.c

+ 3 - 2
Drivers/Board/nb_drv.c

@@ -14,7 +14,8 @@ void nb_power_off(void)
     PeriClk_MutDisable(PeriClk_LpUart0);
     
     GpioInit(NB_EN_PIN_FUNC, GPIO_DIG_IN_NONEUP_PULLDOWN);
-    GpioInit(PD09_AF0, GPIO_DIG_IN_NONEUP_PULLDOWN);
-    GpioInit(PD08_AF0, GPIO_DIG_IN_NONEUP_PULLDOWN);   
+    GpioClrPins(NB_EN_GPIO_PORT, NB_EN_GPIO_BITMASK);
+   // GpioInit(PD09_AF0, GPIO_DIG_IN_NONEUP_PULLDOWN);
+   // GpioInit(PD08_AF0, GPIO_DIG_IN_NONEUP_PULLDOWN);   
 }
 

+ 3 - 3
Users/lcd/lcd_ghg102.c

@@ -591,10 +591,10 @@ void lcd_show_page(void)
 
 void lcd_blank_disp(void)
 {
-     if (TdcItf.blank_flag)
-    {
+//     if (TdcItf.blank_flag)   //暂时修改,主动显示空管
+//    {
         DispMem_Status |= LCD_STATUS_CIRCLE;
-    }
+//    }
 
 }
 

+ 4 - 5
Users/rtc_isr.c

@@ -171,7 +171,7 @@ void RTC_IRQHandler(void)
 	//  get_internal_time();
     if (ISR & 0x08u)
     {
-			rt_sem_release(&rtc_isr_sem);
+    rt_sem_release(&rtc_isr_sem);
     }
 }
 
@@ -217,10 +217,9 @@ void rtc_interrupt_deal_tdc(void)
             }
 
             TdcIntStep = 0x01;
-//            Tu32 = (RTC_CntInt&0x00000001u) ? TDC_CFG_FIRE_DOWN : TDC_CFG_FIRE_UP;
-            tdc_start_tof(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS | TDC_CFG_DO_WREG);
-						
-						
+//	        tdc_start_cal(TDC_CFG_DO_CKENA|TDC_CFG_DO_WREG | TDC_CFG_DO_CKDIS);
+//            tdc_start_tof(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS | TDC_CFG_DO_WREG);
+			
             //LOG("---------------------------------2\n");
         }
 }

+ 86 - 118
Users/tdc_tof/tdc_ms1030.c

@@ -1,14 +1,14 @@
  #include "board.h"
 #include "tdc_tof.h"
 
-#define ANZ_FIRE 		12u	//fire发送脉冲数
+#define ANZ_FIRE 		12u//fire发送脉冲数
 #define DIV_FIRE 		3u	//内部时钟产生脉冲的分频
 #define DIV_CLKHS 	    0u	//高速时钟分频
-#define START_CLKHS     2u	//高速启动后测量前晶振启动间隔时间,120us
+#define START_CLKHS     0u	//高速启动后测量前晶振启动间隔时间,120us
 #define NEG_START  	    0u	//start通道边缘
 #define NEG_STOP		0u	//stop通道边缘
 #define HITIN			9u	//stop预期脉冲数
-#define SEL_TIMO_MB	    0u	//暂未确定数值
+#define SEL_TIMO_MB	    3u	//测量范围溢出时间暂未确定数值
 #define SEL_TSTO2		3u	//32khz //和MS1030不同
 #define SEL_TSTO1		0u	//暂时不用这个引脚,配置为高速时钟输入模式
 #define DFLT_WREG0   ((ANZ_FIRE<<25) | \
@@ -18,14 +18,15 @@
                       ( NEG_START<<13) | \
                       ( NEG_STOP<<12) | \
                       ( HITIN<< 8) | \
+                      ( SEL_TIMO_MB<< 4) | \
                       ( SEL_TSTO2<< 2) | \
                       ( SEL_TSTO1<< 0)) 
                       
 
 
-#define EN_INT_TO       1  //TIMOUT中断触发位
+#define EN_INT_TO       0  //TIMOUT中断触发位
 #define EN_INT_HIT      0  //END HITS中断触发位
-#define EN_INT_ALU      1  //alu中断触发位
+#define EN_INT_ALU      0  //alu中断触发位
 #define RFEDGE          0  //stop通道边沿敏感性
 #define UP_DELVAL1      0  //当EN_FIST_WAVE=1时,为第一波屏蔽窗口 BIT12~27  暂未设置
 #define OFFSET          0	//当en_hc=1时, 62~-64mV   暂未设置
@@ -55,31 +56,36 @@
 
 #define DELREL6				16u	//第3个stop接收第几个回波周期
 #define DELREL7				18u	//第4个stop接收第几个回波周期
-#define DELREL8				20u	//第5个stop接收第几个回波周期                             
+#define DELREL8				20u	//第5个stop接收第几个回波周期
+#define DIS_PW              1u	//关闭脉冲宽度测量功能,0=开启
+#define WAVE_OFFS           0u	//第一波比较器偏置电压:EN_HC = 0 -64mV~63mV,10mv
 #define DFLT_WREG3   ((DELREL6<<26) | \
                       (DELREL7<<20) | \
-                      (DELREL8<<14))
+                      (DELREL8<<14) | \
+                      (DIS_PW<<13)  | \
+                      (WAVE_OFFS<<6))
                       
                             
-#define CONF_FIRE			0		//暂时设置为0 bit29~31
-#define PHASE_FIREUP		0
-#define PHASE_FIREDOWN	    0
-#define SEL_START_FIRE	    1
-#define EN_ANALOG			1
-#define HZ60				0
-#define TCYCLE				1
-#define ANZ_FAKE			0
-#define SEL_ECLK_TMP		1
-#define TW2					1       //120us充电时间,与1030不同
+#define CONF_FIRE			2		//脉冲触发器的输出设置,暂时设置为0 bit29~31
+#define PHASE_FIREUP		0       //FIREUP反向设置
+#define PHASE_FIREDOWN	    0       //FIREDOWN反向设置
+#define SEL_START_FIRE	    1       //FIRE脉冲用作触发TDCSTART
+#define EN_ANALOG			0       //模拟测量控制开关
+#define HZ60				0       //顺流测量和逆流测量的时间单位
+#define TCYCLE				1       //温度测量循环时间
+#define ANZ_FAKE			1       //温度测量热身次数,0:两次热身,1:7次热身
+#define SEL_ECLK_TMP		1       //选择温度测量内部参考时钟
+#define TW2					4       //120us充电时间,与1030不同
 #define EN_PEAK				0		//峰值检波使能关闭,1030不同
 #define EN_DISCHARGE		0		//检波放电使能关闭,1030不同
-#define CYCLE_TOF			3		//顺流逆流自动检测模式下,顺流逆流测量间隔时间,初步确定为3=20ms 1030不同
-#define EN_ERR_VAL			1
-#define EN_DC				1		//stop端口充电模式 这里设置为直流  1030不同
-#define FIRE0_DEF			1       //fire通道默认电平
-#define DOUBLE_RES			0
-#define QUAD_RES			1
-#define DFLT_WREG4   (( PHASE_FIREUP<<28) | \
+#define CYCLE_TOF			0		//顺流逆流自动检测模式下,顺流逆流测量间隔时间,初步确定为3=20ms 1030不同
+#define EN_ERR_VAL			1       //溢出时alu将全f写到结果寄存器
+#define EN_DC				0		//stop端口充电模式 这里设置为直流  1030不同
+#define FIRE0_DEF			1       //fire通道默认状态,fire通道默认电平
+#define DOUBLE_RES			0       //双精度模式
+#define QUAD_RES			0       //4精度模式
+#define DFLT_WREG4   (( CONF_FIRE<<29) | \
+                      ( PHASE_FIREUP<<28) | \
                       ( PHASE_FIREDOWN<<27) | \
                       ( SEL_START_FIRE<<26) | \
                       ( EN_ANALOG<<25) | \
@@ -105,18 +111,22 @@
 #define ANZ_PHASE		 (8)		//插入周期数
 #define DFLT_WREG5        0
 
-#define DOWN_DELVAL1    (0<<12)//第一波屏蔽窗口
-#define SEL_SRC_CLK		(0<<7)//使用晶振产生时钟
-#define EN_HC			(1<<6)
-#define CURR32K			(0<<5)
-#define DIS_Vref		(1<<4)
-#define ADJ_LDO_ROUGH	(0<<3)
-#define ADJ_LDO_FINE	(4<<0)	
+#define DOWN_DELVAL1    (200<<12) //逆流屏蔽窗口
+#define SEL_SRC_CLK		(0<<7)  //选择高速时钟输入源
+#define EN_HC			(0<<6)  //比较器调节步长
+#define CURR32K			(0<<5)  //32K晶振功耗设置
+#define DIS_Vref		(1<<4)  //基准电压输出控制
+#define ADJ_LDO_ROUGH	(0<<3)  //内部LDO输出粗调
+#define ADJ_LDO_FINE	(4<<0)	//内部LDO输出细调
 #define DFLT_WREG6 (DOWN_DELVAL1|SEL_SRC_CLK|EN_HC|CURR32K|DIS_Vref|ADJ_LDO_ROUGH|ADJ_LDO_FINE)
 
 uint16_t tof_state = TOF_ST_INIT;
 uint32_t tof_flag;
 
+
+
+
+
 //uint16_t CntSync = 0;
 
 void tdc_tof_init(void)
@@ -140,14 +150,20 @@ void tdc_tof_init(void)
     tdc_spi_wr_code(0x50);
     us_delay(1000);     // 1000us > specification(500us)
 
-//    tdc_spi_wr_d32(0x80, 0x1E18884E);  // 修正:SEL_TIMO_MB = 8(合法)
-//    tdc_spi_wr_d32(0x81, 0xA00C8005);
-//    tdc_spi_wr_d32(0x82, 0x83105187);
-//    tdc_spi_wr_d32(0x83, 0x20928400);
-//    tdc_spi_wr_d32(0x84, 0x66E00540);
-//    tdc_spi_wr_d32(0x85, 0x07D10000);
-//    tdc_spi_wr_d32(0x86, 0x000C8004); 
 
+//    tdc_spi_wr_d32(0x80, 0x1818088c);  // 修正:SEL_TIMO_MB = 8(合法)
+//    tdc_spi_wr_d32(0x81, 0x00000000);
+//    tdc_spi_wr_d32(0x82, 0x00000000);
+//    tdc_spi_wr_d32(0x83, 0x00000000);
+//    tdc_spi_wr_d32(0x84, 0x46280540);
+//    tdc_spi_wr_d32(0x85, 0x00000000);
+//    tdc_spi_wr_d32(0x86, 0x0000001c); 
+// 修正后的配置
+    
+//    tdc_spi_wr_code(0x70);
+    
+//    uint16_t aa=0;
+//    aa=tdc_spi_rd_d16(0xd0);
      tdc_spi_wr_d32(0x80, DFLT_WREG0);
      uint32_t read_a0=tdc_spi_rd_d32(0xA0);
      read_a0=read_a0&0xFFu;
@@ -158,39 +174,26 @@ void tdc_tof_init(void)
         tof_flag |= TOF_FLAG_TDC_FAULT;
     } else {
         // write_reg0
-        tdc_spi_wr_d32(0x80, DFLT_WREG0 |
-                              ( 2u<< 4)     // SEL_TIMO_MB, 0:64us; 1:128us; 2:256us; ~ 6:4096us;
-                      );
-
+        tdc_spi_wr_d32(0x80, DFLT_WREG0);                     
         // write_reg1
-        tdc_spi_wr_d32(0x81, DFLT_WREG1 |
-                            (5760u<< 12)     // DELVAL1=45us, format:16.5, time unit:Tref;
-                      );
-
+        tdc_spi_wr_d32(0x81, DFLT_WREG1);
         // write_reg2
-        tdc_spi_wr_d32(0x82, DFLT_WREG2 |
-                              ( 0u<<31)     // EN_FIRST_WAVE, 0:disable; 1:enable;
-                      );
-
+        tdc_spi_wr_d32(0x82, DFLT_WREG2);
         // write_reg3
-        tdc_spi_wr_d32(0x83, DFLT_WREG3 |
-                              ( 1u<<13)     // measure FW pulse width, 0:on; 1:off
-                      );
-
+        tdc_spi_wr_d32(0x83, DFLT_WREG3);
         // write_reg4
-        tdc_spi_wr_d32(0x84, DFLT_WREG4);
-        
+        tdc_spi_wr_d32(0x84, DFLT_WREG4);       
         // write_reg5
 	    tdc_spi_wr_d32(0x85, DFLT_WREG5);
- 
         // write_reg6
 		tdc_spi_wr_d32(0x86, DFLT_WREG6);
 				
-
+        tdc_spi_wr_d32(0x87,0x20000000);//!!!!!!!!do not delete!!!!!!!!!
+        
         tdc_spi_wr_code(0x70);
         tdc_spi_wr_code(0x06);
 
-        // not 'INTN' but 'us_delay' to avoid dead loop when INTN fault
+//        // not 'INTN' but 'us_delay' to avoid dead loop when INTN fault
         us_delay(2000); // > 480 + 600 + 16 + 70
         tdc_read_cal(0x0u);
 //            tof_flag ^= TOF_FLAG_UNALGND_CHOP;
@@ -226,43 +229,19 @@ void tdc_start_tof(uint32_t cfg)
     }
 
     if (cfg & TDC_CFG_DO_WREG){
-        // write_reg0
-        tdc_spi_wr_d32(0x80, DFLT_WREG0 |
-                              ( 3u<< 4)     // SEL_TIMO_MB, 0:64us; 1:128us; 2:256us; ~ 6:4096us;
-                                            //modified by yuewei 20260526 1->3, 128us -> 512us, for DN300 almost 240us
-                      );
 
-        // write_reg1
-        // DN15: L/C > (42+21+10*2)*1000/1555=53us
-        tdc_spi_wr_d32(0x81, DFLT_WREG1 |
-                              (5760u<< 12)     // DELVAL1=45us, format:16.5, time unit:Tref;//1031 从BIT12开始
-//                            (6400u<< 7)   // DELVAL1=50us, format:16.5, time unit:Tref;
-//                            (7040u<< 7)   // DELVAL1=55us, format:16.5, time unit:Tref;
-//                            (7680u<< 7)   // DELVAL1=60us, format:16.5, time unit:Tref;
-//                            (8230u<< 7)   // DELVAL1=65us, format:16.5, time unit:Tref;
-//                            (8960u<< 7)   // DELVAL1=70us, format:16.5, time unit:Tref;
-                      );
 
-        // write_reg2
-        tdc_spi_wr_d32(0x82, DFLT_WREG2 |
-                              ( 1u<<31)     // EN_FIRST_WAVE, 0:disable; 1:enable;
-                      );
-    
         // write_reg3
+        
         u32tmp = DFLT_WREG3 |
-                  ( 0u<<13) |       // measure FW pulse width, 0:on; 1:off
+//                  ( 0u<<13) |       // measure FW pulse width, 0:on; 1:off
                   (TdcFwOfst<<6);   // FW wave_offs, 0:0mv; 1~63:2~126mV; 64~127:-128~-2mV;
-        if (tof_state&TOF_ST_VOID){
-            u32tmp |= (1u<<13);     // disable FW pulse width to save power
-        }
+//        if (tof_state&TOF_ST_VOID){
+//            u32tmp |= (1u<<13);     // disable FW pulse width to save power
+//        }
         tdc_spi_wr_d32(0x83, u32tmp);
     }
 
-    // write_reg4
-    u32tmp = DFLT_WREG4;
-    u32tmp |= (1u<<30);     // FIRE_UP,   0:off; 1:on;
-    tdc_spi_wr_d32(0x84, u32tmp);
-
     // Initial TDC status regs
     tdc_spi_wr_code(0x70);
 
@@ -307,23 +286,19 @@ void tdc_read_tof(uint32_t cfg)
     TdcStatus = tdc_spi_rd_d16(0xd0);   // 读取状态寄存器
     if ((TdcStatus&0x0300)==0x0000u){
         tof_flag ^= TOF_FLAG_UNALGND_CHOP;
-//        if (CntSync>=240){
-//            CntSync = 10;
-//        } else {
-//            CntSync += 10;
-//        }
+
     }
 
     if ((TdcStatus&0x03F0)!=0x0090u){
         tof_flag |= TOF_FLAG_BLANK_PIPE;
-        tdc_spi_wr_code(0x70);
+//        tdc_spi_wr_code(0x70);
     } 
     else 
      {
        
             TdcUPwFw = tdc_spi_rd_d16(0xd3);    // First wave pulse width
             TdcUPwHw = tdc_spi_rd_d16(0xd4);    // 1st Hit wave pulse width
-            tdc_spi_wr_code(0x70);
+
             // TOF_UP_HITs
             TdcUToF[0] = tdc_spi_rd_d32(0xb8)*(1.0f/8);  // average of all
             // TOF_DOWN_HITs
@@ -382,12 +357,7 @@ void tdc_read_cal(uint32_t cfg)
     TdcStatus = tdc_spi_rd_d16(0xd0);   // status
     if ((TdcStatus&0x0300)==0x0000u){
         tof_flag ^= TOF_FLAG_UNALGND_CHOP;
-//        if (CntSync>=240){
-//            CntSync = 10;
-//        } else {
-//            CntSync += 10;
-//        }
-        tdc_spi_wr_code(0x70);
+
         TdcCal = tdc_spi_rd_d32(0xd5);
 
 //        TdcScale = 244140.625f/TdcCal;
@@ -413,9 +383,8 @@ void tdc_start_temp(uint32_t cfg)
     }
 
     if (cfg & TDC_CFG_DO_WREG){
-        // write_reg0
-        
-        
+       
+              
         tdc_spi_wr_d32(0x80, DFLT_WREG0 |
                               ( 3u<< 6)     // SEL_TIMO_MB, 0:64us; 1:128us; 2:256us; 3:512us; ~ 6:4096us;
                       );
@@ -443,32 +412,31 @@ void tdc_start_temp(uint32_t cfg)
 
 void tdc_read_temp(uint32_t cfg)
 {
-//rt_enter_critical();
+
     if (cfg & TDC_CFG_DO_CKENA){
         PeriClk_MutEnable(PeriClk_Spi1);
         DMA_ReqClkOn();
     }
 
     TdcStatus = tdc_spi_rd_d16(0xd0);   // status
-    tdc_spi_wr_code(0x70);
+
     TdcPT[0] = tdc_spi_rd_d32(0xd1);  // REF 5K +/- 5
     TdcPT[1] = tdc_spi_rd_d32(0xd2);  // U7
-    //TdcPT[2] = tdc_spi_rd_d32(0xc4);  // U8
-    //TdcPT[3] = tdc_spi_rd_d32(0xc5);  // REF 1.5K
-
-//    if (TdcPT[0]>0x1000000u && TdcPT[0]<0x2000000u){
-//        TdcResist = 5000.0f*TdcPT[1]/TdcPT[0];
-//        Ohm2Dgr2USSpd(TdcResist, WaterPrmt);        // [0]:Temperature; [1]:ultrasonic speed @Temp
-//    }
-    if (TdcPT[0]>0xB00000u && TdcPT[0]<0xE00000u){
-        TdcResist = 2500.0f*TdcPT[1]/TdcPT[0];  // ohmX10
-        Ohm2Dgr2USSpd(TdcResist, WaterPrmt);        // [0]:Temperature; [1]:ultrasonic speed @Temp
+
+    if(TdcPT[0]==0xffffffff || TdcPT[1]==0xffffffff || TdcPT[0] ==0x00000000 || TdcPT[0]==0x00000000)
+    {
+        
     }
-		//LOG("----------T=%.6f,C=%.6f\n",WaterPrmt[0],WaterPrmt[1]);
+    else
+    {
+     TdcResist = 2500.0f*TdcPT[1]/TdcPT[0];  // ohmX10
+     Ohm2Dgr2USSpd(TdcResist, WaterPrmt);        // [0]:Temperature; [1]:ultrasonic speed @Temp
+    }    
+
     if (cfg & TDC_CFG_DO_CKDIS){
         DMA_ReqClkOff();
         PeriClk_MutDisable(PeriClk_Spi1);
     }
-//rt_exit_critical();
+
 }
 

+ 199 - 217
Users/tdc_tof/tof_isr.c

@@ -237,57 +237,37 @@ void tof_isr_convert_tof_to_flow(void)
 
     switch (TdcIntStep)
     {
-//    case (0x00u):
-//        Tu32 = (RTC_CntInt & 0x00000001u) ? TDC_CFG_FIRE_DOWN : TDC_CFG_FIRE_UP;
-//        tdc_read_tof(TDC_CFG_DO_CKENA | Tu32);
-//        //            if(Tu32 == TDC_CFG_FIRE_UP)
-//        //            {
-//        //								LOG("ch-%d-0-U, %.6f\n", ch, TdcScale*TdcUToF[0]);
-//        //            }
-//        //            else
-//        //            {
-//        //                LOG("ch-%d-0-D, %.6f\n", ch, TdcScale*TdcDToF[0]);
-//        //            }
-//        // LOG("ch-%d-0-U:%.6f-D:%.6f\n\n", ch, TdcScale*TdcUToF[0],TdcScale*TdcDToF[0]);
-//        Tu32 = (RTC_CntInt & 0x00000001u) ? TDC_CFG_FIRE_UP : TDC_CFG_FIRE_DOWN;
-//        tdc_start_tof(TDC_CFG_DO_CKDIS | Tu32);
-//        TdcIntStep = 0x01u;
-
-//        break;
 
     case (0x01u):      
-       
-//        // RTC_CntInt奇数UP、偶数DOWN
-//        Tu32 = (RTC_CntInt & 0x00000001u) ? TDC_CFG_FIRE_UP : TDC_CFG_FIRE_DOWN;
 
         // 根据RTC_CntInt设置校准、采集温度,读取飞行时间
-        if ((RTC_CntInt & RTC_CNTMSK_CAL) == 0x0u)
-        {
-            // 间隔8秒进行一次校准
-            tdc_read_tof(TDC_CFG_DO_CKENA);
-            tdc_start_cal(TDC_CFG_DO_WREG | TDC_CFG_DO_CKDIS);
-            if (tof_flag & TOF_FLAG_UNALGND_CHOP)
-            {
-                TdcIntStep = 0x03u;
-            }
-            else
-            {
-                TdcIntStep = 0x02u;
-            }
-        }
-        else if ((RTC_CntInt & RTC_CNTMSK_TEMP) == 0x4u)
-        {
-            // 间隔4秒采集一次温度
-            tdc_read_tof(TDC_CFG_DO_CKENA);
-            tdc_start_temp(TDC_CFG_DO_WREG | TDC_CFG_DO_CKDIS);
-            TdcIntStep = 0x04u;
-        }
-        else
-        {
+//        if ((RTC_CntInt & RTC_CNTMSK_CAL) == 0x0u)
+//        {
+//            // 间隔8秒进行一次校准
+//            tdc_read_tof(TDC_CFG_DO_CKENA);
+//            tdc_start_cal(TDC_CFG_DO_CKENA|TDC_CFG_DO_WREG | TDC_CFG_DO_CKDIS);
+//            if (tof_flag & TOF_FLAG_UNALGND_CHOP)
+//            {
+//                TdcIntStep = 0x03u;
+//            }
+//            else
+//            {
+//                TdcIntStep = 0x02u;
+//            }
+//        }
+//          else if ((RTC_CntInt & RTC_CNTMSK_TEMP) == 0x4u)
+//        {
+//            // 间隔4秒采集一次温度
+//            tdc_read_tof(TDC_CFG_DO_CKENA);
+//            tdc_start_temp(TDC_CFG_DO_CKENA|TDC_CFG_DO_WREG | TDC_CFG_DO_CKDIS);
+//            TdcIntStep = 0x04u;
+//        }
+//        else
+//        {
             // 读取飞行时间
             tdc_read_tof(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS);
             TdcIntStep = 0xFFu;
-        }
+//        }
 
         //            LOG("ch-%d-1-U:%.6f-D:%.6f\n\n", ch, TdcScale*TdcUToF[0],TdcScale*TdcDToF[0]);
         //            if(Tu32 == TDC_CFG_FIRE_UP)
@@ -300,181 +280,182 @@ void tof_isr_convert_tof_to_flow(void)
         //            }
 
         // 清反向计量标识
-        pTdcItf->bw_flow_flag = 0;
-        // 空管
-        if (tof_flag & TOF_FLAG_BLANK_PIPE)
-        {
-            // 设置对应德通道为空管
-            pTdcItf->set_blank(ch);
-
-            // DiffTof from normal channel
-            // 正常的通道进行计量
-            if (pTdcItf->ch_bit_map ^ TdcItf.blank_flag)
-            {
-                DiffToF2Flow(DiffToF);
-                SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, UToFAvg, DToFAvg, CumFlow);
-            }
-            break;
-        }
-        else
-        {
-            // 指定通道清除空管
-            pTdcItf->clr_blank(ch);
-        }
-
-        // 计算脉冲宽度
-        Tmp16 = TdcUPwFw - TdcDPwFw;
-        // 判断脉冲宽度有效性
-        if (Tmp16 < (0 - TOF_PWFW_DIFF) || Tmp16 > TOF_PWFW_DIFF)
-        {
-            // 无效脉冲宽度
-            tof_flag |= TOF_FLAG_UNPAIR_WAVE;
-            CntErrEvent++;
-        }
-        else
-        {
-            // 有效脉冲宽度
-            tof_flag &= ~TOF_FLAG_UNPAIR_WAVE;
-            // 记录UP和DOWM平均飞行时间
-            UToFAvg = TdcScale * TdcUToF[0];
-            DToFAvg = TdcScale * TdcDToF[0];
-        }
-
-        // 判断offset有效性
-        if (TdcFwOfst < TOF_OFST_LOW || TdcFwOfst > TOF_OFST_HIGH)
-        {
-            // out of range
-            TdcFwOfst = (TOF_OFST_LOW + TOF_OFST_HIGH) / 2; // default offset
-        }
-        else if (tof_flag & TOF_FLAG_UNPAIR_WAVE)
-        {
-            // first wave for up and down is different
-            TdcFwOfst += (TdcFwOfst <= (TOF_OFST_LOW + 3)) ? 2 : -2;
-        }
-        else if (TdcUPwFw < TOF_PWFW_LOW && TdcDPwFw < TOF_PWFW_LOW && TdcFwOfst > TOF_OFST_LOW)
-        {
-            TdcFwOfst -= 1;
-        }
-        else if (TdcUPwFw > TOF_PWFW_HIGH && TdcDPwFw > TOF_PWFW_HIGH && TdcFwOfst < TOF_OFST_HIGH)
-        {
-            TdcFwOfst += 1;
-        }
-
-        // 本次UP和DOWN飞行时间求和
-        SumToF = UToFAvg + DToFAvg; // alomost fixed regardless of water speed
-        // 本次飞行时间和与上次飞行时间和德差值在50内认为有效
-        if (fabsf(SumToF - LastSumToF) < 50.0f)
-        {
-            // 计算飞行时间
-            DiffToF = UToFAvg - DToFAvg - pTdcItf->path_skew[ch];
-            // add by yuewei 20260325 低通平滑滤波
-            // DiffToF = DiffToF * DIFF_TOFF_FILTER_ALPHA + (1 - DIFF_TOFF_FILTER_ALPHA) * DiffToF_LAST;
-
-            // DiffToF = tof_filter(DiffToF);//20260429
-            DiffToF = tof_filter_input_poll(ch, DiffToF);
-            // LOG("ch%d, U=%.6f, D=%.6f\n", ch, UToFAvg, DToFAvg);
-            // LOG("int_cnt=%d, step=%d, ch=%d, DiffToF=%.6f\n\n", int_cnt, get_tdc_int_step(), ch, DiffToF);
-        }
-        // 本次飞行时间和赋值给上次飞行时间和
-        LastSumToF = SumToF;
-
-        if (tof_state & (TOF_ST_METER | TOF_ST_CALIB))
-        {
-            DiffToFAvg += (DiffToF - DiffToFAvg) * (1.0f / 6);
-            DiffToFAvg2 += (DiffToF - DiffToFAvg2) * (1.0f / 2);
-            DiffToFAvg128 += (DiffToF - DiffToFAvg128) * (1.0f / 128);
-            if (tof_flag & TOF_FLAG_VALID_FLOW)
-            {
-                if (fabsf(DiffToFAvg) < 0.35f)
-                {
-                    tof_flag &= ~TOF_FLAG_VALID_FLOW;
-                    if (tof_state & TOF_ST_CALIB && CalibTime > CALIB_TIME_LTH)
-                    {
-                        tof_flag |= TOF_FLAG_CALIB_DONE;
-                    }
-                }
-            }
-            else
-            {
-
-                // modified by yuewei 20260519,加入n值,始动流量
-                // if (fabsf(DiffToFAvg) > 0.45f || fabsf(DiffToFAvg2) > 1.0f)
-                if (fabsf(DiffToFAvg * 100.00f) > Paramx.n || fabsf(DiffToFAvg2) > 1.0f)
-                {
-                    tof_flag |= TOF_FLAG_VALID_FLOW;
-                    if (tof_state & TOF_ST_CALIB)
-                    {
-                        tof_flag |= TOF_FLAG_CALIB_FLOW;
-                        CumFlow = 0;
-                        CalibTime = 0;
-                        CalibSpdLvl = 0;
-                        CalibTemp = 0;
-                    }
-                }
-            }
-
-            // 是有效德流量
-            if (tof_flag & TOF_FLAG_VALID_FLOW)
-            {
-                TmpFloat = DiffToF * UsonicSpd * UsonicSpd * 0.00001f;
-
-                // 一次校准模式
-                if (tof_state & TOF_ST_CALIB)
-                {
-                    CumFlow += TmpFloat * pTdcItf->pipe_coe;
-                    pTdcItf->check_flow(CumFlow, TmpFloat, WaterTemp);
-                    if (tof_flag & TOF_FLAG_CALIB_FLOW)
-                    {
-                        if (DiffToFAvg2 > 0.5f)
-                        {
-                            CalibSpdLvl += TmpFloat;
-                            CalibTemp += WaterTemp;
-                            CalibTime++;
-                        }
-                        else
-                        {
-                            tof_flag &= ~TOF_FLAG_CALIB_FLOW;
-                            if (CalibTime > CALIB_TIME_LTH)
-                            {
-                                CalibSpdLvl /= CalibTime;
-                                CalibTemp /= CalibTime;
-                                tof_flag |= TOF_FLAG_CALIB_FALL;
-                            }
-                        }
-                    }
-                }
-                else
-                {
-                    // 正常计量模式
-                    DiffToF2Flow(DiffToF);
-                    // DiffToF2Flow(DiffToFAvg);
-                }
-            }
-            else
-            {
-                FlowVol = 0; // 始动流量切除时,瞬时流量清零yw2026-6-25
-            }
-            // 串口打印,功能未开启
-            // SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, UToFAvg, DToFAvg, DiffToFAvg);
-            SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, DiffToF * UsonicSpd * UsonicSpd * 0.00001f, DToFAvg, DiffToFAvg);
-        }
-        break;
+//        pTdcItf->bw_flow_flag = 0;
+//        // 空管
+//        if (tof_flag & TOF_FLAG_BLANK_PIPE)
+//        {
+//            // 设置对应德通道为空管
+//            pTdcItf->set_blank(ch);
+
+//            // DiffTof from normal channel
+//            // 正常的通道进行计量
+//            if (pTdcItf->ch_bit_map ^ TdcItf.blank_flag)
+//            {
+//                DiffToF2Flow(DiffToF);
+//                SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, UToFAvg, DToFAvg, CumFlow);
+//            }
+//            break;
+//        }
+//        else
+//        {
+//            // 指定通道清除空管
+//            pTdcItf->clr_blank(ch);
+//        }
+
+//        // 计算脉冲宽度
+//        Tmp16 = TdcUPwFw - TdcDPwFw;
+//        // 判断脉冲宽度有效性
+//        if (Tmp16 < (0 - TOF_PWFW_DIFF) || Tmp16 > TOF_PWFW_DIFF)
+//        {
+//            // 无效脉冲宽度
+//            tof_flag |= TOF_FLAG_UNPAIR_WAVE;
+//            CntErrEvent++;
+//        }
+//        else
+//        {
+//            // 有效脉冲宽度
+//            tof_flag &= ~TOF_FLAG_UNPAIR_WAVE;
+//            // 记录UP和DOWM平均飞行时间
+//            UToFAvg = TdcScale * TdcUToF[0];
+//            DToFAvg = TdcScale * TdcDToF[0];
+//        }
+
+//        // 判断offset有效性
+//        if (TdcFwOfst < TOF_OFST_LOW || TdcFwOfst > TOF_OFST_HIGH)
+//        {
+//            // out of range
+//            TdcFwOfst = (TOF_OFST_LOW + TOF_OFST_HIGH) / 2; // default offset
+//        }
+//        else if (tof_flag & TOF_FLAG_UNPAIR_WAVE)
+//        {
+//            // first wave for up and down is different
+//            TdcFwOfst += (TdcFwOfst <= (TOF_OFST_LOW + 3)) ? 2 : -2;
+//        }
+//        else if (TdcUPwFw < TOF_PWFW_LOW && TdcDPwFw < TOF_PWFW_LOW && TdcFwOfst > TOF_OFST_LOW)
+//        {
+//            TdcFwOfst -= 1;
+//        }
+//        else if (TdcUPwFw > TOF_PWFW_HIGH && TdcDPwFw > TOF_PWFW_HIGH && TdcFwOfst < TOF_OFST_HIGH)
+//        {
+//            TdcFwOfst += 1;
+//        }
+
+//        // 本次UP和DOWN飞行时间求和
+//        SumToF = UToFAvg + DToFAvg; // alomost fixed regardless of water speed
+//        // 本次飞行时间和与上次飞行时间和德差值在50内认为有效
+//        if (fabsf(SumToF - LastSumToF) < 50.0f)
+//        {
+//            // 计算飞行时间
+//            DiffToF = UToFAvg - DToFAvg - pTdcItf->path_skew[ch];
+//            // add by yuewei 20260325 低通平滑滤波
+//            // DiffToF = DiffToF * DIFF_TOFF_FILTER_ALPHA + (1 - DIFF_TOFF_FILTER_ALPHA) * DiffToF_LAST;
+
+//            // DiffToF = tof_filter(DiffToF);//20260429
+//            DiffToF = tof_filter_input_poll(ch, DiffToF);
+//            // LOG("ch%d, U=%.6f, D=%.6f\n", ch, UToFAvg, DToFAvg);
+//            // LOG("int_cnt=%d, step=%d, ch=%d, DiffToF=%.6f\n\n", int_cnt, get_tdc_int_step(), ch, DiffToF);
+//        }
+//        // 本次飞行时间和赋值给上次飞行时间和
+//        LastSumToF = SumToF;
+
+//        if (tof_state & (TOF_ST_METER | TOF_ST_CALIB))
+//        {
+//            DiffToFAvg += (DiffToF - DiffToFAvg) * (1.0f / 6);
+//            DiffToFAvg2 += (DiffToF - DiffToFAvg2) * (1.0f / 2);
+//            DiffToFAvg128 += (DiffToF - DiffToFAvg128) * (1.0f / 128);
+//            if (tof_flag & TOF_FLAG_VALID_FLOW)
+//            {
+//                if (fabsf(DiffToFAvg) < 0.35f)
+//                {
+//                    tof_flag &= ~TOF_FLAG_VALID_FLOW;
+//                    if (tof_state & TOF_ST_CALIB && CalibTime > CALIB_TIME_LTH)
+//                    {
+//                        tof_flag |= TOF_FLAG_CALIB_DONE;
+//                    }
+//                }
+//            }
+//            else
+//            {
+
+//                // modified by yuewei 20260519,加入n值,始动流量
+//                // if (fabsf(DiffToFAvg) > 0.45f || fabsf(DiffToFAvg2) > 1.0f)
+//                if (fabsf(DiffToFAvg * 100.00f) > Paramx.n || fabsf(DiffToFAvg2) > 1.0f)
+//                {
+//                    tof_flag |= TOF_FLAG_VALID_FLOW;
+//                    if (tof_state & TOF_ST_CALIB)
+//                    {
+//                        tof_flag |= TOF_FLAG_CALIB_FLOW;
+//                        CumFlow = 0;
+//                        CalibTime = 0;
+//                        CalibSpdLvl = 0;
+//                        CalibTemp = 0;
+//                    }
+//                }
+//            }
+
+//            // 是有效德流量
+//            if (tof_flag & TOF_FLAG_VALID_FLOW)
+//            {
+//                TmpFloat = DiffToF * UsonicSpd * UsonicSpd * 0.00001f;
+
+//                // 一次校准模式
+//                if (tof_state & TOF_ST_CALIB)
+//                {
+//                    CumFlow += TmpFloat * pTdcItf->pipe_coe;
+//                    pTdcItf->check_flow(CumFlow, TmpFloat, WaterTemp);
+//                    if (tof_flag & TOF_FLAG_CALIB_FLOW)
+//                    {
+//                        if (DiffToFAvg2 > 0.5f)
+//                        {
+//                            CalibSpdLvl += TmpFloat;
+//                            CalibTemp += WaterTemp;
+//                            CalibTime++;
+//                        }
+//                        else
+//                        {
+//                            tof_flag &= ~TOF_FLAG_CALIB_FLOW;
+//                            if (CalibTime > CALIB_TIME_LTH)
+//                            {
+//                                CalibSpdLvl /= CalibTime;
+//                                CalibTemp /= CalibTime;
+//                                tof_flag |= TOF_FLAG_CALIB_FALL;
+//                            }
+//                        }
+//                    }
+//                }
+//                else
+//                {
+//                    // 正常计量模式
+//                    DiffToF2Flow(DiffToF);
+//                    // DiffToF2Flow(DiffToFAvg);
+//                }
+//            }
+//            else
+//            {
+//                FlowVol = 0; // 始动流量切除时,瞬时流量清零yw2026-6-25
+//            }
+//            // 串口打印,功能未开启
+//            // SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, UToFAvg, DToFAvg, DiffToFAvg);
+//            SERPLOT_PRINT_4FLOAT_1PREAMBLE(DiffToF, DiffToF * UsonicSpd * UsonicSpd * 0.00001f, DToFAvg, DiffToFAvg);
+//        }
+//        break;
 
-    case (0x02u):
-        tdc_read_cal(TDC_CFG_DO_CKENA);
-        tdc_start_cal(TDC_CFG_DO_CKDIS);
-        TdcIntStep = 0x03u;
-        break;
+//    case (0x02u):
+//        tdc_read_cal(TDC_CFG_DO_CKENA);
+//        tdc_start_cal(TDC_CFG_DO_CKDIS);
+//        TdcIntStep = 0x03u;
+//        break;
 
-    case (0x03u):
-        tdc_read_cal(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS);
-        TdcIntStep = 0xFFu;
-        break;
+//    case (0x03u):
+//        tdc_read_cal(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS);
+//        TdcIntStep = 0xFFu;
+//        break;
 
-    case (0x04u):
-        tdc_read_temp(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS);
-        TdcIntStep = 0xFFu;
-        break;
+//    case (0x04u):
+//        
+//        tdc_read_temp(TDC_CFG_DO_CKENA | TDC_CFG_DO_CKDIS);
+//        TdcIntStep = 0xFFu;
+//        break;
 
     case (0x80u):
         TdcIntStep = 0xFFu;
@@ -487,7 +468,7 @@ void PORTD_F_IRQHandler(void)
     uint32_t ClkOff;
     rt_base_t level;
     uint16_t ISRB, ISRD, ISRE;
-    temp_flag=1;
+
     // M0P_GPIO->PD_ICLR = (1u << 3);
     //  M0P_GPIO->PD_ICLR = (1u << 4);
     //	M0P_GPIO->PD_ICLR &= ~(1 << 3);
@@ -533,6 +514,7 @@ void PORTD_F_IRQHandler(void)
     // if (ISRD & GpioBitMsk3)
     //{
     // 发送信号量,唤醒线程处理
+    temp_flag=1;
     rt_sem_release(&tdc_isr_sem);
     // LOG("rt_sem_release\n");