DS18B20的CRC验证算法
DS18B20的CRC验证算法,代码如下
uint8_t crcCalc(void *src, uint8_t size)
{//crc-8/MAXIM//x8 + x5 + x4 + 1//多项式:31//crc初始值:0//计算结果异或值:0//当数组最后一位含有CRC值时,输出0,否则输出计算的CRC/*//Testuint8_t buf[10] = {0xbd, 0x01, 0x4b, 0x46, 0x7f, 0xff, 0x03, 0x10, 0xff};uint8_t buf1[10] = {0xc0, 0x01, 0x4b, 0x46, 0x7f, 0xff, 0x10, 0x10, 0x8f};uint8_t result2 = crcCalc(buf1, 8);uint8_t result3 = crcCalc(buf, 8);printf("result2 is %d %x\r\n", result2, result2); //0x8fprintf("result3 is %d %x\r\n", result3, result3); //0xffuint8_t result2 = crcCalc(buf1, 9);uint8_t result3 = crcCalc(buf, 9);printf("result2 is %d %x\r\n", result2, result2); //0printf("result3 is %d %x\r\n", result3, result3); //0*/uint8_t ret = 0;uint8_t *p;int i = 0;uint8_t pBuf = 0;p = (uint8_t*)src;while(size--){pBuf = *p ++;for ( i = 0; i < 8; i ++ ){if ((ret ^ (pBuf)) & 0x01){ret ^= 0x18;ret >>= 1;ret |= 0x80;}else{ret >>= 1;}pBuf >>= 1;}}return ret;
}
DS18B20的CRC验证算法相关推荐
- DIY单片机STC51控制海尔热水器,带电量计量,走时DS1302,温度DS18B20带CRC,程序全公开
2022.9 海尔热水器50L的数显热水器.控制温度简直是傻X,温差10度才开始加热,比如设定55度,要降到45度才开始加热,太难用了. 另外,自己想再加一点功能,设定不同时间可以有不同温度. 于是进 ...
- 硬件MSB最高位优先、LSB最低位优先的CRC计算原理详细解释和程序,正算反算成功等效,DS18B20和HTU31D传感器CRC
wxleasyland@139.com 2022.7 以前写过<我学习CRC32.CRC16.CRC原理和算法的总结(与WINRAR结果一致)>长篇.经过十几年又忘记了. 这次碰到DS18 ...
- 基于DS18B20的数字温度计的毕业设计
毕业设计论文 题目 基于单片机的DS18B20数字温度计 电话13812281034 系 电子信息工程系 专业 应用电子 姓名 王水浪 班级 电子061 指 ...
- 基于单片机的温度计设计
文末下载完整资料 摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设 ...
- DS18B20 单总线多器件的ROM 搜索, ALARM 检测, CRC 校验 源码实现, 基于 STM32F103
DS18B20使用5V供电, 数据线总线 DQ 经4.7k 上拉电阻到 5V, 连接到 B12 端口, 多个器件共用一条数据总线, (以前以为 ROM 搜索是穷举搜索, 但是 搜索1位需要 读两次 ...
- 单片机18b20c语言程序,AVR单片机控制DS18B20的示例C程序
原标题:AVR单片机控制DS18B20的示例C程序 #include #include #include #include unsigned char data_H, data_L,wendu; un ...
- 全套CRC校验的算法
尊重原作者的辛劳,转载只是为了收藏,以后能用得到,文章转载自:https://blog.csdn.net/cp1300/article/details/51443350 uint8_t crc4_it ...
- STM32F4 HAL库开发 -- 温度传感器(DS18B20)
参看:<嵌入式-STM32开发指南>第三部分 外设篇 - 第2章 温度传感器DS18B20 这篇文章讲的非常详细了. 一.简介 1.概述 DS18B20 是 DALLAS 最新单线数字温度 ...
- 【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取
目录 硬知识 DS18B20介绍 时序 初始化时序 写时序 读时序 命令 ROM 操作命令 ROM 搜索举例 存贮器操作命令 示例程序 DS18B20.c DS18B20.h 测试程序 定时器中断服务 ...
最新文章
- 23个CVPR 2020收录的新数据集,都在这里了!
- JS break语句和continue语句
- Retrofit2.0+ .Net MVC4(WebApi) 上传多张图片
- 【自动驾驶】21.左手坐标系和右手坐标系
- [转载].NET平台微服务项目汇集
- python历史5分钟数据_python每5分钟从kafka中提取数据的例子
- Hibernate征途(三)之CRUD
- Speaking of the impact of the epidemic
- bzoj 3436: 小K的农场(差分约束)
- 微软2012年突破重围 主攻Windows Phone
- python语言程序设计期末试卷_Python语言程序设计17182试题题目及答案,课程2020最新期末考试题库,章节测验答案...
- 做量化投研必须掌握的三大基本模型理论
- 软件无线电原理深入解析
- cordova 修改app名称和图标
- 移动硬盘打不开(不用格式化)修复方法
- 阿里巴巴icon font导入CSS
- html横幅设置,如何控制HTML横幅的宽度和高度?
- Can I debug relocated code at source-level with DS-5 Debugger?
- N-Tiers使用ObjectDataSouce如何自己处理中间层传回的错误讯息
- 经营报表-FineReport配置Oracle外接数据库(2)