STM32驱动模数转换芯片ADS1120(基础知识篇)第1篇
1. 先看下ADS1120的结构图,ADS1120是个比较奇葩的ADC模数转换器,因为比较适用于热电阻之类的温度采集器。看下图,有个MUX多路复用器,应该是选择两个差分信号去测试,通过输入多路复用器 (MUX) 实现的两个差分输入或四个单端输入,一个低噪声可编程增益放大器 (PGA),PGA,内部 PGA 提供高达128V/V 的增益。此 PGA 使得 ADS1120 非常适用于小型传感器信号测量 应用 ,例如电阻式温度检测器(RTD)、热电偶、热敏电阻和桥式传感器。
2. 看下寄存器,4个寄存器
3. 命令
4. 参考例程
VOID main(VOID)
{
signed long tData;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
Init_StartUp(); // Initialize device
ADS1220Init(); // Initializes the SPI port pins as well as control
ADS1220Config(); // Set base configuration for ADS1x20 device
while()
{
/* Add specifc command for reading and writing ADS1220 here */
/* dFlag is set in the interrupt service routine when DRDY triggers end
of conversion */
if (dflag) /* check if new data is available */
{
tData = ADS1220ReadData(); /* get the data from the ADS1220 */
dFlag=;
}
/* other routines could be added here, such as change the mux setting */
} /* end of while(1) */
} /* end of main() */
其中配置函数比较重要,如下是1增益,也是就不变,然后ADS1220_MUX_0_G=0x80
void ADS1220Config(void)
{
unsigned Temp;
ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp);
/* clear prev value; */
Temp &= 0x0f;
Temp |= ADS1220_MUX_0_G;
/* write the register value containing the new value back to the ADS */
ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp);
ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp);
/* clear prev DataRate code; */
Temp &= 0x1f;
Temp |= (ADS1220_DR_600 + ADS1220_CC); /* Set default start mode to 600sps and continuous conversions */
/* write the register value containing the new value back to the ADS */
ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp);
}
ADS1220_MUX_0_G=0x80,那么看下寄存器,什么意思呢?就是测量AIN0引脚的电平,得出一个结论,如果要想测量4个通道,那么需要依次次修改MUX[3:0],一个测量完再测试另外一个
读数据,这个例程比较简单,只测量了AIN0的电压,我们的应用是需要做2线PT100铂电阻温度测量,所以需要继续
long ADS1220ReadData(void)
{
long Data;
/* assert CS to start transfer */
ADS1220AssertCS();
/* send the command byte */
ADS1220SendByte(ADS1220_CMD_RDATA);
/* get the conversion result */ Data = ADS1220ReceiveByte();
Data = (Data << ) | ADS1220ReceiveByte();
/* sign extend data */
if (Data & 0x8000)
Data |= 0xffff0000; /* de-assert CS */
ADS1220AssertCS();
return Data;
}
STM32驱动模数转换芯片ADS1120(基础知识篇)第1篇的更多相关文章
- STM32驱动模数转换芯片ADS1120(PT100铂电阻测温度)第2篇
1. 先看下原理图,原理图是电流从IDAC1流出,提供驱动,然后R(REF)这个电阻上的电压作为参考,读取AIN0和AIN1的电压,那么可以测量出来电阻值. 2. 上图是官方给出的参考,下图是我实际用 ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- C# 基础知识系列- 14 IO篇 文件的操作 (3)
本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...
- C# 基础知识系列- 14 IO篇 流的使用
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...
- C# 基础知识系列- 17 实战篇 编写一个小工具(1)
0. 前言 这是对C# 基础系列的一个总结,现在我们利用之前学到的知识做一个小小的工具来给我们使用. 如果有看过IO篇的小伙伴,应该有印象.当时我提过一个场景描述,我们在平时使用系统的时候,经常会为了 ...
- java基础知识总结8(数据库篇1)
一. Oracle的安装(windowXP.win7.Linux)和卸载 1.1 Oracle的安装 1.1.1 在WindowsXP.Win7下安装 第一:解压win32_11gR2_databas ...
- C# 基础知识系列- 14 IO篇 文件的操作
0. 前言 本章节是IO篇的第二集,我们在上一篇中介绍了C#中IO的基本概念和一些基本方法,接下来我们介绍一下操作文件的方法.在编程的世界中,操作文件是一个很重要的技能. 1. 文件.目录和路径 在开 ...
- C# 基础知识系列- 14 IO篇之入门IO
0. 前言 在之前的章节中,大致介绍了C#中的一些基本概念.这篇我们将介绍一下C#的I/O操作,这将也是一个小连续剧.这是第一集,我们先来简单了解一下C#中的I/O框架. 1. 什么是I/O I/O ...
- ExtJS4.2学习(7)——基础知识之Reader&Writer篇
Reader: 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Modle中. 结构图 Ext.data.reader.Reader 读取器的根类(很少直接实例化这个 ...
随机推荐
- CentOS 7.5静默安装oracle 11g
1.安装前环境准备 1.1.配置本地yum源 #因公司内网环境,没有互联网,所以需要配置本地yum源,安装所需依赖包等. #挂载ios镜像centos7.5-1804 [root@oracle ~]# ...
- word collocations中文版(信息检索)
虽然说是大作业,也做了好几天,但是完全没有什么实际价值...就是把现有的东西东拼西凑一下,发现跑的特别慢还搞了个多核 写这篇blog纯属是我吃饱了没事干,记录一下装env的蛋疼 首先我们是在pytho ...
- 「LibreOJ NOI Round #2」单枪匹马
嘟嘟嘟 这题没卡带一个\(log\)的,那么就很水了. 然后我因为好长时间没写矩阵优化dp,就只敲了一个暴力分--看来复习还是很关键的啊. 这个函数显然是从后往前递推的,那么令第\(i\)位的分子分母 ...
- Matlab中画图数学公式的输出格式
1.可以在输出参数中选择 ('Interpreter', 'latex'). 2.字符序列中的数学表达式需用$$等形式括起来. 例子: text(6, 0.3, '$\leftarrow y= 2^ ...
- php之简单socket编程
一.什么是套接字 源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字.其用于标识客户端请求的服务器和服务. 二.php套接字实例 服务端代码:socket.php <?php er ...
- AtCoder Grand Contest 030 (AGC030) F - Permutation and Minimum 动态规划
原文链接www.cnblogs.com/zhouzhendong/p/AGC030F.html 草率题解 对于每两个相邻位置,把他们拿出来. 如果这两个相邻位置都有确定的值,那么不管他. 然后把所有的 ...
- C 库函数 - strcspn()
定义 size_t strcspn(const char *str1, const char *str2) 参数 str1 -- 要被检索的 C 字符串. str2 -- 该字符串包含了要在 str1 ...
- MySQL5.7 基础之二
设计范式: 第一范式:字段是原子性 第二范式:存在可用主键 第三范式:任何表都不应该有依赖于其它表非主键的字段 创建数据库.设计数据表 字段:字段名.数据类型.约束(通过键来实现,而键其实可以当做索引 ...
- Java RabbitMQ配置和使用,基于SpringBoot
package rabbitmq.demo; import com.rabbitmq.client.AMQP; import org.junit.Test; import org.junit.runn ...
- 两个int类型的数据相加,有可能会出现超出int的表示范围。
两个int类型的数据相加,有可能会出现超出int的表示范围. /* 移位运算符: <<(左移) 规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移 的位数. ...