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

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

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

起初是用分立芯片搭的,MCP41010数字电位器 + 反相放大器,效果一般。使用起来比较麻烦。

主要原因是 MCP41010只能单电源供电,运放可以用双电源供电。但由于 MCP41010单电源的原因,输入信号 <-0.7V的波形会有损失。

 

于是寻求集成芯片方案

TI的PGA主要产品

PGA280:供电范围Vs=10~36V,单/双电源供电,GBP=6MHz,SR=1V/us,Gain=1/8~128,4通道,内部放大器结构为差分。

PGA281:供电范围Vs=10~36V,单/双电源供电,GBP=6MHz,SR=1V/us,Gain=1/8~128,1通道,内部放大器结构为差分。

PGA112:供电范围Vs=2.2~5.5V,单电源供电,GBP=10MHz,SR=3V/us,Gain=1~128,2通道,内部放大器结构为同相。

PGA116:供电范围Vs=2.2~5.5V,单电源供电,GBP=10MHz,SR=3V/us,Gain=1~128,10通道,内部放大器结构为同相。

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

ADI的PGA主要产品

LTC6910-2:供电范围Vs=2.7~10.5V,单/双电源供电,GBP=11MHz,SR=12V/us,Gain=-1~-64,1运放,放大器结构为反相。

LTC6911-2:供电范围Vs=2.7~10.5V,单/双电源供电,GBP=11MHz,SR=16V/us,Gain=-1~-64,2运放,放大器结构为反相。

LTC6912-2:供电范围Vs=2.7~10.5V,单/双电源供电,GBP=30MHz,SR=20V/us,Gain=-1~-64,2运放,放大器结构为反相

果断 ADI YES,选型使用了 LTC6912CGN-2

LTC6912 内部2个反相放大器串联使用,正好使输入输出同相。增益范围为0~4096,无带宽失真,爽歪歪。

从Bom商拿了几片,¥18/pcs。

 

电路如下:

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第1张图片

 

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增益。

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第2张图片

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第3张图片

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

 

驱动代码:

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个字节
}

 

测试波形:

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

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

Gain = 1

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第4张图片

Gain = 4

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第5张图片

Gain = 16

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第6张图片

Gain = 64

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第7张图片

Gain = 64

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第8张图片

Gain = 4096

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第9张图片

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

stm32驱动LTC6912程控放大器程序,PGA可编程增益放大器,可调增益运放电路_第10张图片

 

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

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

 

你可能感兴趣的:(单片机驱动,驱动,系统,单片机,实例,教程)