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值相关推荐

  1. C语言获取链表的中间值Middle of the Linked List(附完整源码)

    获取链表的中间值Middle of the Linked List node结构体 获取链表的中间值Middle of the Linked List 完整源码(定义,实现,main函数测试) nod ...

  2. STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出

    文章目录 前言 一.I2C总线通信协议 1.I2C总线 2.工作原理 3.I2C特点 4.I2C模式选择 5.软件I2C和硬件I2C 二.串口输出温湿度传感器的数据 1.核心代码分析 2.硬件实操连接 ...

  3. STM32使用I2C和PWM捕获读取MLX90615温度值

    一.MLX90615使用说明          MLX90615是一款红外温度传感器,默认使用SMBus模式,如果需要使用PWM模式则需要修改EEPROM地址中Config Register中的值才能 ...

  4. 如何获取自己键盘上按键的键值(KeyCode)

    文章目录 通过C语言获取部分按键键值 获取字母按键键值 获取方向键键值 键码值汇总 字母和数字的键值 数字键盘上按键的键值 功能键的键值 控制键键值 多媒体按键键值 通过C语言获取部分按键键值 这里提 ...

  5. 【STM32】I2C详解

    00. 目录 文章目录 00. 目录 01. I2C简介 02. I2C主要特性 03. I2C功能说明 04. I2C中断 05. I2C相关寄存器 5.1 I2C 控制寄存器 1 (I2C_CR1 ...

  6. STM32的SPI及IIC

    目录 STM32的SPI及IIC 1.SPI的配置方式 SPI**简介** SPI**特征** SPI**功能描述** SPI通信配置 2.IIC 的配置方式 IIC简介 I2C 初始化结构体详解 I ...

  7. EPSON 自带CCD图像处理包使用举例

    EPSON 机器人可以购买CCD图像处理包选项,CCD图像处理包与SPEL语言高度结合,可以非常快的将项目投入应用,举例说明CCD图像处理包与SPEL的联合使用. EPSON 以视觉序列定义图像处理的 ...

  8. 面经——Linux相关

    摘自:看完这些面试必问的Linux小知识,我保证你面试后会来给我的文章一键三连 作者:万里羊 发布时间:2021-04-09 21:55:23 网址:https://blog.csdn.net/wei ...

  9. 利用STM32制作红外测温仪之软件设计(MLX90614)

    目录 (一)工程目录如图: (二)main函数实现: (三)MLX90614测温代码实现 前面介绍了使用 STM32制作红外测温仪硬件设计,今天来说一下软件的实现,具体的程序,完整的keil代码我已经 ...

  10. Nature子刊:基于静息态EEG功能连接模式识别精神疾病亚型

    <本文同步发布于"脑之说"微信公众号,欢迎搜索关注~~> 摘要:精神疾病在神经生物学和临床表征上存在异质性,基于数据驱动的疾病亚型识别有助于精神疾病的诊断和治疗,本文报 ...

最新文章

  1. NLP专栏|图解 BERT 预训练模型!
  2. Python数据分析与挖掘
  3. HTML5 Boilerplate - 让页面有个好的开始
  4. 看了这一篇,就不用看别的——Java中Object关于锁的的三个方法:wait,notify,notifyAll的作用
  5. 第一台计算机豹电器元件,电气基础和安全知识.ppt
  6. 在Visual Studio 2010 中使用菱形向导对窗口进行布局
  7. 基于QEMU的NVRAM仿真
  8. MySQL 中视图和表的区别以及联系是什么?
  9. 赛尔笔记 | 通用领域条件性知识图谱数据集
  10. CentOS7源码安装Python3
  11. 金蝶k3服务器系统吗,金蝶k3server2008服务器配置
  12. 一个统计文章字数的算法,求改进
  13. 2020年58同城产品笔试题
  14. Microservice Patterns 下载
  15. 2019 ICPC 徐州 H题 Yuuki and a problem
  16. Angular动态绑定HTML文本
  17. virtualbox 启动win7 失败 错误代码 0x80004005
  18. 微信小程序新手留言板
  19. 关于机器学习与人类学习不同点的思考
  20. chroot启动mysql_使用Chroot解决PHP的运行安全问题

热门文章

  1. NPDP第四章 文化、组织与团队
  2. CRM 客户资源管理 (一)
  3. H.266/VVC代码学习38:VTM6.0帧间merge预测(xCheckRDCostMerge2Nx2N)
  4. 佳能打印机清零操作及清零软件
  5. autohotkey循环
  6. Gitea+Jenkins+webhooks-前端自动化部署
  7. 浅析机关单位人力资源内部控制
  8. PSP2000远程无线连接控制电脑
  9. 视易服务器查看硬盘状态,Linux服务器使用Smartmontools检测硬盘状况 | 厘米天空
  10. 腾讯悄悄发布 Linux QQ,版本 2.0 Beta