外设驱动库开发笔记6:AD719x系列ADC驱动

本文介绍AD7192模数转换器的驱动程序设计与实现,包括对象设计、初始化、单次和连续数据转换、零点量程校准及温度转换。提供了基于STM32平台的HAL库实现代码。

前面我们讨论了AD7705这种ADC器件的驱动开发,在实际中我们使用更多的是AD719x系列的ADC芯片、包括有AD7191AD7192AD7193等。接下来我们就来设计并开发AD719x的驱动程序。

1、功能概述

AD7192是一款适合高精密测量应用的低噪声完整模拟前端,内置一个低噪声、 24 Σ-Δ型模数转换器 (ADC)。片内低噪声增益级意味着可直接输入小信号。

1.1、硬件结构

AD7192可配置为两路差分输入或四路伪差分输入。片内通道序列器可以使能多个通道,AD7192 按顺序在各使能通道上执行转换,这可以简化与器件的通信。 片内 4.92 MHz时钟可以用作 ADC 的时钟源; 或者也可以使用外部时钟或晶振。 该器件的输出数据速率可在 4.7 Hz 4.8 kHz 的范围内变化。

AD7192提供两种数字滤波器选项。 滤波器的选择会影响以编程输出数据速率工作时的均方根噪声和无噪声分辨率、建立时间以及 50 Hz/60 Hz 抑制。 针对要求所有转换均需建立的应用, AD7192 具有零延迟特性。

其功能结构图如下:

1.2、内部寄存器

AD7192内部具有多个寄存器,对AD7192的操作就是通过这些片内寄存器进行控制和数据寄存器/数据寄存器加状态信息配置。这些寄存器包括:通信寄存器、状态寄存器、模式寄存器、配置寄存器、ID寄存器、GPOCON寄存器、失调寄存器以及满量程寄存器。其中通信寄存器和状态寄存器共享地址,读操作时针对的是状态寄存器,写操作时针对的是通讯寄存器。对任何寄存器的操作都是从写通讯寄存器开始。

1.2.1、通信寄存器

通信寄存器是一个 8 位只写寄存器。与该器件的所有通信均必须以对通信寄存器的写操作开始。写入通信寄存器的数据决定下一个操作是读操作还是写操作,以及此操作发生在哪一个寄存器。通讯寄存器的格式如下:

其中RS2RS1RS0这些位用于指示下一次操作的寄存器是哪一个寄存器,具体如下:

我们使用比较多的就是状态寄存器、模式寄存器、配置寄存器以及数据寄存器。后续会进一步了解这些寄存器。

1.2.2、状态寄存器

状态寄存器是一个8位只读寄存器。要访问ADC状态寄存器,用户必须写入通信寄存器,选择下一个操作为读操作,并将 0 载入位RS2、位RS1 和位RS0。状态寄存器的格式如下:

CHD0CHD1CHD2这些位指示哪一通道对应数据寄存器的内容。这些位不是指示目前正在转换哪一通道,而是指示产生数据寄存器所含转换结果时选定了哪一通道。

1.2.3、模式寄存器

模式寄存器是一个24位寄存器,可以从中读取数据,也可以将数据写入其中。此寄存器用来选择工作模式、输出数据速率和时钟源。模式寄存器的格式如下:

AD7192的工作模式有模式寄存器的MD2MD1MD0这几位来决定。具体的配置如下:

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值