一、写配置寄存器步骤及函数封装

写配置寄存器

1.把CSB拉低至低电平;

2.发送WRCFG命令(0x00 0x01)及其PEC(0x3D 0x6E);

3.发送配置寄存器的CFGR0字节,然后继续发送CFGR1....CFGR5;

4.发送CFGR0....CFGR5的PEC校验码;

5.把CSB拉至高电平,数据在CSB的上升沿上被锁定至所有的器件中。

配置寄存器封装函数

void LTC6804_wrcfg(Uint8 total_ic,Uint8 config[6]){

const Uint8 BYTES_IN_REG = 6;

const Uint8 CMD_LEN = 4+(8*total_ic);

Uint8 cmd[12];

Uint16 cfg_pec;

int i;

Uint8 cmd_index; //命令计数器

Uint8 current_byte;

//1

cmd[0] = 0x00;

cmd[1] = 0x01;

cmd[2] = 0x3d;

cmd[3] = 0x6e;

//2

cmd_index = 4;

for(current_byte = 0; current_byte < BYTES_IN_REG; current_byte++){ // 对CFGR寄存器中的6个字节中的每一个执行// current_byte是字节计数

cmd[cmd_index] = config[current_byte]; //将配置数据添加到要发送的阵列

cmd_index = cmd_index + 1;

}

//3

cfg_pec = (Uint16)pec15_calc(BYTES_IN_REG, &config[0]); // 计算每个IC配置寄存器数据的PEC

cmd[cmd_index] = (Uint8)(cfg_pec >> 8);

cmd[cmd_index + 1] = (Uint8)cfg_pec;

cmd_index = cmd_index + 2;

wakeup_idle (); //这将确保LTC6804 isoSPI端口处于唤醒状态。可以删除此命令。

output_low(LTC6804_CS); //将片选(CSB)拉低,写入配置信息

for(i = 0;i<12;i++){

SPIAData(cmd[i]);

}

output_high(LTC6804_CS); //将片选(CSB)拉低,写入配置信息

}

二、读配置寄存器步骤及函数封装

读配置寄存器

1.把CSB拉低至低电平;

2.发送RDCFG命令(0x00 0x02)及其PEC(0x2b 0x0A);

3.发送无效字节(0xFF),回读配置信息

4.把CSB拉至高电平,数据在CSB的上升沿上被锁定至所有的器件中。

配置寄存器封装函数

int LTC6804_rdcfg(Uint8 total_ic, Uint8 r_config[8]){

const Uint8 BYTES_IN_REG = 8;

Uint8 cmd[4];

Uint8 rx_data[8];

int pec_error = 0;

Uint16 data_pec;

int i;

Uint16 received_pec;

Uint8 current_byte;

//1

cmd[0] = 0x00;

cmd[1] = 0x02;

cmd[2] = 0x2b;

cmd[3] = 0x0A;

//2

wakeup_idle (); //这将确保LTC6804 isoSPI端口处于唤醒状态。 可以删除此命令。

//3

output_low(LTC6804_CS); //将配置信息写入

for(i = 0;i<4;i++){

SPIAData(cmd[i]);

}

for(i = 0;i<8;i++){

rx_data[i] = SPIAData(0xFF);

}

output_high(LTC6804_CS);

for (current_byte = 0; current_byte < BYTES_IN_REG; current_byte++){

r_config[current_byte] = rx_data[current_byte];

}

received_pec = (r_config[6]<<8) + r_config[7];

data_pec = pec15_calc(6,&r_config[0]);

if(received_pec != data_pec){

pec_error = -1;

}

return(pec_error);

}

LTC6804读写配置寄存器的更多相关文章

  1. Android读写配置2

    上篇文章采用 Properties 读写配置,各种路径错误,要么没有写入权限. 后来查资料,采用另一种方式读写 SharedPreferencesImpl 直接贴代码 公共类 -- 读写 packag ...

  2. Linux 内核 标准 PCI 配置寄存器

    一些 PCI 配置寄存器是要求的, 一些是可选的. 每个 PCI 设备必须包含有意 义的值在被要求的寄存器中, 而可选寄存器的内容依赖外设的实际功能. 可选的字段不被 使用, 除非被要求的字段的内容指 ...

  3. STM32时钟系统的配置寄存器和源码分析

    一.时钟系统 概述 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令,时钟系统就是CPU的脉搏,决定cpu速率. STM32有多个时钟来源的选择,为什么 STM32 要有多个时钟源呢 ...

  4. MFC读写配置ini文件

    https://blog.csdn.net/naibozhuan3744/article/details/78783446 https://blog.csdn.net/rayborn1105/arti ...

  5. 【Python】模块学习之ConfigParser读写配置信息

    前言 使用配置文件可以在不修改程序的情况下,做到对程序功能的定制.Python 使用自带的configParser模块可以很方便的读写配置文件的信息. configParser 支持的方法 Confi ...

  6. Linux下SPI读写外部寄存器的操作

    SPI写寄存器操作: staticvoid mcp251x_write_reg(struct spi_device *spi, uint8_t reg, uint8_t val)   {   stru ...

  7. C#中读写配置参数文件(利用Windows的API)

      读配置文件与写配置文件的核心代码如下:   [DllImport("kernel32")] // 读配置文件方法的6个参数:所在的分区(section).键值. 初始缺省值. ...

  8. TLV320AIC3268寄存器读写

    该芯片支持I2C和SPI读写寄存器,本人用的是SPI1接口. 以下是对手册中SPI接口读写寄存器相关内容的翻译(英文版可以看手册的94页~) 在SPI控制模式下,TLV320AIC3268使用SCL_ ...

  9. 直接对寄存器操作,实现usart的串口输出寄存器的配置

    就像前面提到的,我用的板子是一款stm32f107系列的板子,在这块板子上,已经开发出了一套比较成熟的库函数,这也就意味着你可以不用直接去操作存储器来实现某些功能.比方说对于USART来说可以直接通过 ...

随机推荐

  1. Linux源码安装步骤

    来源:https://www.cnblogs.com/benwu/articles/8436209.html 1. 获取源码 2. 查看INSTALL与README文件    (解压后查看INSTAL ...

  2. 点击Qtableview表头,触发事件

    connect(horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(onHeaderClicked(int))); refer to ...

  3. JavaScript正则表达式及jQuery回顾

    JavaScript 正则表达式,用于规定在文本中检索的内容. 一.定义正则表达式: rep = /\d+/; // js定义正则.(python定义正则:re模块 rep = "\d+&q ...

  4. 阿里云有奖调查结果公布,赠送10个阿里巴巴logo胸针 ...

    4月17日,我们发起了"阿里云有奖调查!赠10个阿里巴巴logo胸针"活动,现经过随机抽奖机抽选出10名幸运同学,每人赠送一枚阿里巴巴胸针.现把获奖同学ID公布如下,请如下同学私信 ...

  5. mycat入门部署安装

    mycat是一种比较简单的中间件产品,可以帮助mysql进行分库,同时统一在一个逻辑库. 硬件环境:系统:centos 7.6数据库版本:5.7.19mycat:1.6..6.1 github上下载m ...

  6. Jenkins+Jmeter+Ant   生成测试报告

    <?xml version="1.0" encoding="UTF-8"?> <project name="wms_test&quo ...

  7. Notations

    下面四种记号是为了建立函数间的相对级别. CLRS上的一张图很直观: 大O记号 定义:如果存在正常数\(c\)和\(n_0\),使得当\(N\ge n_o\)时\(T(N)\le cf(N)\),记\ ...

  8. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 B so easy

    题目链接:https://nanti.jisuanke.com/t/41384 这题暴力能过,我用的是并查集的思想,这个题的数据是为暴力设置的,所以暴力挺快的,但是当他转移的点多了之后,我觉得还是我这 ...

  9. Android 10 获取已连接上的蓝牙设备的当前电量

    前言 最近的项目中有获取连接蓝牙设备电量的需求,查找了一些资料,发现谷歌在Android8.0推出了一个getBatteryLevel的api,用来获取蓝牙设备电量百分比的方法,但在我的项目中andr ...

  10. Java——理解面向对象

    1.程序设计的三种基本结构 顺序结构 顺序结构表示程序中的各操作是按照它们在源代码中的排列顺序依次执行的 选择结构 选择结构表示程序的处理需要根据某个特定的条件选择其中的一个分支执行.选择结构有单选择 ...