1. 放大器需求

项目需求:需要用到 PGA可编程增益放大器,放大递归规律要为指数

需求参数:输入信号为100KHz正弦波,程控增益倍数 Gain=1~256。于是带宽积GBP >= 30MHz,压摆率SR>=3.2V/us

2. 起初不成熟方案

起初方案:起初是用分立芯片搭的,MCP41010数字电位器 + 反相放大器,效果一般。

优劣:使用起来比较麻烦。主要原因是 MCP41010只能单电源供电,运放可以用双电源供电。但由于 MCP41010单电源的原因,输入信号 <-0.7V的波形会有损失。几乎没有什么优势可言。

3. 后期最优方案

后期更优的方案:寻求专用集成芯片

TI的PGA主要产品

TI的PGA主要产品和参数
  供电范围Vs 电源方式 增益带宽积GBP 压摆率SR 增益倍率Gain 通道数 内部放大器拓扑结构
PGA280 10~36V 单/双电源 6MHz 1V/us 1/8~128 4通道 差分放大
PGA281 10~36V 单/双电源 6MHz 1V/us 1/8~128 1通道 差分放大
PGA112 2.2~5.5V 单电源 10MHz 3V/us 1~128 2通道 同相放大器
PGA116 2.2~5.5V 单电源 10MHz 3V/us 1~128 10通道 同相放大器

TI的PGA芯片看了一圈就很尴尬,要不不能双电源供电,要不带宽不够,要不压摆率不够。寻求其他产品。

ADI的PGA主要产品

ADI的PGA主要产品和参数
  供电范围Vs 电源方式 增益带宽积GBP 压摆率SR 增益倍率Gain 放大器数量 内部放大器拓扑结构
LTC6910-2 2.7~10.5V 单/双电源 11MHz 12V/us -1~-64 1运放 反相放大器
LTC6911-2 2.7~10.5V 单/双电源 11MHz 16V/us -1~-64 2运放 反相放大器
LTC6912-2 2.7~10.5V 单/双电源 30MHz 20V/us -1~-64 2运放 反相放大器

ADI的PGA产品参数都很硬,果断 ADI YES,选型使用了 LTC6912CGN-2

由于LTC6912内部放大器拓扑为反相放大器,输入输出反相。于是我设计电路将 LTC6912 内部2个反相放大器串联使用,正好使输入输出变为同相。并且放大器串联可以让带宽积增大,增益范围也变大为0~4096,在我的需求环境中无带宽失真,爽歪歪。

从Bom商那里拿了几片,¥18/pcs。还能用得起,比起秃头搞电路来说很实在了。

4. LTC6912电路

5. LTC6912-2 - SPI 写时序

(CLK上升沿数据有效。黄色 - CLK。蓝色 - Din。CS没接示波器,有CLK的时候CS要为低电平。)

图中SPI时序的串联总增益 = 32倍,以此为例

channel-B:Gain = -1,  对应 SPI一个字节的高4位,编码为 0001。

channel-A:Gain = -32,对应 SPI一个字节的低4位,编码为 0110。

时序较为简单,三线SPI。每次设置增益需要发送1个字节(8Bits)。高四位为channel-B增益,低四位为channel-A增益。

注意:设置增益为0时,相当于关断输出。

6. 驱动代码

uint8_t OPx[50]={   0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,};
//分别对应系统放大:1,2,4,8,16,32,64,
//                2,4,8,16,32,64,128
//                4,8,16,32,64,128,256
//                8,16,32,64,128,256,512
//                16,32,64,128,256,512,1024
//                32,64,128,256,512,1024,2048
//                64,128,256,512,1024,2048,4096//LTC6912-2 PGA增益设置
void LTC6912_SetGain(uint16_t xGain)
{uint8_t gtemp=0;switch(xGain){case 1:gtemp=0;break;case 2:gtemp=1;break;case 4:gtemp=2;break;case 8:gtemp=3;break;case 16:gtemp=4;break;case 32:gtemp=5;break;case 64:gtemp=6;break;case 128:gtemp=13;break;case 256:gtemp=20;break;case 512:gtemp=27;break;case 1024:gtemp=34;break;case 2048:gtemp=41;break;case 4096:gtemp=48;break;default:break;}LTC6912_SPI_SendOneByte(OPx[gtemp]);    //就是普通的SPI-WRITE,1个字节
}

7. 测试波形:

实际电路中 LTC6912-2 的供电为双电源 ±2.5V,输出电压轨约为 ±2V。

黄色CH1为输入信号,蓝色CH2为输出信号。

Gain = 1

Gain = 4

Gain = 16

Gain = 64

Gain = 64

Gain = 4096

Gain = 256:(输入输出依旧能保存很好的一致性)

测试仪器为泰克 TBS1202B示波器,电脑上位机截屏软件使用的是 OpenChoice。

官网下载方式太慢,附个人下载链接:https://download.csdn.net/download/Mark_md/12556223

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路相关推荐

  1. 运放电路复习,放大器、加法器、积分器、差分放大电路等

    转载自<https://mp.weixin.qq.com/s?__biz=MzIzMjQwNjQzNA==&mid=2247531156&idx=5&sn=7ed8997 ...

  2. 运放放大倍数计算公式_电源经典运放电路,加法器,减法器,同向放大器,反向放大器...

    运算放大器组成的电路五花八门,令人眼花瞭乱.工程师在分析它的工作原理时常抓不住核心,令人头大.为此小编特地搜罗天下运放电路之应用,来个"庖丁解牛",希望各位看完后有所收获. 遍观所 ...

  3. STM32系列单片机USB下载程序(ISP编程)

    一. 准备 1. FlyMcu 软件,选择DTR高电平复位,RTS低电平进入BootLoader 2. 原理图增加USB转串口芯片(CH340G) 二.说明 STM32三种启动模式对应的存储介质均是芯 ...

  4. fpga经典设计100例_图解运放电路/OP放大电路设计/OP放大器应用技巧100例

    <图解运算放大器电路>,图文结合,适合运放初学者. <OP放大电路设计>是"实用电子电路设计丛书"之一.<OP放大电路设计>内容分基础部分(1- ...

  5. 运放电路之同相放大器

    同相放大器电路的定义:信号从运放同相端输入,输出信号的一部分通过反馈电阻接到运放的反相输入端,构成负反馈.同相运放反相端通过电阻接地(或接基准电压,其中基准电压等于电源电压的一半)所构成的电路. 同相 ...

  6. STM32驱动74HC165原理图加程序

    一.原理图 二.时序图 三.驱动源码 void couple_init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCm ...

  7. STM32驱动LD3320进行语音识别程序+原理图

    一.原理图 二.源代码 LD3320.c #include "ld3320.h" #include "delay.h" #include "usart ...

  8. 关于STM32驱动LCD显示屏,程序下载后白屏、乱码需要上电复位才能恢复正常问题的解决办法

    解决方法: 在显示屏初始化前加一定延时,比如100ms,因为单片机复位时间比LCD显示屏短,可能会造成显示屏未复位完就被单片机操作的问题,如果是CUBEMX配置的工程,需要找到生成代码关于显示屏初始化 ...

  9. stm32读取目标芯片_使用stm32驱动RC522读IC卡(代码留言邮箱)

    RC522与PN532简介 关于STM32驱动方式 接线说明 程序烧录 查看卡号 总结 RC522与PN532简介 在写这篇文章之前有写过一篇有关于PN532的文章,RC522与PN532在使用上都可 ...

最新文章

  1. centos7 python
  2. java中三种转string的方法_java中int,char,string三种类型的相互转换
  3. go在方法中修改结构体的值_golang修改结构体中的切片值方法
  4. GDCM:gdcm::PixelFormat的测试程序
  5. python动态图片转字符画_使用python实现一个将图片转换成字符画的功能
  6. 高效大数据开发之 bitmap 思想的应用
  7. Linux私房菜阅读笔记
  8. 初学者怎么自学python编程_编程零基础初学者应当如何开始学习 Python?
  9. 2021-09-07客户端向 NameNode 请求创建文件,NameNode 根据元数据信息计算出文件的元数 据信息
  10. videojs如何获取请求消息_WEB之基于HTTP协议的几种实时数据获取技术
  11. 使用电脑端360安全卫士时,不小心在加速球点击自动清理残留进程,每次打开相关进程都会自动清理 - 解决方案
  12. Excel闪退问题解决办法
  13. win10 安装redis 解压版
  14. java丶对数组值按首字母进行排序
  15. LaTeX零基础入门教程及模板使用技巧
  16. 石化行业工作调度,如何选择合适的防爆对讲机?
  17. 晶振(有源晶振、无源晶振)构造,工作原理。
  18. wan端口未连接怎么弄_wan口未连接是什么意思?
  19. Charles抓包出现unknown问题
  20. python SM4加密

热门文章

  1. 查看、启动、关闭防火墙
  2. ORM框架 之 Entity Framework
  3. 冈萨雷斯--数字图像处理(MATLAB版)----书籍相关网站
  4. docker网络基础配置
  5. php部分---单文件上传的封装类
  6. 天猫广告业务独立运营
  7. ZooKeeper官方文档学习笔记01-zookeeper概述
  8. VNPY价差交易模块
  9. fckeditor 图片上传 java_ckeditor用fckeditor的文件管理器实现图片上传
  10. 从数据平台到报表开发,我靠这个零代码报表工具,转行后月薪3W