123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #ifndef _M_MODBUS_H_
- #define _M_MODBUS_H_
-
- #include "stm32f2xx.h"
- #include "mmodbusConfig.h"
- #include <stdbool.h>
- #include <string.h>
- #include <stdio.h>
- #include <stdint.h>
- #include "ucos_ii.h"
- #if _MMODBUS_FREERTOS == 1
- #include "cmsis_os.h"
- #define mmodbus_delay(x) osDelay(x)
- #else
- #define mmodbus_delay(x) OSTimeDly(x)
- #endif
- typedef enum
- {
- MModbusCMD_ReadCoilStatus = 1,
- MModbusCMD_ReadDiscreteInputs = 2,
- MModbusCMD_ReadHoldingRegisters = 3,
- MModbusCMD_ReadInputRegisters = 4,
- MModbusCMD_WriteSingleCoil = 5,
- MModbusCMD_WriteSingleRegister = 6,
- MModbusCMD_WriteMultipleCoils = 15,
- MModbusCMD_WriteMultipleRegisters = 16
-
- }MModbusCMD_t;
- typedef enum
- {
- MModBus_16bitOrder_AB=1,
- MModBus_16bitOrder_BA=2,
-
- }MModBus_16bitOrder_t;
- typedef enum
- {
- MModBus_32bitOrder_ABCD = 0,
- MModBus_32bitOrder_DCBA,
- MModBus_32bitOrder_BADC,
- MModBus_32bitOrder_CDAB,
-
- }MModBus_32bitOrder_t;
- typedef struct
- {
- uint16_t rxIndex;
- uint8_t rxBuf[_MMODBUS_RXSIZE];
- uint32_t rxTime;
- uint8_t txBusy;
- uint32_t timeout;
- MModBus_16bitOrder_t byteOrder16;
- MModBus_32bitOrder_t byteOrder32;
- uint8_t done;
- #if (_MMODBUS_TXDMA == 1)
- uint8_t txDmaDone;
- #endif
-
- }MModBus_t;
- void mmodbus_callback(void);
- void mmodbus_callback_txDMA(void);
- bool mmodbus_init(uint32_t setTimeout);
- void mmodbus_set16bitOrder(MModBus_16bitOrder_t MModBus_16bitOrder_);
- void mmodbus_set32bitOrder(MModBus_32bitOrder_t MModBus_32bitOrder_);
- bool mmodbus_readCoil(uint8_t slaveAddress, uint16_t number, uint8_t *data);
- bool mmodbus_readCoils(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint8_t *data);
- bool mmodbus_readDiscreteInput(uint8_t slaveAddress, uint16_t number, uint8_t *data);
- bool mmodbus_readDiscreteInputs(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint8_t *data);
- bool mmodbus_readInputRegister32f(uint8_t slaveAddress, uint16_t number, float *data);
- bool mmodbus_readInputRegisters32f(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, float *data);
- bool mmodbus_readInputRegister32i(uint8_t slaveAddress, uint16_t number, uint32_t *data);
- bool mmodbus_readInputRegisters32i(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint32_t *data);
- bool mmodbus_readInputRegister16i(uint8_t slaveAddress, uint16_t number, uint16_t *data);
- bool mmodbus_readInputRegisters16i(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint16_t *data);
- bool mmodbus_readHoldingRegister32f(uint8_t slaveAddress, uint16_t number, float *data);
- bool mmodbus_readHoldingRegisters32f(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, float *data);
- bool mmodbus_readHoldingRegister32i(uint8_t slaveAddress, uint16_t number, uint32_t *data);
- bool mmodbus_readHoldingRegisters32i(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint32_t *data);
- bool mmodbus_readHoldingRegister16i(uint8_t slaveAddress, uint16_t number, uint16_t *data);
- bool mmodbus_readHoldingRegisters16i(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint16_t *data);
- bool mmodbus_writeCoil(uint8_t slaveAddress, uint16_t number, uint8_t data);
- bool mmodbus_writeHoldingRegister16i(uint8_t slaveAddress, uint16_t number, uint16_t data);
- bool mmodbus_writeHoldingRegisters16i(uint8_t slaveAddress, uint16_t startnumber, uint16_t length, uint16_t *data);
- uint16_t mmodbus_crc16(const uint8_t *nData, uint16_t wLength);
- #endif
|