日期 作者 版本 说明
2020.09.29 Tao V1.0 撰写了ADG408、DG467芯片的简介与驱动
2020.09.30 Tao V1.1 撰写了WAS3157B芯片的简介与驱动
2020.10.01 Tao V1.2 增加了ADG408与ADG409的驱动兼容性说明
2020.10.10 Tao V1.3 增加了ADG1408与ADG1409的介绍
2020.10.22 Tao V1.4 增加了ADG411与ADG1411的介绍

目录

  • 选型原则
  • ADG408/409与ADG1408/1409
    • 芯片简介
    • 驱动源码
      • 头文件
      • 源文件
    • 使用指南
  • ADG411/ADG1411
    • 芯片简介
    • 驱动源码
    • 使用指南
  • DG467/468/469/470
    • 芯片简介
    • 驱动源码
    • 使用指南
  • WAS3157B
    • 芯片简介
    • 驱动源码
    • 使用指南

选型原则

如果采用了外部模拟切换开关,那么这个开关总是存在一些电阻的,必然引起一些误差。一般来说,如果是开关是做通道切换的,在后级加一个运放跟随提高驱动能力就可以了。如果是做量程切换,只能选择导通电阻很小的开关,同时注意开关的平坦度和温度漂移参数。如果系统精度要求很高,那还需要做软件校正或者选择可编程放大器如AD8250/1/3等。

ADG408/409与ADG1408/1409

芯片简介

ADG408是1P8T模拟电子开关,ADG409是2P4T模拟电子开关,关于他们的详细介绍请看官方数据手册。同样的,ADG1408是1P8T模拟电子开关,ADG1409是2P4T模拟电子开关,关于他们的详细介绍请看官方数据手册。

这两个系列的模拟电子开关功能与控制方式相同,性能不同。ADG408/409的导通电阻有100Ω,而ADG1408/1409的导通电阻仅为4Ω

以下为摘自数据手册的关于ADG408/409的特性介绍:

ADG408是一款单芯片CMOS模拟多路复用器,内置8个单通道。它根据3位二进制地址线A0、A1和A2所确定的地址,将8路输入之一切换至公共输出。该器件提供EN输入,用来使能或禁用器件。禁用时,所有通道均关断。

ADG408采用增强型LC2MOS 工艺设计,具有低功耗、高开关速度和低导通电阻特性。接通时,各通道在两个方向的导电性能相同,输入信号范围可扩展至电源电压范围。在断开条件下,达到电源电压的信号电平被阻止。所有通道均采用先开后合式开关,防止开关通道时发生瞬时短路。设计本身具有低电荷注入特性,当切换数字输入时,可实现最小的瞬变。

如想获得防闩锁性能保证、8 kV HBM ESD额定值、更低导通电阻(13.5Ω)、更小封装及高达+/-22V、+40V的工作电压,可考虑使用ADG5408。

如想获得更低导通电阻(4.5Ω)、更小封装及高达+/-15V、+12V的工作电压,可考虑使用ADG1408。

以下为摘自数据手册的关于ADG1408/1409的特性介绍:

ADG1408/ADG1409均为单芯片iCMOS®模拟多路复用器,分别内置8个单通道和4个差分通道。ADG1408根据3位二进制地址线A0、A1和A2所确定的地址,将8路输入之一切换至公共输出。ADG1409根据2位二进制地址线A0和A1所确定的地址,将4路差分输入之一切换至公共差分输出。两款器件均提供EN输入,用来使能或禁用器件。禁用时,所有通道均关断。

工业CMOS (iCMOS)是一种模块式制造工艺,集高电压CMOS(互补金属氧化物半导体)与双极性技术于一体。利用这种工艺,可以开发工作电压达33 V的各种高性能模拟IC,并实现以往的高压器件所无法实现的尺寸。与采用传统CMOS工艺的模拟IC不同,iCMOS器件不但可以承受高电源电压,同时还能提升性能、大幅降低功耗并减小封装尺寸。

这些开关具有超低导通电阻和导通电阻平坦度,对于低失真性能至关重要的数据采集和增益切换应用堪称理想解决方案。iCMOS结构可确保功耗极低,因而这些器件非常适合便携式电池供电仪表。

下图是ADG408与ADG409的功能框图。

下图是ADG408与ADG409的引脚功能图。

下图是ADG408与ADG409的真值表。

驱动源码

由于ADG409通道选择逻辑与ADG408一致,因此驱动可以兼容ADG409。ADG409少了A2管脚,因此在定义ADG409芯片时,注意将结构体变量的A2管脚初始化为空指针,同时在void ADG408_OpenChannel(ADG408_TypeDef* adg408, uint8_t channel)中只能打开前4个通道。

头文件

#ifndef __ADG408_H__
#define __ADG408_H__#include "stm32f10x.h"
#include "stm32f10x_conf.h"#ifdef ADG408typedef struct
{uint32_t *En;uint32_t *A0;uint32_t *A1;uint32_t *A2;
} ADG408_TypeDef;//位带对象
#define ADG408_1_A0                                     GPIOB_OUT(14)
#define ADG408_1_A1                                     GPIOB_OUT(15)
#define ADG408_1_A2                                     GPIOA_OUT(8)
#define ADG408_1_EN                                     GPIOB_OUT(13)#define ADG408_2_A0                                        GPIOB_OUT(5)
#define ADG408_2_A1                                     GPIOB_OUT(9)
#define ADG408_2_A2                                     GPIOB_OUT(8)
#define ADG408_2_EN                                     GPIOB_OUT(4)//位带地址
#define ADG408_1_A0_ADDR                                GPIOB_OUT_ADDR(14)
#define ADG408_1_A1_ADDR                                GPIOB_OUT_ADDR(15)
#define ADG408_1_A2_ADDR                                GPIOA_OUT_ADDR(8)
#define ADG408_1_EN_ADDR                                GPIOB_OUT_ADDR(13)#define ADG408_2_A0_ADDR                              GPIOB_OUT_ADDR(5)
#define ADG408_2_A1_ADDR                                GPIOB_OUT_ADDR(9)
#define ADG408_2_A2_ADDR                                GPIOB_OUT_ADDR(8)
#define ADG408_2_EN_ADDR                                GPIOB_OUT_ADDR(4)extern ADG408_TypeDef ADG408_type[];void ADG408_SetStatus(ADG408_TypeDef* adg408,uint8_t status);
void ADG408_OpenChannel(ADG408_TypeDef* adg408, uint8_t channel);#endif
#endif

源文件

#include "adg408.h"#ifdef ADG408
/*0为通道1-8控制,1为通道9-16控制,2为量程控制*/ADG408_TypeDef ADG408_type[] =
{{.En = ADG408_1_EN_ADDR,.A0 = ADG408_1_A0_ADDR,.A1 = ADG408_1_A1_ADDR,.A2 = ADG408_1_A2_ADDR,},{.En = ADG408_2_EN_ADDR,.A0 = ADG408_2_A0_ADDR,.A1 = ADG408_2_A1_ADDR,.A2 = ADG408_2_A2_ADDR,},
};/*** @brief 设置ADG408的状态(使能或失能)* @param adg408:  定义ADG408的结构体变量指针* @param status: ADG408的状态*      @arg 0: 失能*        @arg 1: 使能*/
void ADG408_SetStatus(ADG408_TypeDef* adg408,uint8_t status)
{if(status != 0){*adg408->En = 1;}else{*adg408->En  = 0;}
}/*** @brief 开启ADG408的通道* @param adg408: 定义ADG408的结构体变量指针* @param channel: ADG408的通道(0~7)*/
void ADG408_OpenChannel(ADG408_TypeDef* adg408, uint8_t channel)
{*adg408->A0 = (channel&0x01)>>0;*adg408->A1 = (channel&0x02)>>1;//因为ADG409的A2为空指针,此处需要判断,避免给空指针直接赋值if(adg408->A2 != NULL){*adg408->A2 = (channel&0x04)>>2;}
}#endif

使用指南

  • 根据电路设计初始化单片机的GPIO端口
  • 宏定义GPIO电平操作(利用位带)
//位带地址
#define ADG408_1_A0_ADDR                                GPIOB_OUT_ADDR(14)
#define ADG408_1_A1_ADDR                                GPIOB_OUT_ADDR(15)
#define ADG408_1_A2_ADDR                                GPIOA_OUT_ADDR(8)
#define ADG408_1_EN_ADDR                                GPIOB_OUT_ADDR(13)#define ADG408_2_A0_ADDR                              GPIOB_OUT_ADDR(5)
#define ADG408_2_A1_ADDR                                GPIOB_OUT_ADDR(9)
#define ADG408_2_A2_ADDR                                GPIOB_OUT_ADDR(8)
#define ADG408_2_EN_ADDR                                GPIOB_OUT_ADDR(4)
  • 定义与初始化ADG408结构数组
ADG408_TypeDef ADG408_type[] =
{{.En = ADG408_1_EN_ADDR,.A0 = ADG408_1_A0_ADDR,.A1 = ADG408_1_A1_ADDR,.A2 = ADG408_1_A2_ADDR,},{.En = ADG408_2_EN_ADDR,.A0 = ADG408_2_A0_ADDR,.A1 = ADG408_2_A1_ADDR,.A2 = ADG408_2_A2_ADDR,},
};
  • 在需要的地方,将ADG408结构体变量的指针传入相应的操作函数
 DG408_OpenChannel(&ADG408_type[0], 0);ADG408_SetStatus(&ADG408_type[0], 1);

ADG411/ADG1411

芯片简介

ADG411/ADG1411是4组独立SPST模拟电子开关。
ADG411/412/413系列的区别主要在于控制引脚的逻辑关系上。而ADG411系列与ADG1411系列的主要区别在于切换时间与导通电阻上。ADG411的导通电阻有35Ω,ADG1411的导通电阻只有1.5Ω。同时,它们的管脚功能也存在细微差别(ADG411的12脚为逻辑电源,而ADG1411的12脚为空)

  • ADG411官方数据手册
  • ADG1411官方数据手册

ADG411/412/413的功能框图如下图所示:

ADG1411/1412/1413的功能框图如下图所示:
ADG411系列的管脚功能如下图所示:
ADG1411系列的管脚功能如下图所示:

驱动源码

这些芯片的控制比较简单,因此这部分内容省略。

使用指南

根据真值表直接操作单片机的GPIO电平控制芯片即可。

DG467/468/469/470

芯片简介

DG467/468是SPST模拟电子开关,DG469/470是SPDT模拟电子开关,它们支持双电源供电,同时有着极低的导通电阻。详细的参数与介绍请参考官方数据手册DG467、DG469。

The DG467 and DG468 are dual supply single-pole/singlethrow (SPST) switches. On resistance is 10 ohm max. and flatness is 2 ohm max. over the specified analog signal range.These analog switches were designed to provide high speed, low error switching of precision analog signals. The primary application areas are in the routing and switching intelecommunications and test equipment. Combining low power, low leakages, low on-resistance and small physical size, the DG467/468 are also ideally suited for portable and battery powered industrial and military equipment.The DG467 has one normally closed switch, while the DG468 switch is normally open. They operate either from a single + 7 V to 36 V supply or from dual ± 4.5 V to ± 20 V supplies. They are offered in the very popular, small TSOP6 package.

The DG469, DG470 are high voltage SPDT switches, with a typical on resistance of 3.6 Ω and typical flatness of 0.4 Ω. The DG469, DG470 are identical, except the DG470 provides an enable input. When the enable input is activated, both sides of the switch are in a high impedance mode (Off), maintaining a “Safe State” at power up. This function can also be used as a quick “disconnect” in the event of a fault condition. For audio switching, the enable pin provides a mute function. These are high voltage switches that are fully specified with dual supplies at ± 4.5 V and ± 15 V and a single supply of 12 V over an operating temperature range from - 40 °C to + 125 °C. Fast switching speeds coupled with high signal bandwidth makes these parts suitable for video switching applications. All digital inputs have 0.8 V and 2.4 V logic thresholds ensuring low voltage TTL/CMOS compatibility. Each switch conducts equally well in both directions when on and can handle an input signal range that extends to the supply voltage rails. They exhibit break-before-make switching action to prevent momentary shorting when switching between channels. The DG469, DG470 are offered in a MSOP 8 and SOIC 8 package.

DG467/468的引脚功能图与真值表如下图所示。

DG467/468的引脚功能图与真值表如下图所示。

驱动源码

这些芯片的控制比较简单,因此这部分内容省略。

使用指南

根据真值表直接操作单片机的GPIO电平控制芯片即可。

WAS3157B

芯片简介

WAS3157B is 5.5Ω, 400MHz Bandwidth, SPDT Analog Switch. 详细参数请查看官方数据手册。

The WAS3157B is a high performance, single pole double throw (SPDT) CMOS analog switch for bus switching or audio switching applications. It features high bandwidth up to 400MHz at -3dB and low on-resistance (5.5Ω Typ.).

The SEL pin has overvoltage protection that allows voltages above VCC, up to 7.0V to be present on the pin without damage or disruption of operation of the part, regardless of the operating voltage. The WAS3157B is also featured with smart circuitry to minimize VCC leakage current even when SEL control voltage is lower than VCC supply voltage. In other word, there is no need of additional device to shift SEL level to be the same as that of VCC in real application.

WAS3157B的管脚配置如下图所示。
WAS3157B的特征参数如下图所示。
WAS3157B的SEL管脚功能如下图所示。

驱动源码

这些芯片的控制比较简单,因此这部分内容省略。

使用指南

根据真值表直接操作单片机的GPIO电平控制芯片即可。

STM32开发项目:一些模拟电子开关的介绍与驱动相关推荐

  1. STM32开发项目:借助DMA传输高效的使用ADC

    目录 项目背景 DMA简介 DMA请求 DMA通道 DMA仲裁 DMA配置 从哪里来到哪里去 要传多少,单位是什么 什么时候传输完成 代码示例 配置GPIO 相关变量定义 配置ADC 配置DMA 获取 ...

  2. STM32开发项目:定时器预装载寄存器(ARR)

    项目背景 笔者在进行某项目开发时,需要实时调节定时器的周期,以控制定时器下次更新中断的时间. 预装载寄存器 自动重装载寄存器 ARR 是一个 16 位的寄存器,这里面装着计数器能计数的最大数值.当计数 ...

  3. STM32开发项目:STM32F407的BootLoader程序

    日期 作者 版本 说明 2020.11.03 Tao V0.0 完成主体内容的撰写 目录 BootLoader程序介绍 源码实现 源文件 stm32f4_flash.ld 使用指南 设置用户程序下载位 ...

  4. STM32开发项目:GPIO的位带操作

    目录 背景介绍 GPIO位带操作的实现 使用指南 背景介绍 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见.51 单片机中通过关键字 sbit 来实现位定义,STM32-M3, ...

  5. STM32开发--- F429IG+3.5寸显示屏( ILI9486) +汉字驱动

    本文未完,更新中........2020.04.05 先上图,有图有真相: 文章结构: 实验平台 3.5寸ILI9486的特点 编写初始化代码 编写点读.写函数 英文字符显示代码 汉字显示代码 汉字字 ...

  6. STM32开发(1)----stm32f103c6t6开发板介绍和环境搭建

    stm32f103c6t6开发板介绍 前言 一.stm32f103c6t6芯片资源介绍 1.STM32 的命名规则 二.最小系统开发板介绍 三.开发板基本使用方法 1.软件安装 1.1MDK5 安装 ...

  7. 微信小程序云开发项目-个人待办事项-02今日模块开发

    上一篇: 微信小程序云开发项目-个人待办事项-01介绍 https://blog.csdn.net/IndexMan/article/details/124485626 模块开发步骤 本篇介绍今日模块 ...

  8. STM32开发环境(工具)之Keil MDK 介绍

    STM32微处理器基于ARM核,所以很多基于ARM嵌入式开发环境都可用于STM32开发平台.开发工具都可用于STM32开发.选择合适的开发环境可以加快开发进度,节省开发成本.本章将先对STM32常用的 ...

  9. stm32开发板能干什么?stm32开发板功能介绍

    很多开发者对于STM32开发板还都不了解,具体哪一款好用?怎么选择?让很多工程师感到困惑,今天就给大家介绍一款DFRobot商城新品,适合有经验的STM32玩家使用的一款开发板-STM32F411开发 ...

最新文章

  1. 使用U-Nets和深度学习进行自动缺陷检查
  2. 独家 | 手把手教你用Python进行Web抓取(附代码)
  3. VMware安装RedHat 6(64位)报错问题
  4. 分享代码到GitHub
  5. matlab播放视频语句,matlab语句
  6. 深度学习实战篇-基于RNN的中文分词探索
  7. pfSense如何创建和配置VLAN
  8. 信号处理:CTFS-CTFT
  9. 无代码iVX编程实现简单魂斗罗
  10. Redis学习之Docker环境搭建
  11. 案例 小型资源管理器 c# 1614611641
  12. 运算符的优先级和结合性
  13. R语言之——字符串处理函数
  14. 【Vegas原创】ctrl shift无法切换输入法的解决方法
  15. saltstack高效运维
  16. 人工智能领域的新秀——Get智能写作
  17. 关于一些初级ACM竞赛题目的分析和题解(八)
  18. html div调用js,在div中调用javascript函数
  19. linux代码丢了,Linux 使用ss命令代替 netstat
  20. 次世代建模是什么?学到什么程度才能接单赚钱

热门文章

  1. 魔兽世界客户端数据研究(二)
  2. 使用接口实现手机功能------完善
  3. 基于spark的电影数据分析
  4. 解决vue低版本ios,安卓手机浏览器打开H5页面空白的问题
  5. MySQL数据库(良心资料)
  6. 《JavaWeb从入门到改行》fileupload,没毛病
  7. 2013年9月9日--9月21日(有效时间7天,每天5小时,共35小时,还有5065小时)
  8. 十个非常好用的文件上传工具(插件)
  9. 5G网络优化工程如何完美高效地准备一场面试?
  10. Pipe(管道)的一些理解