[其他ST产品] stm32驱动LTC6912程控放大器程序

[复制链接]
1022|15
 楼主| 原来是wjc 发表于 2023-7-8 15:30 | 显示全部楼层 |阅读模式
stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路
1. 放大器需求
项目需求:需要用到 PGA可编程增益放大器,放大递归规律要为指数。

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



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

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



3. 后期最优方案

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

TI的PGA主要产品:

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


 楼主| 原来是wjc 发表于 2023-7-8 15:32 | 显示全部楼层
ADI的PGA主要产品:

ADI的PGA主要产品和参数

6064664a910feb9586.png

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

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

从Bom商那里拿了几片,¥18/pcs。还能用得起,比起秃头搞电路来说很实在了。
 楼主| 原来是wjc 发表于 2023-7-8 15:32 | 显示全部楼层
4. LTC6912电路

471164a911172d14d.png
 楼主| 原来是wjc 发表于 2023-7-8 15:33 | 显示全部楼层
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增益。

4751464a911442b2b9.png
 楼主| 原来是wjc 发表于 2023-7-8 15:33 | 显示全部楼层
5531364a9114f01fc2.png

注意:设置增益为0时,相当于关断输出。
 楼主| 原来是wjc 发表于 2023-7-8 15:33 | 显示全部楼层
6. 驱动代码
  1. uint8_t OPx[50]={   0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  2.                     0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  3.                     0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  4.                     0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  5.                     0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  6.                     0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
  7.                     0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,};
  8. //分别对应系统放大:1,2,4,8,16,32,64,
  9. //                2,4,8,16,32,64,128
  10. //                4,8,16,32,64,128,256
  11. //                8,16,32,64,128,256,512
  12. //                16,32,64,128,256,512,1024
  13. //                32,64,128,256,512,1024,2048
  14. //                64,128,256,512,1024,2048,4096

  15. //LTC6912-2 PGA增益设置
  16. void LTC6912_SetGain(uint16_t xGain)
  17. {
  18.         uint8_t gtemp=0;

  19.         switch(xGain)
  20.         {
  21.                 case 1:
  22.                         gtemp=0;
  23.                         break;
  24.                 case 2:
  25.                         gtemp=1;
  26.                         break;
  27.                 case 4:
  28.                         gtemp=2;
  29.                         break;
  30.                 case 8:
  31.                         gtemp=3;
  32.                         break;
  33.                 case 16:
  34.                         gtemp=4;
  35.                         break;
  36.                 case 32:
  37.                         gtemp=5;
  38.                         break;
  39.                 case 64:
  40.                         gtemp=6;
  41.                         break;
  42.                 case 128:
  43.                         gtemp=13;
  44.                         break;
  45.                 case 256:
  46.                         gtemp=20;
  47.                         break;
  48.                 case 512:
  49.                         gtemp=27;
  50.                         break;
  51.                 case 1024:
  52.                         gtemp=34;
  53.                         break;
  54.                 case 2048:
  55.                         gtemp=41;
  56.                         break;
  57.                 case 4096:
  58.                         gtemp=48;
  59.                         break;
  60.         default:
  61.             break;
  62.         }
  63.        
  64.         LTC6912_SPI_SendOneByte(OPx[gtemp]);    //就是普通的SPI-WRITE,1个字节
  65. }
 楼主| 原来是wjc 发表于 2023-7-8 15:34 | 显示全部楼层
7. 测试波形:
实际电路中 LTC6912-2 的供电为双电源 ±2.5V,输出电压轨约为 ±2V。

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

Gain = 1:

5534864a91170d13ab.png
 楼主| 原来是wjc 发表于 2023-7-8 15:34 | 显示全部楼层
Gain = 4: 1847264a9119a663ad.png
 楼主| 原来是wjc 发表于 2023-7-8 15:35 | 显示全部楼层
Gain = 16: 9947164a911a6bcbdd.png
 楼主| 原来是wjc 发表于 2023-7-8 15:35 | 显示全部楼层
Gain = 64:
5099764a911b6d8850.png
 楼主| 原来是wjc 发表于 2023-7-8 15:35 | 显示全部楼层
Gain = 4096:
4870064a911cbe9901.png
 楼主| 原来是wjc 发表于 2023-7-8 15:35 | 显示全部楼层
Gain = 256:(输入输出依旧能保存很好的一致性)
3957964a911d9356e8.png
 楼主| 原来是wjc 发表于 2023-7-8 15:36 | 显示全部楼层
测试仪器为泰克 TBS1202B示波器,电脑上位机截屏软件使用的是 OpenChoice。

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

MessageRing 发表于 2023-7-9 23:23 | 显示全部楼层
18一片已经很贵了啊
Clyde011 发表于 2024-1-16 17:15 | 显示全部楼层
万图 发表于 2024-1-16 19:11 | 显示全部楼层

输出负载电流环路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

1250

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部