| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | rs485_com_ctrl_pata_g.reread_wait_time_cnt = RS485_REREAD_WATI_TIME; //ÖØÖõȴýÏìӦʱ¼ä |
| | | return RS485_COM_WAIT_ANSWER; |
| | | } |
| | | |
| | | return RS485_COM_SEND; |
| | | } |
| | | |
| | | |
| | | #define RS485_READ_ERR_ALARM_TIMES 2 //Á¬ÐøRS485_READ_ERR_ALARM_TIMES´Îʧ°Ü±¨¾¯RS485Òì³£ |
| | | #define RS485_READ_ERR_ALARM_TIMES 1 //Á¬ÐøRS485_READ_ERR_ALARM_TIMES´Îʧ°Ü±¨¾¯RS485Òì³£ |
| | | RS485_COM_STATUS_T rs485ComWaitAnswerHandle(void) |
| | | { |
| | | static uint8_t RS485_err_cnt =0 ; //¶Áȡʧ°Ü¼ÆÊý |
| | |
| | | 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){ |
| | |
| | | RS485_UART_GPIO_sleep(); |
| | | if(RS485_err_cnt < 250){ |
| | | if( ++RS485_err_cnt >= RS485_READ_ERR_ALARM_TIMES) |
| | | __SYS_STATUS_ALARM_BYTES_SET(RS485_err); |
| | | __SYS_STATUS_ALARM_BYTES_SET(RS485_err,ALARM_ID_READ_485_ABNORMAL); |
| | | } |
| | | |
| | | return RS485_COM_IDLE; |
| | |
| | | rs485_com_ctrl_pata_g.status = RS485_COM_PWR_ON; |
| | | sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag = SET; |
| | | } |
| | | |
| | | } |
| | | |
| | | switch (rs485_com_ctrl_pata_g.status){ |
| | |
| | | RS485_trigger_settle_flag = SET; //RS485²É¼¯Ö®ºó´¥·¢Ò»´Î½áËã |
| | | } |
| | | } |
| | | } |
| | | } |