|
|
|
@@ -3,6 +3,33 @@ |
|
|
|
|
|
|
|
#include"modbus_parse.h" |
|
|
|
|
|
|
|
|
|
|
|
// #if (MODBUS_USART_BAUDRATE > 19200U) |
|
|
|
|
|
|
|
// /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/ |
|
|
|
// /*1.5个字符=750us-1个字符时间*/ |
|
|
|
// #define MODBUS_IDLE_TO_T15_US \ |
|
|
|
// ((750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
// /*2个字符=1000us*/ |
|
|
|
// #define MODBUS_T15_TO_T35_US 1000UL |
|
|
|
// /*3.5个字符=1750us-1个字符时间*/ |
|
|
|
// #define MODBUS_IDLE_TO_T35_US \ |
|
|
|
// ((1750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
// #else |
|
|
|
|
|
|
|
// /*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/ |
|
|
|
// /*1.5个字符-1个字符时间=0.5个字符时间*/ |
|
|
|
// #define MODBUS_IDLE_TO_T15_US \ |
|
|
|
// ((5000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
// /*2个字符时间*/ |
|
|
|
// #define MODBUS_T15_TO_T35_US \ |
|
|
|
// ((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
// /*3.5个字符-1个字符时间=2.5个字符时间*/ |
|
|
|
// #define MODBUS_IDLE_TO_T35_US \ |
|
|
|
// ((25000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
// #endif |
|
|
|
|
|
|
|
|
|
|
|
/*在8N1下,一个字符=10位,波特率表示每秒传输的位数,换算成每us传输的位数要除以10^6 |
|
|
|
*所以一个字符时间 = 10/(波特率/10^6)=10^7/波特率 |
|
|
|
*(+ MODBUS_USART_BAUDRATE - 1UL)部分为整数运算向上取整 |
|
|
|
@@ -11,28 +38,25 @@ |
|
|
|
|
|
|
|
/*固定等待1750us,再减去IDLE中断等待的1个字符时间*/ |
|
|
|
/*1.5个字符=750us-1个字符时间*/ |
|
|
|
#define MODBUS_IDLE_TO_T15_US \ |
|
|
|
((750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
#define MODBUS_IDLE_TO_T15_US 750UL |
|
|
|
/*2个字符=1000us*/ |
|
|
|
#define MODBUS_T15_TO_T35_US 1000UL |
|
|
|
/*3.5个字符=1750us-1个字符时间*/ |
|
|
|
#define MODBUS_IDLE_TO_T35_US \ |
|
|
|
((1750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
#define MODBUS_IDLE_TO_T35_US 1750UL |
|
|
|
#else |
|
|
|
|
|
|
|
/*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/ |
|
|
|
/*1.5个字符-1个字符时间=0.5个字符时间*/ |
|
|
|
/*1.5个字符-1个字符时间=0.5个字符时间*/ |
|
|
|
#define MODBUS_IDLE_TO_T15_US \ |
|
|
|
((5000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
((15000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
/*2个字符时间*/ |
|
|
|
#define MODBUS_T15_TO_T35_US \ |
|
|
|
((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
/*3.5个字符-1个字符时间=2.5个字符时间*/ |
|
|
|
#define MODBUS_IDLE_TO_T35_US \ |
|
|
|
((25000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
((35000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE) |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE]; |
|
|
|
extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE]; |
|
|
|
|
|
|
|
|