GAD7980/CL1680/AD7980详解与开发说明

news2024/7/5 23:44:54

目录

    • 1 概述
    • 2 GAD7980简介
    • 3 用法时序
    • 4 参数计算与参数解释
    • 4.1 采样率
    • 4.2 转换时间
    • 4.3 采集时间
    • 5 采样数值折算
    • 6 设计注意事项
    • 7 代码demo

1 概述

本文用于讲述GAD7980的功能与用法,以及其中一些参数的计算方法,用法时序,输出数值等等,便于后续沟通交流。
GAD7980与AD7980/CL1680时序兼容,硬件兼容可以使用同一套代码。

2 GAD7980简介

GAD7980是一款16位1MSPS SAR ADC,常用来采集电压信号。最大采样率为1MSPS,采用兼容的SPI接口进行数据输出,没有寄存器等配置,使用简单。
其原理框图如下:
在这里插入图片描述

3 用法时序

虽然本芯片手册介绍了很多种使用模式,但本文仅以CS模式(三线式且无繁忙指示)举例说明使用情况其时序如下所示:
在这里插入图片描述

资料上的CS模式的意思为采集分两步:
1) 转换区间:当SDI=1后,进入CS模式,当CNV的上升沿来临时启动转换进入转换区间(CONVERSION),在最大转换时间内CNV要一直保持高电平。
2) 采集区间:之后CNV拉低开始进入采集区间(ACQUISITION),在CNV拉低后的第一个SCK的处开始拿数据,总共16个数据,MSB先出来。16个个SCK后就关断了采集,等待进入下一个周期。

4 参数计算与参数解释

4.1 采样率

采样率=1s/tcyc;
所以最大采样率是在tcyc最小时出现,即最大采样率=1s/1us=1MHZ
Tcyc=转换时间(tCONV)+采集时间(tACQ);

4.2 转换时间

转换时间tconv是器件将模拟信号转换为数字信号的时间,有一个根据资料可知典型值为0.6us,最大值为0.7us,即在代码设计时,选择CS模式时CNV保持高电平的时间应该至少大于0.6us,最好大于0.7us。

4.3 采集时间

采集时间为将数据用SDO吐出的时间,共16个SCK。虽然手册上说tsck最小为12ns,即SPI的理论速率可以达到83MHZ左右。但是又规定了tacq最小为0.3us,则实际上tsck的最小周期=0.3us/16=18.75ns,即SPI的速率最大应该以周期18.75ns算得到53MHZ左右。
当然若要尝试把SPI速率拉到解决理论值,在需要把CNV的高电平时间拉的更长。

5 采样数值折算

根据手册可知,本器件输出的值代表的电压值大小是根据VREF来的,比如当VREF为5V时,折算结果如下所示。如果VREF=2.5V则输出码值1代表的电压还要除以2即38.15uv:

在这里插入图片描述

6 设计注意事项

1) 由于转换时间TCONV最大值为0.7us,因此在设计代码时CNV的高电平的高电平时间要大于0.7us设计,否则可能还没转换完就出数据,出的值可能不对;
2) 由于TEN的最大值为10ns,因此输出SCK的与产生CNV的控制时钟可能需要反向;

7 代码demo

cl1680/GAD7980/AD7980 CFG DEMO
https://mp.csdn.net/mp_download/manage/download/UpDetailed

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatglm+langchain

目录 chatglmlangchain 1.1. 主要功能: 1.2. Langchain中提供的模块 1.3. Langchain应用场景 2.1. chatglm应用: 1.1. 基于单一文档问答的实现原理 chatglmlangchain GitHub - imClumsyPanda/langchain-ChatGLM: langchain-ChatGLM, local knowledge bas…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 在线考试管理系统的设计与实现

一.项目介绍 学生在线考试系统分为三类角色 超管、老师、学生 超级管理员:维护考试管理、提供管理、成绩查询、学生管理以及教师管理 老师:维护考试管理、提供管理、成绩查询以及学生管理 学生:我的试卷…

Linux入门介绍-CentOS和VMware虚拟机下载安装

Linux 学自尚硅谷武晟然老师,结合老师课堂内容和自己笔记所写博文。 文章目录 Linux入门篇Linux概述Linux vs WindowsLinux安装CentOS的版本选择和下载VMware下载VMware安装创建虚拟机安装CentOS 入门篇 Linux概述 Linux是一个操作系统,一切皆文件&…

SpringMVC 程序开发:为什么要学SpringMVC?如何学SpringMVC?

文章目录 🎇前言1.MVC1.1 MVC 的定义1.2 MVC 与 Spring MVC的关系 2.为嘛要学Spring MVC?3.如何学习 Spring MVC?3.1 Spring MVC 创建和连接3.1.1 RequestMapping 注解介绍3.1.2 使用RequestMapping的参数修改请求方法3.1.3 GetMapping 和 Po…

C中的open函数,write函数,read函数

1.创建新文件并保存数据。 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> void error_handling(char * message);int main(void) {int fd;char buf[]"Lets go!\n";fdopen("data.txt",O_CREAT…

Java实现邮箱验证码

目录&#xff1a; 前言 一、POM依赖 二、获取验证码 三、配置文件 四、业务代码 1.service接口 2.service实现类 3.相关工具类Util 4.查询Redis数据库 5.接收邮件 前言 邮箱验证码是一个常见的功能&#xff0c;常用于邮箱绑定、修改密码等操作上&#xff0c;本篇博客只要…

vue-i18n 实现国际化,支持切换不同语言

需求&#xff1a;后台管理系统&#xff0c;可以实现语言切换 实现过程&#xff1a;用的i18n来实现的语言切换&#xff0c;网上能看到好多模板&#xff0c;根据自己的需求&#xff0c;修改一下即可使用&#xff0c;大概都是差不多的&#xff0c;因为涉及到后端&#xff0c;所以…

如何在 javascript 中交换数组元素

文章目录 在 JavaScript 中使用临时变量交换数组元素使用 ES6 析构函数赋值在 JavaScript 中交换数组元素使用按位异或和数组迭代在 JavaScript 中交换数组元素 交换两个元素的传统方法是使用临时变量。 在 JavaScript 中&#xff0c;我们可以轻松地将数组对象重新分配给默认设…

实验一(7 3)

实验分析&#xff1a; 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口&#xff0c;R1-R2-R3-R4-R5 RIP 100运行版本2&#xff0c;R6-R7 RIP 200 运行版本1 方法&#xff1a;要使得两个不同rip版本互通&#xff0c;需要在r4连通r6&#xff08;或r6连通r4&#xff09;的…

android 如何分析应用的内存(十)——malloc统计和libmemunreachable

android 如何分析应用的内存&#xff08;十&#xff09; 接下来介绍native heap内存的第四个板块————malloc统计和libmemunreachable malloc统计 malloc统计是标准c库提供的接口。他有两个调用接口如下&#xff1a; #include <malloc.h>struct mallinfo mallinfo…

敏捷开发Scrum

目录 1 Scrum概览1.2 理论基础1.2.1 透明性&#xff08;Transparency&#xff09;1.2.2 检验&#xff08;Inspection&#xff09;1.2.3 适应&#xff08;Adaptation&#xff09; 2 三个角色2.1 产品负责人&#xff08;Product Owner&#xff09;2.1.1 职责2.1.2 人选 2.2 流程管…

JDK多版本管理工具jenv

JENV mac jdk版本管理工具 Mac 安装jenv可以使用brew brew install jenv配置jenv zsh配置方式&#xff1a; echo export PATH"$HOME/.jenv/bin:$PATH" >> ~/.zshrc echo eval "$(jenv init -)" >> ~/.zshrcbash配置方式&#xff1a; ech…

海上明月共潮生【InsCode Stable Diffusion 美图活动一期】

一、 Stable Diffusion 模型在线使用地址&#xff1a; https://inscode.csdn.net/inscode/Stable-Diffusion 购买 右下角点击 Stable Diffusion WebUI 进入工作界面 二、模型相关版本和参数配置&#xff1a; 模型&#xff1a;chilloutmix_NiPrunerdFp32Fix.safetensors…

解决Python的SyntaxError: Non-UTF-8 code starting with ‘\xbb‘问题

文章目录 一、报错二、分析三、解决3.1 方法一3.2 方法二3.3 方法三 一、报错 在程序中&#xff0c;line 8为含有中文的注释&#xff0c;编译后出现了SyntaxError: Non-UTF-8 code starting with \xbb的报错&#xff0c;具体如下图。 二、分析 这个错误是由于Python解释器无…

教你如何快速批量添加滚动文字水印

在视频中添加滚动的文字水印可以增加视频的专业感和吸引力&#xff0c;但手动给大量视频添加滚动文字水印是一项费时费力的任务。下面是一个快速批量给大量视频添加滚动文字水印的方法&#xff0c;有需要的小伙伴们可以进来学习一下&#xff01; 今天分享的方法会使用到一个剪辑…

IDEA 中 gradle面板显示重复工程

使用 IDEA 构建多模块工程时&#xff0c;每新建一个模块&#xff0c;gradle 构建后&#xff0c;面板上就会出现一个重复的根工程&#xff0c;如下图红框部分&#xff0c;怎么处理下

ASIC数字设计:前端设计、验证、后端实现

前端设计 数字系统设计中有三个重要的设计级别概念&#xff1a;行为级&#xff08;Behavior Level&#xff09;、寄存器传输级&#xff08;Register Transfer Level&#xff09;和门级&#xff08;Gate level&#xff09;。其中&#xff0c; 行为级通过行为级算法描述数字系统&…

zabbix 报警测试报错

一、报错描述 在测试报警媒介时&#xff0c;报错如下: main.py脚本是在windows上的pycharm上编写的&#xff0c;在windows上运行没有问题&#xff0c;放在linux服务器上使用python3 main.py 运行也没有问题&#xff0c;但是使用./main.py执行就报错 [rootp0-tkhijbs-broadco-…

十、Docker虚悬镜像

学习参考&#xff1a;尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、介绍二、如何产生的&#xff1f;三、尝试弄一个三、查看、删除虚悬镜像3.1 查看虚悬镜像3.2 删除虚悬镜像 总结 前言 什么是虚悬镜像&#xff1f; 一、介绍 虚悬…

【LEAP模型】能源供应转换、需求及碳排放预测、平衡表核算、模型框架构建、操作、情景设计、结果分析、优化、预测结果不确定性分析等

模型简介&#xff1a; 中文名&#xff1a;LEAP模型 外文名&#xff1a;Long Range Energy Alternatives Planning System/ Low emission analysis platform LEAP模型[1]允许研究者根据研究目的、数据可获取度、研究对象特点等灵活构建模型结构&#xff0c;十分适用于能源数据…