c语言获取pmbus之pec值
1.c语言获取pmbus pec值方法
#include <stdio.h>
#include <string.h>unsigned char _psu_crc8(unsigned char initial,unsigned char *data, int size)
{unsigned char crc = initial;unsigned char poly = 0x07;int bit;while (size--){crc ^= *data++;for (bit = 0; bit < 8; bit++){if (crc & 0x80){crc = (crc << 1) ^ poly;}else{crc <<= 1;}}}return crc;
}unsigned char psu_check_frame(unsigned char slave_addr,unsigned char reg,unsigned char rw_flag,unsigned char *data,unsigned int len)
{unsigned char crc8_val = 0;
#define CRC8_READ 0
#define CRC8_WRITE 1unsigned char tmp[3];if(rw_flag == CRC8_READ){tmp[0] = (slave_addr<<1);tmp[1] = reg;tmp[2] = ((slave_addr<<1) | 1);crc8_val = _psu_crc8(0,tmp,3);}else{tmp[0] = (slave_addr<<1); crc8_val = _psu_crc8(0,tmp,1); }crc8_val = _psu_crc8(crc8_val,data,len); return crc8_val;
}int main()
{unsigned char WR_BUF[64];unsigned char WR_Count;unsigned char SlaveAddr = (0xb0 >> 1);unsigned char registerval = 0x4f;WR_Count = 4;WR_BUF[0] = registerval; //registerWR_BUF[1] = 0x74;WR_BUF[2] = 0x00;WR_BUF[3] = psu_check_frame(SlaveAddr,registerval,1,WR_BUF,WR_Count-1);printf("WR_BUF[3]:0x%0x\r\n",WR_BUF[3]);return 0;
}
以上代码片段中,WR_BUF[1]
与WR_BUF[2]
是需要向寄存器写的数据值。WR_BUF[3]
也就是最后的crc8(pec)结果。
可以从网站:
网站1 或者 网站2检验代码的正确性。
c语言获取pmbus之pec值相关推荐
- C语言获取链表的中间值Middle of the Linked List(附完整源码)
获取链表的中间值Middle of the Linked List node结构体 获取链表的中间值Middle of the Linked List 完整源码(定义,实现,main函数测试) nod ...
- STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出
文章目录 前言 一.I2C总线通信协议 1.I2C总线 2.工作原理 3.I2C特点 4.I2C模式选择 5.软件I2C和硬件I2C 二.串口输出温湿度传感器的数据 1.核心代码分析 2.硬件实操连接 ...
- STM32使用I2C和PWM捕获读取MLX90615温度值
一.MLX90615使用说明 MLX90615是一款红外温度传感器,默认使用SMBus模式,如果需要使用PWM模式则需要修改EEPROM地址中Config Register中的值才能 ...
- 如何获取自己键盘上按键的键值(KeyCode)
文章目录 通过C语言获取部分按键键值 获取字母按键键值 获取方向键键值 键码值汇总 字母和数字的键值 数字键盘上按键的键值 功能键的键值 控制键键值 多媒体按键键值 通过C语言获取部分按键键值 这里提 ...
- 【STM32】I2C详解
00. 目录 文章目录 00. 目录 01. I2C简介 02. I2C主要特性 03. I2C功能说明 04. I2C中断 05. I2C相关寄存器 5.1 I2C 控制寄存器 1 (I2C_CR1 ...
- STM32的SPI及IIC
目录 STM32的SPI及IIC 1.SPI的配置方式 SPI**简介** SPI**特征** SPI**功能描述** SPI通信配置 2.IIC 的配置方式 IIC简介 I2C 初始化结构体详解 I ...
- EPSON 自带CCD图像处理包使用举例
EPSON 机器人可以购买CCD图像处理包选项,CCD图像处理包与SPEL语言高度结合,可以非常快的将项目投入应用,举例说明CCD图像处理包与SPEL的联合使用. EPSON 以视觉序列定义图像处理的 ...
- 面经——Linux相关
摘自:看完这些面试必问的Linux小知识,我保证你面试后会来给我的文章一键三连 作者:万里羊 发布时间:2021-04-09 21:55:23 网址:https://blog.csdn.net/wei ...
- 利用STM32制作红外测温仪之软件设计(MLX90614)
目录 (一)工程目录如图: (二)main函数实现: (三)MLX90614测温代码实现 前面介绍了使用 STM32制作红外测温仪硬件设计,今天来说一下软件的实现,具体的程序,完整的keil代码我已经 ...
- Nature子刊:基于静息态EEG功能连接模式识别精神疾病亚型
<本文同步发布于"脑之说"微信公众号,欢迎搜索关注~~> 摘要:精神疾病在神经生物学和临床表征上存在异质性,基于数据驱动的疾病亚型识别有助于精神疾病的诊断和治疗,本文报 ...
最新文章
- NLP专栏|图解 BERT 预训练模型!
- Python数据分析与挖掘
- HTML5 Boilerplate - 让页面有个好的开始
- 看了这一篇,就不用看别的——Java中Object关于锁的的三个方法:wait,notify,notifyAll的作用
- 第一台计算机豹电器元件,电气基础和安全知识.ppt
- 在Visual Studio 2010 中使用菱形向导对窗口进行布局
- 基于QEMU的NVRAM仿真
- MySQL 中视图和表的区别以及联系是什么?
- 赛尔笔记 | 通用领域条件性知识图谱数据集
- CentOS7源码安装Python3
- 金蝶k3服务器系统吗,金蝶k3server2008服务器配置
- 一个统计文章字数的算法,求改进
- 2020年58同城产品笔试题
- Microservice Patterns 下载
- 2019 ICPC 徐州 H题 Yuuki and a problem
- Angular动态绑定HTML文本
- virtualbox 启动win7 失败 错误代码 0x80004005
- 微信小程序新手留言板
- 关于机器学习与人类学习不同点的思考
- chroot启动mysql_使用Chroot解决PHP的运行安全问题
热门文章
- NPDP第四章 文化、组织与团队
- CRM 客户资源管理 (一)
- H.266/VVC代码学习38:VTM6.0帧间merge预测(xCheckRDCostMerge2Nx2N)
- 佳能打印机清零操作及清零软件
- autohotkey循环
- Gitea+Jenkins+webhooks-前端自动化部署
- 浅析机关单位人力资源内部控制
- PSP2000远程无线连接控制电脑
- 视易服务器查看硬盘状态,Linux服务器使用Smartmontools检测硬盘状况 | 厘米天空
- 腾讯悄悄发布 Linux QQ,版本 2.0 Beta