LTC6804读写配置寄存器
一、写配置寄存器步骤及函数封装
写配置寄存器
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读写配置寄存器的更多相关文章
- Android读写配置2
上篇文章采用 Properties 读写配置,各种路径错误,要么没有写入权限. 后来查资料,采用另一种方式读写 SharedPreferencesImpl 直接贴代码 公共类 -- 读写 packag ...
- Linux 内核 标准 PCI 配置寄存器
一些 PCI 配置寄存器是要求的, 一些是可选的. 每个 PCI 设备必须包含有意 义的值在被要求的寄存器中, 而可选寄存器的内容依赖外设的实际功能. 可选的字段不被 使用, 除非被要求的字段的内容指 ...
- STM32时钟系统的配置寄存器和源码分析
一.时钟系统 概述 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令,时钟系统就是CPU的脉搏,决定cpu速率. STM32有多个时钟来源的选择,为什么 STM32 要有多个时钟源呢 ...
- MFC读写配置ini文件
https://blog.csdn.net/naibozhuan3744/article/details/78783446 https://blog.csdn.net/rayborn1105/arti ...
- 【Python】模块学习之ConfigParser读写配置信息
前言 使用配置文件可以在不修改程序的情况下,做到对程序功能的定制.Python 使用自带的configParser模块可以很方便的读写配置文件的信息. configParser 支持的方法 Confi ...
- Linux下SPI读写外部寄存器的操作
SPI写寄存器操作: staticvoid mcp251x_write_reg(struct spi_device *spi, uint8_t reg, uint8_t val) { stru ...
- C#中读写配置参数文件(利用Windows的API)
读配置文件与写配置文件的核心代码如下: [DllImport("kernel32")] // 读配置文件方法的6个参数:所在的分区(section).键值. 初始缺省值. ...
- TLV320AIC3268寄存器读写
该芯片支持I2C和SPI读写寄存器,本人用的是SPI1接口. 以下是对手册中SPI接口读写寄存器相关内容的翻译(英文版可以看手册的94页~) 在SPI控制模式下,TLV320AIC3268使用SCL_ ...
- 直接对寄存器操作,实现usart的串口输出寄存器的配置
就像前面提到的,我用的板子是一款stm32f107系列的板子,在这块板子上,已经开发出了一套比较成熟的库函数,这也就意味着你可以不用直接去操作存储器来实现某些功能.比方说对于USART来说可以直接通过 ...
随机推荐
- Python数据分析:大众点评数据进行选址
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:砂糖侠 如果你处于想学Python或者正在学习Python,Pyth ...
- sqlilab11-14
less11 抓包 ' " 实验发现'构成闭合,存在注入点 less-12 a,b都有注入点,b比较好判断闭合 less13 less14
- mac使用brew安装mysql5.7
安装mysql5.7 brew install mysql@5.7 设置环境变量(可能安装完自动生成过了,可以cat ~/.zshrc看一下,有了就不用添加了 ) echo 'export PATH= ...
- 3.k均值的算法
一.课堂练习 # 课堂练习 from sklearn.datasets import load_iris # 导入鸢尾花数据 iris=load_iris() iris iris.keys() dat ...
- CodeForces 674C Levels and Regions
#include<bits/stdc++.h> using namespace std; const int maxn=2e5+5; int N,K,head,tair; int q[ma ...
- FZU 1894 志愿者选拔
Problem 1894 志愿者选拔 Accept: 2308 Submit: 7003 Time Limit: 1500 mSec Memory Limit : 32768 KB Problem D ...
- UDP广播的客户端和服务器端的代码设计
实验环境 linux 注意: 使用UDP广播,是客户端发送广播消息,服务器端接收消息.实际上是客户端探测局域网中可用服务器的一种手段.客户端发送,服务器端接收,千万不能弄混淆!!! 为了避免混淆,本文 ...
- 2020年ubuntu1804安装nginx最新稳定版1.16详细教程笔记
第一次使用nginx是2007年,当时主流还是apache.nginx横空出世,在web2.0的推动下,迅速崛起.眼下已是绝对的主流了. 当时,还有一个轻量级的lighttpd,是德国人写,刚开始还并 ...
- 一个简单的wed服务器SHTTPD(5)————服务器SHTTPD请求方法解析
//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...
- zabbix tigger 设置
设置一个内存在10分钟内持续低于某值才告警: 设置方法: 修改模板的tigger configuration - > Template OS linux Active(选择自己的模板)-&g ...