Modbus

Freemodbus主从库

Freemodbus 简介 Freemodbus 是一款开源的 Modbus 协议栈,由armink大神移植。同时支持主机和从机的功能。 FreeModbus 主机源码是开源的,这使得在嵌入式产品中实现Modbus主机功能变得简单。 特性 新增加的主机源码与原有从机的风格及接口保持一致 支持主机与从机在同一协议栈运行 支持实时操作系统及裸机移植 为应用提供多种请求模式,可以选择阻塞还是非阻塞模式 支持所有常用的Modbus方法 文件结构 源文件 描述 FreeModbus/modbus/mb.c Modbus从机设置及轮询接口 FreeModbus/modbus/mb_m.c Modbus主机设置及轮询接口 FreeModbus/modbus/rtu/mbrtu.c 从机RTU模式设置 FreeModbus/modbus/rtu/mbrtu_m.c 主机RTU模式设置 FreeModbus/port/portserial.c 从机串口移植 FreeModbus/port/portserial_m.c 主机串口移植 FreeModbus/port/user_mb_app.c 从机数据缓冲区 FreeModbus/port/user_mb_app_m.c 主机数据缓冲区 数据缓冲区 数据缓冲区定义在 user_mb_app_m.c 文件中,共4种数据类型: 线圈(Coils) 离散输入(Discrete Inputs) 保持寄存器(Holding Registers) 输入寄存器(Input Registers) API详解 写单个保持寄存器 eMBMasterReqWriteHoldingRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usRegData, LONG lTimeOut ); 读多个保持寄存器 eMBMasterReqReadHoldingRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usNRegs, LONG lTimeOut ); 读输入寄存器 eMBMasterReqReadInputRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usNRegs, LONG lTimeOut ); 返回值说明 返回值 描述 MB_MRE_NO_ERR 正常 MB_MRE_NO_REG 寄存器地址出错 MB_MRE_TIMEDOUT 响应超时 MB_MASTER_BUSY 主机忙 获取方式 GitHub: https://github.com/RT-Thread-packages/freemodbus

September 10, 2024 · 1 min · Embedded Engineer
通信

SPI通信协议深度解析

SPI(Serial Peripheral Interface)是一种广泛应用的高速、全双工、同步串行通信协议。本质上是主从结构的总线协议,适用于MCU与各种外设间的短距离高速通信。 SPI协议基础 硬件连接 SPI通信需要四根信号线: 信号 全称 方向 说明 SCLK Serial Clock Master→Slave 时钟信号,由主机产生 MOSI Master Out Slave In Master→Slave 主机发送数据 MISO Master In Slave Out Slave→Master 主机接收数据 CS/SS Chip Select / Slave Select Master→Slave 片选信号,选择通信的从设备 MCU (Master) Slave Device ========== ============= +-------------+ +-------------+ | SCLK|------------->|SCLK | | MOSI|------------->|MOSI | | MISO|<-------------|MISO | | CS |------------->|CS | +-------------+ +-------------+ 多从设备连接 MCU (Master) ========== +---------------+ | SCLK|-----------------------------------+ | MOSI|-----------------------------------+ | MISO|<----------------------------------+ | CS0 |-------------------+ | | CS1 |--------------------------+ | | CS2 |-----------------------------+ | +---------------+ | | | | | | | | v v v v v v +-----+-----+-----+ +-----+-----+-----+ | CS0 | CS1 | CS2 | | SS0 | SS1 | SS2 | +-----+-----+-----+ +-----+-----+-----+ 独立片选模式:每从设备独占一个CS引脚,最多可连接n个从设备 级联模式:多个从设备共享同一CS,数据线串联 SPI工作模式 SPI有四种工作模式,由时钟极性(CPOL)和时钟相位(CPHA)共同决定: ...

March 25, 2024 · 7 min · Embedded Engineer