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来说可以直接通过 ...
随机推荐
- PHP中的11个魔术方法
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法__set( $property ...
- GOLANG 匿名函数笔记
在函数内部,没有名字的函数,就是匿名函数 实现方法1: func main(){ a := "我是无参无返回值的匿名函数" x := func(){ //可以获取到匿名函数外部的变 ...
- 自建Git服务器 - 创建属于你自己的代码仓库
最近有线上朋友私信问我怎么搭建个人博客,也有咨询我个人项目的代码是如何保管的,还有一个朋友问我买了服务器玩了一段时间,等新鲜感过了就不知道做什么了. 关于这些问题并没有一个标准答案,每个人都有自己的使 ...
- 标准库 xml
xml处理模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融 ...
- 标准库shutil
shutil模块是高级的 文件.文件夹.压缩包 处理模块. 下面是关于其中各种方法的使用介绍: 1.shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一 ...
- mac OS 查看开机/关机/重启记录
last 查看最近的开关机.登录用户等记录 以及操作时间节点. last | grep reboot 查看重启记录 last | grep shutdown 查看关机记录
- 限流 - Guava RateLimiter
2019独角兽企业重金招聘Python工程师标准>>> 限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦并发访问/请求达到限制速率或者 ...
- windows下遍历文件夹
Github地址 函数: HANDLE WINAPI FindFirstFile( _In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFil ...
- Fourier Transform
为了在统一框架里分析周期信号与非周期信号,可以给周期信号也建立傅里叶变换. 有两种方法求周期信号的傅里叶变换: **1. 利用傅里叶级数进行构造 ** 对于周期信号\(x(t)\),其傅里叶级数展开式 ...
- ACM模板合集
写在前面: 第一年小白拿铜牌,第二年队友出走,加上疫情原因不能回校训练导致心底防线彻底崩盘,于是选择退役. 自从退役之后,一直想我打了那么久的ACM,什么也没留下觉得很难受,突然想到我打ACM的时候, ...