MCU为STM32f429zi。RTU串口参数为19200,偶校 初始化代码
RTU = modbus_new_rtu(“/dev/uart3”, 19200, ‘E’, 8, 1);
rt_base_t Ctrl485;
Ctrl485=GET_PIN(D,4);
rt_pin_mode(Ctrl485,PIN_MODE_OUTPUT);
modbus_rtu_set_serial_mode(RTU, MODBUS_RTU_RS485);
modbus_rtu_set_rts(RTU, Ctrl485, MODBUS_RTU_RTS_UP);
modbus_set_slave(RTU, 1); //从机地址
modbus_connect(RTU);
modbus_set_response_timeout(RTU, 0, 100000); 主机读
modbus_read_registers(RTU, 0x2001, 1, Buf);
理论值应为 01 03 20 01 00 01 2位校验码
串口工具显示 81 03 A0 01 10 01
觉得是串口波特率有问题,stm32f4如果是有校验为则数据位为9位,但libmodbus数据位只能为8位
不知各位大神有没有遇到这类问题?