ESP32学习笔记-CRC16_Modbus校验

写在前面

Modbus一个工业上常用的通讯协议、一种通讯约定。

Modbus协议包括RTU、ASCII、TCP。

单片机与设备进行RS485通讯,大部分使用的是MODBUS-RTU通讯协议。

开发板通过串口发送MODBUS-RTU报文,CRC校验码是一道绕不开的门槛。

安装CRC库

测试代码

#include "CRC16.h"  //加载库

uint8_t arr[6] = { 0x01, 0x06, 0x00, 0x42, 0x01, 0xF4 };  //定义数据包

//创建对象
CRC16 crc(CRC16_MODBUS_POLYNOME,
          CRC16_MODBUS_INITIAL,
          CRC16_MODBUS_XOR_OUT,
          CRC16_MODBUS_REV_IN,
          CRC16_MODBUS_REV_OUT);

void setup() 
{
  //启用串口
  Serial.begin(9600);   

  //加载数据包
  crc.add(arr,sizeof(arr)); 

  //计算
  uint16_t a = crc.calc();

  //拆分
  uint8_t bb[2];
	//高8位
	bb[0] = (a >> 8) & 0XFF;
	//低8位
	bb[1] = a & 0XFF;

  //打印高8位
  Serial.println(bb[0], HEX);
  //打印高8位
  Serial.println(bb[1], HEX);

}

void loop() 
{


}

总结

本示例通过调用CRC库,生成数据包的CRC校验码,并将高低位进行拆分打印。

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32是一种具有低功耗的WiFi和蓝牙双模片,它可广泛应用于物联网项目中。而Arduino是一款开源的电子原型平台,提供简单易用的软件和硬件。在ESP32和Arduino的结合下,可以实现蓝牙OTA(Over-The-Air)功能,即通过无线方式对固件进行升级。 蓝牙OTA是一种方便且灵活的升级方式,不需要使用USB或串口进行连接,使得固件升级更加简便。使用ESP32 Arduino库,我们可以轻松地在ESP32上实现蓝牙OTA功能。 要使用蓝牙OTA功能,首先需要确保ESP32正常连接到蓝牙设备上。可以使用ESP32的BluetoothSerial库来简化蓝牙串口通信。然后,我们需要准备新的固件文件并将其传输到ESP32。可以使用ESP32的WirelessUpdate库,该库提供了OTA功能所需的基本函数和方法。 在传输固件文件期间,我们需要确保蓝牙连接的稳定性和数据传输的完整性。可以在代码中使用一些检查和验证机制,如CRC校验,以确保固件的正确传输。 最后,需要在ESP32上配置OTA服务器的相关参数,如服务器的IP地址和固件文件的位置。一旦配置完成,ESP32就可以通过蓝牙连接到OTA服务器,并根据指令进行固件升级。 总结起来,ESP32 Arduino蓝牙OTA功能是一种方便且灵活的固件升级方式,可以通过无线方式进行升级,而不需要使用USB或串口连接。通过使用ESP32 Arduino库和WirelessUpdate库,我们可以轻松地在ESP32上实现蓝牙OTA功能,并通过蓝牙连接到OTA服务器进行固件升级。这为物联网项目的开发和维护提供了便利和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值