在AVP28335(兼容德州仪器TMS320-28335) 上实现ModbusSlaveRTU-485源码及注释。

dsp28335 sci中用fifo完成485收发通信_嵌入式硬件通信接口协议-UART(一)协议基础... 文章首发于同名微信公众号:DigCore欢迎关注同名微信公众号:DigCore,及时获取最新技术博文。原文链接:https://mp.weixin.qq.com/s/Qmk0VEsPzlwYGhum42GdCQ(说明:此处的文章从微信公众号拷贝而来,图片或者排版上可能存在一定的瑕疵,欢迎点击原文链接阅读)一、 简介UART,全称UniversalAsynchrONous Receiver/Tran... 阅读详情

希望能给感兴趣的小伙伴以帮助。(这个程序是根据CSDN中小伙伴的程序修改,在原来文件中发现很多坑 ,现在发现最主要的几个坑如下。

坑1:传输数据只能传输200个无符号<200的无符号整数;

坑2:3,4区数据寄存器只能放置<=400(dec)的数据,不能传输最大数为65535(dec);

坑3:传输数据时,Master一般要求加CRC16校验码的2个字节,原来源代码中故意少发两个字节,导致测试软件接收不到。

坑4:没有针对IEEE754 32位 浮点数表式方法的处理。

为了不让后面的小伙伴在这里在花费时间研究,我把已知的坑给填了,并源码放在这里。

呵呵,先给出2个截图,用来吹嘘一下这个程序真的可以用。

第一部分:截图看结果,真的可以用。

1、输入寄存器截图

2、保持寄存器截图

先给出两张图 每张图左边图是 AVP28335 系统的Slave 端数据,右边是Modscan32测试软件数据。 

第一张图是3区输入寄存器数据;第二张图是4区 保持寄存器数据。

地址:=1 显示数据 长度 100

下面将给出部署方法,有点困了,明天再说吧。:)

第二部分、此程序部署前提条件:

1、使用芯片德州仪器或湖南进芯28335的SCIC-串口;(SCIA SCIB 基本相同)

2、使用了收发控制管脚 GPIO61;(其实不使用更好处理)

3、外围电路采用 Max485芯片;(电气原理图省略,典型应用图纸图纸,算了,还是给一张图吧)

4、编译环境CCS15 芯片28335 编译器6.0.1

第三部分、编程,主要文件及部署方法:

1、创建头文件,该文件是Modbus 485 Slave 数据结构体文件:

文件名:MODBUS.h

文件内容:


#ifndef INCLUDE_MODBUS_H_
#define INCLUDE_MODBUS_H_

//SCIC-MODBUS 485 应用数据结构体

//MODBUS数据结构
typedef enum {
    MB_FUNC_READ_COIL = 1,
    MB_FUNC_READ_INPUT,
    MB_FUNC_READ_HOLDINGREGISTERS,
    MB_FUNC_READ_INPUTREGISTERS,
    MB_FUNC_FORCE_COIL,
    MB_FUNC_WRITE_HOLDINGREGISTER,
    MB_FUNC_FORCE_NCOILS = 15,
    MB_FUNC_WRITE_NREGISTERS = 16
} ModbusFunctionCode;

//MODBUS错误数据结构
typedef enum {
    MB_ERROR_ILLEGALFUNC = 1,
    MB_ERROR_ILLEGALADDR,
    MB_ERROR_ILLEGALDATA,
    MB_ERROR_SLVFAILURE,
    MB_ERROR_ACKNOWLEDGE,
    MB_ERROR_SLVBUSY,
    MB_ERROR_NEGACKNOWLEDGE,
    MB_ERROR_MEMPARITY,
    MB_ERROR_GATEWAYPATHUN
} ModbusError;

//状态机常数
typedef enum {
    MB_CREATE,
    MB_START,
    MB_TIMER_T35_WAIT,
    MB_IDLE,
    MB_RECEIVE,
    MB_PROCESS,
    MB_TRANSMIT,
    MB_DESTROY
} ModbusState;

//MODBUS数据结构
typedef struct ModbusData ModbusData;
struct ModbusData {
    Uint16 slaveAddress;
    Uint16 functionCode;
    Uint32 contentIdx;
    Uint32 numofregisters;
    Uint16 content[125];//20
    Uint16 size;
    Uint16 crc;
};

//P3方式互联网找的程序(modbus.c)
extern void SCIC_Modbus_Init(void);

//CoilsMap 数据结构
typedef struct ModbusCoilsMap ModbusCoilsMap;
struct ModbusCoilsMap{
    Uint16   dummy1;
//    Uint16   dummy2;
//    Uint16   dummy3;
//    Uint16   dummy4;
//    Uint16   dummy5;
//    Uint16   dummy6;
//    Uint16   dummy7;
//    Uint16   dummy8;
//    Uint16   dummy9;
//    Uint16   dummy10;
//    Uint16   dummy11;
//    Uint16   dummy12;
//    Uint16   dummy13;
//    Uint16   dummy14;
//    Uint16   dummy15;
//    Uint16   dummy16;
//    Uint16   dummy17;
//    Uint16   dummy18;
//    Uint16   dummy19;
//    Uint16   dummy20;
//    Uint16   dummy21;
//    Uint16   dummy22;
//    Uint16   dummy23;
//    Uint16   dummy24;
//    Uint16   dummy25;
//    Uint16   dummy26;
//    Uint16   dummy27;
//    Uint16   dummy28;
//    Uint16   dummy29;
//    Uint16   dummy30;
//    Uint16   dummy31;
//    Uint16   dummy32;
//    Uint16   dummy33;
//    Uint16   dummy34;
//    Uint16   dummy35;
//    Uint16   dummy36;
//    Uint16   dummy37;
//    Uint16   dummy38;
//    Uint16   dummy39;
//    Uint16   dummy40;
//    Uint16   dummy41;
//    Uint16   dummy42;
//    Uint16   dummy43;
//    Uint16   dummy44;
//    Uint16   dummy45;
//    Uint16   dummy46;
//    Uint16   dummy47;
//    Uint16   dummy48;
//    Uint16   dummy49;
//    Uint16   dummy50;
//    Uint16   dummy51;
//    Uint16   dummy52;
//    Uint16   dummy53;
//    Uint16   dummy54;
//    Uint16   dummy55;
//    Uint16   dummy56;
//    Uint16   dummy57;
//    Uint16   dummy58;
//    Uint16   dummy59;
//    Uint16   dummy60;
//    Uint16   dummy61;
//    Uint16   dummy62;
//    Uint16   dummy63;
//    Uint16   dummy64;
//    Uint16   dummy65;
//    Uint16   dummy66;
//    Uint16   dummy67;
//    Uint16   dummy68;
//    Uint16   dummy69;
//    Uint16   dummy70;
//    Uint16   dummy71;
//    Uint16   dummy72;
//    Uint16   dummy73;
//    Uint16   dummy74;
//    Uint16   dummy75;
//    Uint16   dummy76;
//    Uint16   dummy77;
//    Uint16   dummy78;
//    Uint16   dummy79;
//    Uint16   dummy80;
//    Uint16   dummy81;
//    Uint16   dummy82;
//    Uint16   dummy83;
//    Uint16   dummy84;
//    Uint16   dummy85;
//    Uint16   dummy86;
//    Uint16   dummy87;
//    Uint16   dummy88;
//    Uint16   dummy89;
//    Uint16   dummy90;
//    Uint16   dummy91;
//    Uint16   dummy92;
//    Uint16   dummy93;
//    Uint16   dummy94;
//    Uint16   dummy95;
//    Uint16   dummy96;
//    Uint16   dummy97;
//    Uint16   dummy98;
//    Uint16   dummy99;
//    Uint16   dummy100;
};

//InputsMap 数据结构
typedef struct ModbusInputsMap ModbusInputsMap;
struct ModbusInputsMap{
    Uint16     dummy1;
//    Uint16     dummy2;
//    Uint16     dummy3;
//    Uint16     dummy4;
//    Uint16     dummy5;
//    Uint16     dummy6;
//    Uint16     dummy7;
//    Uint16     dummy8;
//    Uint16     dummy9;
//    Uint16     dummy10;
//    Uint16     dummy11;
//    Uint16     dummy12;
//    Uint16     dummy13;
//    Uint16     dummy14;
//    Uint16     dummy15;
//    Uint16     dummy16;
//    Uint16     dummy17;
//    Uint16     dummy18;
//    Uint16     dummy19;
//    Uint16     dummy20;
//    Uint16     dummy21;
//    Uint16     dummy22;
//    Uint16     dummy23;
//    Uint16     dummy24;
//    Uint16     dummy25;
//    Uint16     dummy26;
//    Uint16     dummy27;
//    Uint16     dummy28;
//    Uint16     dummy29;
//    Uint16     dummy30;
//    Uint16     dummy31;
//    Uint16     dummy32;
//    Uint16     dummy33;
//    Uint16     dummy34;
//    Uint16     dummy35;
//    Uint16     dummy36;
//    Uint16     dummy37;
//    Uint16     dummy38;
//    Uint16     dummy39;
//    Uint16     dummy40;
//    Uint16     dummy41;
//    Uint16     dummy42;
//    Uint16     dummy43;
//    Uint16     dummy44;
//    Uint16     dummy45;
//    Uint16     dummy46;
//    Uint16     dummy47;
//    Uint16     dummy48;
//    Uint16     dummy49;
//    Uint16     dummy50;
//    Uint16     dummy51;
//    Uint16     dummy52;
//    Uint16     dummy53;
//    Uint16     dummy54;
//    Uint16     dummy55;
//    Uint16     dummy56;
//    Uint16     dummy57;
//    Uint16     dummy58;
//    Uint16     dummy59;
//    Uint16     dummy60;
//    Uint16     dummy61;
//    Uint16     dummy62;
//    Uint16     dummy63;
//    Uint16     dummy64;
//    Uint16     dummy65;
//    Uint16     dummy66;
//    Uint16     dummy67;
//    Uint16     dummy68;
//    Uint16     dummy69;
//    Uint16     dummy70;
//    Uint16     dummy71;
//    Uint16     dummy72;
//    Uint16     dummy73;
//    Uint16     dummy74;
//    Uint16     dummy75;
//    Uint16     dummy76;
//    Uint16     dummy77;
//    Uint16     dummy78;
//    Uint16     dummy79;
//    Uint16     dummy80;
//    Uint16     dummy81;
//    Uint16     dummy82;
//    Uint16     dummy83;
//    Uint16     dummy84;
//    Uint16     dummy85;
//    Uint16     dummy86;
//    Uint16     dummy87;
//    Uint16     dummy88;
//    Uint16     dummy89;
//    Uint16     dummy90;
//    Uint16     dummy91;
//    Uint16     dummy92;
//    Uint16     dummy93;
//    Uint16     dummy94;
//    Uint16     dummy95;
//    Uint16     dummy96;
//    Uint16     dummy97;
//    Uint16     dummy98;
//    Uint16     dummy99;
//    Uint16     dummy100;
};

//HoldingRegistersMap数据结构
typedef struct ModbusHoldingRegistersMap ModbusHoldingRegistersMap;
struct ModbusHoldingRegistersMap {
    Uint16  dummy1;
    Uint16  dummy2;
    Uint16  dummy3;
    Uint16  dummy4;
    Uint16  dummy5;
    Uint16  dummy6;
    Uint16  dummy7;
    Uint16  dummy8;
    Uint16  dummy9;
    Uint16  dummy10;
    Uint16  dummy11;
    Uint16  dummy12;
    Uint16  dummy13;
    Uint16  dummy14;
    Uint16  dummy15;
    Uint16  dummy16;
    Uint16  dummy17;
    Uint16  dummy18;
    Uint16  dummy19;
    Uint16  dummy20;
    Uint16  dummy21;
    Uint16  dummy22;
    Uint16  dummy23;
    Uint16  dummy24;
    Uint16  dummy25;
    Uint16  dummy26;
    Uint16  dummy27;
    Uint16  dummy28;
    Uint16  dummy29;
    Uint16  dummy30;
    Uint16  dummy31;
    Uint16  dummy32;
    Uint16  dummy33;
    Uint16  dummy34;
    Uint16  dummy35;
    Uint16  dummy36;
    Uint16  dummy37;
    Uint16  dummy38;
    Uint16  dummy39;
    Uint16  dummy40;
    Uint16  dummy41;
    Uint16  dummy42;
    Uint16  dummy43;
    Uint16  dummy44;
    Uint16  dummy45;
    Uint16  dummy46;
    Uint16  dummy47;
    Uint16  dummy48;
    Uint16  dummy49;
    Uint16  dummy50;
//    Uint16  dummy51;
//    Uint16  dummy52;
//    Uint16  dummy53;
//    Uint16  dummy54;
//    Uint16  dummy55;
//    Uint16  dummy56;
//    Uint16  dummy57;
//    Uint16  dummy58;
//    Uint16  dummy59;
//    Uint16  dummy60;
//    Uint16  dummy61;
//    Uint16  dummy62;
//    Uint16  dummy63;
//    Uint16  dummy64;
//    Uint16  dummy65;
//    Uint16  dummy66;
//    Uint16  dummy67;
//    Uint16  dummy68;
//    Uint16  dummy69;
//    Uint16  dummy70;
//    Uint16  dummy71;
//    Uint16  dummy72;
//    Uint16  dummy73;
//    Uint16  dummy74;
//    Uint16  dummy75;
//    Uint16  dummy76;
//    Uint16  dummy77;
//    Uint16  dummy78;
//    Uint16  dummy79;
//    Uint16  dummy80;
//    Uint16  dummy81;
//    Uint16  dummy82;
//    Uint16  dummy83;
//    Uint16  dummy84;
//    Uint16  dummy85;
//    Uint16  dummy86;
//    Uint16  dummy87;
//    Uint16  dummy88;
//    Uint16  dummy89;
//    Uint16  dummy90;
//    Uint16  dummy91;
//    Uint16  dummy92;
//    Uint16  dummy93;
//    Uint16  dummy94;
//    Uint16  dummy95;
//    Uint16  dummy96;
//    Uint16  dummy97;
//    Uint16  dummy98;
//    Uint16  dummy99;
//    Uint16  dummy100;
};

//InputRegistersMap数据结构
typedef struct ModbusInputRegistersMap ModbusInputRegistersMap;
struct ModbusInputRegistersMap {
    Uint16  dummy1;
    Uint16  dummy2;
    Uint16  dummy3;
    Uint16  dummy4;
    Uint16  dummy5;
    Uint16  dummy6;
    Uint16  dummy7;
    Uint16  dummy8;
    Uint16  dummy9;
    Uint16  dummy10;
    Uint16  dummy11;
    Uint16  dummy12;
    Uint16  dummy13;
    Uint16  dummy14;
    Uint16  dummy15;
    Uint16  dummy16;
    Uint16  dummy17;
    Uint16  dummy18;
    Uint16  dummy19;
    Uint16  dummy20;
    Uint16  dummy21;
    Uint16  dummy22;
    Uint16  dummy23;
    Uint16  dummy24;
    Uint16  dummy25;
    Uint16  dummy26;
    Uint16  dummy27;
    Uint16  dummy28;
    Uint16  dummy29;
    Uint16  dummy30;
    Uint16  dummy31;
    Uint16  dummy32;
    Uint16  dummy33;
    Uint16  dummy34;
    Uint16  dummy35;
    Uint16  dummy36;
    Uint16  dummy37;
    Uint16  dummy38;
    Uint16  dummy39;
    Uint16  dummy40;
    Uint16  dummy41;
    Uint16  dummy42;
    Uint16  dummy43;
    Uint16  dummy44;
    Uint16  dummy45;
    Uint16  dummy46;
    Uint16  dummy47;
    Uint16  dummy48;
    Uint16  dummy49;
    Uint16  dummy50;
    Uint16  dummy51;
    Uint16  dummy52;
    Uint16  dummy53;
    Uint16  dummy54;
    Uint16  dummy55;
    Uint16  dummy56;
    Uint16  dummy57;
    Uint16  dummy58;
    Uint16  dummy59;
    Uint16  dummy60;
    Uint16  dummy61;
    Uint16  dummy62;
    Uint16  dummy63;
    Uint16  dummy64;
    Uint16  dummy65;
    Uint16  dummy66;
    Uint16  dummy67;
    Uint16  dummy68;
    Uint16  dummy69;
    Uint16  dummy70;
    Uint16  dummy71;
    Uint16  dummy72;
    Uint16  dummy73;
    Uint16  dummy74;
    Uint16  dummy75;
    Uint16  dummy76;
    Uint16  dummy77;
    Uint16  dummy78;
    Uint16  dummy79;
    Uint16  dummy80;
    Uint16  dummy81;
    Uint16  dummy82;
    Uint16  dummy83;
    Uint16  dummy84;
    Uint16  dummy85;
    Uint16  dummy86;
    Uint16  dummy87;
    Uint16  dummy88;
    Uint16  dummy89;
    Uint16  dummy90;
    Uint16  dummy91;
    Uint16  dummy92;
    Uint16  dummy93;
    Uint16  dummy94;
    Uint16  dummy95;
    Uint16  dummy96;
    Uint16  dummy97;
    Uint16  dummy98;
    Uint16  dummy99;
    Uint16  dummy100;
    Uint16  dummy101;
    Uint16  dummy102;
    Uint16  dummy103;
    Uint16  dummy104;
    Uint16  dummy105;
    Uint16  dummy106;
    Uint16  dummy107;
    Uint16  dummy108;
    Uint16  dummy109;
    Uint16  dummy110;
    Uint16  dummy111;
    Uint16  dummy112;
    Uint16  dummy113;
    Uint16  dummy114;
    Uint16  dummy115;
    Uint16  dummy116;
    Uint16  dummy117;
    Uint16  dummy118;
    Uint16  dummy119;
    Uint16  dummy120;
    Uint16  dummy121;
    Uint16  dummy122;
    Uint16  dummy123;
    Uint16  dummy124;
    Uint16  dummy125;
    Uint16  dummy126;
    Uint16  dummy127;
    Uint16  dummy128;
    Uint16  dummy129;
    Uint16  dummy130;
    Uint16  dummy131;
    Uint16  dummy132;
    Uint16  dummy133;
    Uint16  dummy134;
    Uint16  dummy135;
    Uint16  dummy136;
    Uint16  dummy137;
    Uint16  dummy138;
    Uint16  dummy139;
    Uint16  dummy140;
    Uint16  dummy141;
    Uint16  dummy142;
    Uint16  dummy143;
    Uint16  dummy144;
    Uint16  dummy145;
    Uint16  dummy146;
    Uint16  dummy147;
    Uint16  dummy148;
    Uint16  dumm1y49;
    Uint16  dummy150;
    Uint16  dummy151;
    Uint16  dummy152;
    Uint16  dummy153;
    Uint16  dummy154;
    Uint16  dummy155;
    Uint16  dummy156;
    Uint16  dummy157;
    Uint16  dummy158;
    Uint16  dummy159;
    Uint16  dummy160;
    Uint16  dummy161;
    Uint16  dummy162;
    Uint16  dummy163;
    Uint16  dummy164;
    Uint16  dummy165;
    Uint16  dummy166;
    Uint16  dummy167;
    Uint16  dummy168;
    Uint16  dummy169;
    Uint16  dummy170;
    Uint16  dummy171;
    Uint16  dummy172;
    Uint16  dummy173;
    Uint16  dummy174;
    Uint16  dummy175;
    Uint16  dummy176;
    Uint16  dummy177;
    Uint16  dummy178;
    Uint16  dummy179;
    Uint16  dummy180;
    Uint16  dummy181;
    Uint16  dummy182;
    Uint16  dummy183;
    Uint16  dummy184;
    Uint16  dummy185;
    Uint16  dummy186;
    Uint16  dummy187;
    Uint16  dummy188;
    Uint16  dummy189;
    Uint16  dummy190;
    Uint16  dummy191;
    Uint16  dummy192;
    Uint16  dummy193;
    Uint16  dummy194;
    Uint16  dummy195;
    Uint16  dummy196;
    Uint16  dummy197;
    Uint16  dummy198;
    Uint16  dummy199;
    Uint16  dummy200;
    Uint16  dummy201;
    Uint16  dummy202;
    Uint16  dummy203;
    Uint16  dummy204;
    Uint16  dummy205;
    Uint16  dummy206;
    Uint16  dummy207;
    Uint16  dummy208;
    Uint16  dummy209;
    Uint16  dummy210;
    Uint16  dummy211;
    Uint16  dummy212;
    Uint16  dummy213;
    Uint16  dummy214;
    Uint16  dummy215;
    Uint16  dummy216;
    Uint16  dummy217;
    Uint16  dummy218;
    Uint16  dummy219;
    Uint16  dummy220;
    Uint16  dummy221;
    Uint16  dummy222;
    Uint16  dummy223;
    Uint16  dummy224;
    Uint16  dummy225;
    Uint16  dummy226;
    Uint16  dummy227;
    Uint16  dummy228;
    Uint16  dummy229;
    Uint16  dummy230;
    Uint16  dummy231;
    Uint16  dummy232;
    Uint16  dummy233;
    Uint16  dummy234;
    Uint16  dummy235;
    Uint16  dummy236;
    Uint16  dummy237;
    Uint16  dummy238;
    Uint16  dummy239;
    Uint16  dummy240;
    Uint16  dummy241;
    Uint16  dummy242;
    Uint16  dummy243;
    Uint16  dummy244;
    Uint16  dummy245;
    Uint16  dummy246;
    Uint16  dummy247;
    Uint16  dummy248;
    Uint16  dummy249;
    Uint16  dummy250;
};

//MODBUS Slave数据结构
typedef struct ModbusSlaveStruc{
    ModbusState state;
    Uint16 rdata[51];       //30
    Uint16 sdata[251];      //100 //250
    Uint16 recvlen;
    Uint16 sendlen;
    ModbusCoilsMap coils,*pcoils;
    ModbusInputsMap inputs,*pinputs;
    ModbusHoldingRegistersMap holdingRegisters,*pholdingRegisters;
    ModbusInputRegistersMap inputRegisters,*pinputRegisters;
}MBSLSTRU;

#endif /* INCLUDE_MODBUS_H_ */

该文件定义了3个枚举数据,5个结构数据。 主要完成 MODBUS SLAVE 的帧结构,功能码01,02 ,03,04 数据结构,错误码帧,状态机数据结构。 一般情况创建项目后放在头文件目录中,便于引用。 

2,创建Modbus Slave RTU 源文件

MODBUS_COM.c

#include <DSP2833x_Device.h>
#include <DSP2833x_Examples.h>
#include <MODBUS.h>                                                            

//MODBUS SLAVE 数据结构体头文件
#include <string.h>                                                   //用于清零数组

extern void receieve_handler(MBSLSTRU *pModbusSlave);                 //数据接收处理
extern Uint16 CRC16 (Uint16 *nData, Uint16 wLength);                  //CRC16校验函数
extern uint32_t floatToIEEE754_H(float value);             //32位浮点数处理函数高16位
extern uint32_t floatToIEEE754_L(float value);             //32位浮点数处理函数低16位
//extern float ieee754ToFloat(uint32_t ieee);

//SCIC通信用
//#define ModbusSlaveAddress 1         //地址,本程序段用MOD_CODE替换,便于更改地址                                                     //MODBUS SLAVE RTU 地址
#define bufferdepth 0x10 //10     //20                                                  //BUFFER 发送起始深度 (0x10 = 16 字节)

//CycleQueue ScicRecvMsgQueue;
//struct ScicRecvMsgQueueStruc ScicRecvMsgBox[ScicRecvMsgLen], *pScicRecvMsgQueueStruc;

MBSLSTRU public_struc_modbus;                         //MODBUS SLAVE 数据结构体变量

U
TMS320F28335实现Modbus RTU通信完整入门项目 TMS320F28335 基于 C28x 内核,具备高性能浮点运算能力,主频可达 150MHz,支持单精度浮点运算,适用于实时控制与复杂算法处理。芯片集成了丰富的外设资源,包括:18 通道 PWM 输出,适用于电机控制16 通道 12 位 ADC,支持多路模拟信号采集两个 SCI(串口)接口,支持 Modbus RTU 等通信协议SPI、I2C、CAN 等多种通信接口52KB RAM + 256KB Flash 存储空间,支持程序本地运行。 阅读详情

相关推荐

TMS320F28335微控制器上的Modbus RTU实现

Modbus RTU(Remote Terminal Unit)是一种在串行通信中广泛使用的协议,主要应用于工业环境。它基于主从架构,允许主机与一个或多个从设备进行数据交换。Modbus RTU以其简洁性和高效性,成为过程控制领域内一个非常受欢迎的通信协议。TMS320F28335微控制器是德州仪器(Texas Instruments)推出的一款高性能的32位数字信号控制器(DSC),广泛应用于工业控制、电机驱动等领域。本节将深入探讨其硬件架构的两个主要方面:CPU核心与内存结构、外围设备和接口特性。

weixin_29607511的博客 1168

28335modbus.zip

很好28335modbus学习例程,适合初学DSP28335 modbusRTU 485通讯的人员 作为入门教材很好,增加一部分内容就可以作为实际应用

dsp28335 rs485 FIFO接收

dsp28335 rs485 FIFO接收

基于TMS320F28335的modbus主机

在TMS320F28335的硬件平台上实现的Modbus的主机协议栈.

很好28335modbus学习例程,适合初学DSP28335 modbusRTU 48

很好28335modbus学习例程,适合初学DSP28335 modbusRTU 485通讯的人员 作为入门教材很好,增加一部分内容就可以作为实际应用2

modbus_CCS开发modbus_dsp_dspmodbus_DSP28335modbus_

modbus dsp28335代码实现 03 16协议实现

DSP28335-485收发程序配置.rar_485_DSP28335-485_dsp28335_dsp28335 485_fi

DSP28335 485通信配置,采用FIFO缓冲,通过中断实现收发

Example35_DSP2833x_RS485_DSP与RS485通信_dsp28335_dsp;rs485_DSP28335

利用研旭DSP28335与上位机实现rs485通信,适合初学dsp的人使用学习

智驾域控制器硬件架构:从接口丛林到算力核心的工程解码

本文深入解析了智驾域控制器硬件架构的设计挑战与工程实践。面对复杂的接口丛林,文章详细探讨了如何高效融合摄像头、雷达等多源传感器数据,并构建以多SOC为核心的强大算力平台。同时,文章强调了电源、时钟、散热等最小系统及车规级可靠性设计的关键作用,为工程师提供了从接口驯服到算力核心协同的完整硬件解码指南。

happy2的博客 475

mstar PQ软件修改方法

1.修改ADC的值 Static code APIXC_AdcGainOffsetSetting tADCSetting[ADC_SET_NUMS]= #define INIT_ADC_RGB_RED_GAIN               0x1000 #define INIT_ADC_RGB_GREEN_GAIN           0x1000 #define INIT_ADC_RGB

qq_18810259的专栏 2563

PD虚拟机安装CentOS7后必做的Parallels Tools配置指南(附常见错误解决)

本文详细指导在Mac的Parallels Desktop虚拟机中安装CentOS 7后如何高效配置Parallels Tools,包括环境准备、镜像挂载、依赖问题解决及性能优化。特别针对常见错误如挂载失败、依赖缺失等提供实用解决方案,帮助用户实现主机与虚拟机间的无缝交互和显示优化。

weixin_29288313的博客 297

华为2022硬件逻辑笔试题

单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说

weixin_44072819的博客 1万+

以GD32F103C8T6为例的核心板原理图PCB绘制学习笔记简单总结

重点在supplier part是立创商城的编号,可以搜到。

2301_80397661的博客 3257

LabVIEW状态机实战:用STM32+DHT11搭建温湿度监测系统(附完整VI源码)

本文详细介绍了如何利用LabVIEW状态机模式与STM32微控制器、DHT11温湿度传感器构建温湿度监测系统。通过硬件选型、状态机设计、LabVIEW程序实现及系统优化等环节,提供了一套完整的解决方案,并附有VI源码,助力开发者快速实现嵌入式温湿度监测应用。

weixin_42549723的博客 514

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 255

拆开它的“身体”,看懂割草机器人的五层系统架构

这篇文章深入解析了智能割草机器人的五层系统架构。机械层采用铝合金一体式车架和独立悬挂刀盘系统;电子层配备双处理器和多种传感器;固件层实现毫秒级安全响应;算法层融合多种定位技术实现厘米级精度;云服务层提供远程管理和AI优化。这套系统通过精密协同实现了智能割草的全流程闭环,展现了从机械结构到云端智能的完整技术栈,为户外智能设备设立了新的技术标杆。

智能硬件研发,欢迎交流 185

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 随便聊一下 显控科技 控制屏 通过 RS485 接口 上位机 通讯 说明
下一篇: 看了2025的CSDN首页我笑出了猪声:)))
FOOLCODE
博客等级 码龄19年 180粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值