forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-05 cf4d12fd8322cbb350dd3bc5af8c748e8790ac64
Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
@@ -66,12 +66,12 @@
void RS485_read_data_RX_DMA_check(void)
{
   uint16_t timeout_cnt = 0,dma_recv_cnt;
   uint32_t dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3);
   uint32_t dma_mar_reg_read = DMA_CHxMAR_Read(RS485_READ_DATA_DMA_CHX);
   
   if(dma_mar_reg_read != (uint32)RS485_read_data_recv_buff){
      delay_ms(2);
      while(dma_mar_reg_read != DMA_CHxMAR_Read(DMA_CH3)){
         dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3);
      while(dma_mar_reg_read != DMA_CHxMAR_Read(RS485_READ_DATA_DMA_CHX)){
         dma_mar_reg_read = DMA_CHxMAR_Read(RS485_READ_DATA_DMA_CHX);
         delay_ms(2);
         if(timeout_cnt++ > 100)
            break;   
@@ -83,6 +83,8 @@
   dma_recv_cnt = dma_mar_reg_read - (uint32)RS485_read_data_recv_buff;
   if(dma_recv_cnt)
   {
      if((dma_recv_cnt >= RS485_READ_DATA_RECV_BUFF_LEN_MAX)||(dma_recv_cnt >= WRC_REC_BUF_LENGTH))
         return;
      rs485_com_uart_data_g.recv_length = dma_recv_cnt;
      arrayA_2_arrayB(RS485_read_data_recv_buff , rs485_com_uart_data_g.recv_buf, dma_recv_cnt, LITTLE_ENDIAN) ;
      rs485_com_uart_data_g.recv_flag = SET;//½ÓÊÕÍê³É
@@ -218,7 +220,7 @@
   if(rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt == 0)  //ÑÓʱµ½0¾Í¿ÉÒÔ·¢ËͶÁȡָÁî
   {      
      //´®¿ÚÅäÖÃ
      RS485_UART_GPIO_Init();
//      RS485_UART_GPIO_Init(); //uart_InitÒѾ­°üº¬ÁËIOÅäÖÃ
      switch(flow_meter_para_g.baudrate_code ){
         case BAUDRATE_1200:BaudRate = 1200; break;
         case BAUDRATE_2400:BaudRate = 2400; break;
@@ -239,6 +241,7 @@
      
      RS485_read_data_uart_Init(BaudRate,ParityBit,OneBit);
      RS485_read_data_RX_DMA_CH3_Init();
      uart_ctrl_para_g.RS485_rxto_flag = RESET;
      
      RS485_PWR_ON;
      delay_us(10);
@@ -246,6 +249,8 @@
      rs485_com_ctrl_pata_g.reread_wait_time_cnt = RS485_REREAD_WATI_TIME; //ÖØÖõȴýÏìӦʱ¼ä
      return RS485_COM_WAIT_ANSWER;
   }
   return   RS485_COM_SEND;
}
@@ -256,13 +261,17 @@
   
   ErrorStatus   read_ok = FAIL;
   //¼ì²é´®¿ÚÊý¾Ý
   RS485_read_data_RX_DMA_check();
   if(uart_ctrl_para_g.RS485_rxto_flag ==SET){
      uart_ctrl_para_g.RS485_rxto_flag = RESET;
      RS485_read_data_RX_DMA_check();
   }
   //·ÖÎöÊý¾Ý,Èç¹û³É¹¦¶Áµ½Êý¾Ýread_ok = PASS
   if(rs485_com_uart_data_g.recv_flag == SET){
      rs485_com_uart_data_g.recv_flag =RESET;
      
      read_ok = rs485ComDataAnalysis(rs485_com_uart_data_g,SIZHUMODBUSV2_0,1,rs485_com_ctrl_pata_g ) ;//?É豸´úÂë¡¢´Ó»úµØÖ·Èë²ÎÒª¸Ä
      memset(rs485_com_uart_data_g.recv_buf, 0, sizeof(rs485_com_uart_data_g.recv_buf)); //Ó¦´ðÍêºóÇå¿Õ½ÓÊÕ
   }
   
   if(read_ok==PASS){
@@ -344,4 +353,4 @@
         RS485_trigger_settle_flag = SET; //RS485²É¼¯Ö®ºó´¥·¢Ò»´Î½áËã   
      }      
   }
}
}