Browse Source

modbus_block_host 添加 re引脚控制接口

master
zhaohe 8 months ago
parent
commit
51726ddfa3
  1. 10
      modbus/modbus_block_host.cpp
  2. 5
      modbus/modbus_block_host.hpp

10
modbus/modbus_block_host.cpp

@ -6,9 +6,10 @@ using namespace iflytop;
ModbusBlockHost::ModbusBlockHost() {}
ModbusBlockHost::~ModbusBlockHost() {}
void ModbusBlockHost::initialize(UART_HandleTypeDef *huart) {
void ModbusBlockHost::initialize(UART_HandleTypeDef *huart, Pin_t rePin) {
this->huart = huart;
this->rePin = rePin;
txEnGpio.initAsOutput(rePin, kxs_gpio_pulldown, false, false);
m_modbus_lock.init();
}
void ModbusBlockHost::enableDump(bool enable) { m_dump = enable; }
@ -31,13 +32,14 @@ void ModbusBlockHost::uarttx(uint8_t *buff, size_t len) {
}
// HAL_UART_Transmit(huart, buff, len, 1000);
HAL_UART_DMAStop(huart);
if (rePin != PinNull) txEnGpio.setState(true);
HAL_StatusTypeDef ret = HAL_UART_Transmit_DMA(huart, buff, len);
ZASSERT(ret == HAL_OK);
// 等待DMA传输完成
while (true) {
if (HAL_UART_GetState(huart) == HAL_UART_STATE_READY) break;
}
if (rePin != PinNull) txEnGpio.setState(false);
return;
}
bool ModbusBlockHost::uartrx(uint8_t *buff, size_t len, int overtimems) {
@ -182,7 +184,7 @@ bool ModbusBlockHost::writeReg10(uint8_t slaveAddr, uint16_t regAddr, uint16_t r
txbuff[3] = regAddr & 0xff;
txbuff[4] = 0x00;
txbuff[5] = 0x01;
txbuff[6] = 0x02; // 字节数
txbuff[6] = 0x02; //
txbuff[7] = regVal >> 8;
txbuff[8] = regVal & 0xff;
modbus_pack_crc_to_packet(txbuff, 9 + 2);

5
modbus/modbus_block_host.hpp

@ -12,12 +12,15 @@ class ModbusBlockHost {
zmutex m_modbus_lock = {"m_modbus_lock"};
bool m_dump = false;
Pin_t rePin = PinNull;
ZGPIO txEnGpio;
public:
ModbusBlockHost();
~ModbusBlockHost();
void initialize(UART_HandleTypeDef *huart);
void initialize(UART_HandleTypeDef *huart, Pin_t rePin = PinNull);
void enableDump(bool enable);
bool readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t *regVal, int overtimems);

Loading…
Cancel
Save