首页 理论教育 MCP6S21可编程低增益放大器的SPI接口介绍

MCP6S21可编程低增益放大器的SPI接口介绍

时间:2023-06-19 理论教育 版权反馈
【摘要】:MCP6S21是Microchip公司针对A/D转换驱动设计的一款SPI接口的可编程低增益放大器,其中引脚SCK为SPI时钟输入、SDI为SPI串行输入、CS为SPI片选,Vref为外部参考电压引脚,这里的Vref取3.3V的1/2,即1.65V作为参考电压。图7-13 模拟信号输入接口电路图当dsPIC33FJ128MC706将片选CS置为低时,启动与MCP6S21的通信。图7-14 MCP6S21SPI接口时序图MCP6S21内部有三个8位寄存器:指令寄存器、增益寄存器和通道寄存器。其中SPI2CON1bits.MODE16=1表示数据宽度为16位;SPI2CON1bits.MSTEN=1表示dsPIC33FJ128MC706工作在主模式。其中AD1CON1bits.AD12B=1表示采用12位1通道ADC。

MCP6S21可编程低增益放大器的SPI接口介绍

输入音频模拟信号的模/数转换由dsPIC33FJ128MC706内部的ADC模块实现。由于输入信号的幅度不一定合适,在A/D转换之前需要对幅度进行调整。NUE-PSK3.1使用了一片通过SPI进行可编程的增益放大器MCP6S21对输入信号进行整形。模拟信号输入接口电路如图7-13所示。

MCP6S21是Microchip公司针对A/D转换驱动设计的一款SPI接口的可编程低增益放大器(PGA),其中引脚SCK为SPI时钟输入、SDI为SPI串行输入、CS为SPI片选,Vref为外部参考电压引脚,这里的Vref取3.3V的1/2,即1.65V作为参考电压。Vref的产生是由MCP601运放实现的,用于确保电压的稳定可靠。

978-7-111-36505-1-Chapter07-24.jpg

图7-13 模拟信号输入接口电路图

当dsPIC33FJ128MC706将片选CS置为低时,启动与MCP6S21的通信。每个SI字(双字节长)的第一个字节是指令字节,进入指令寄存器,第二个字节为数据字节,指向指令字节的目标单元。其信号时序如图7-14所示。

978-7-111-36505-1-Chapter07-25.jpg

图7-14 MCP6S21SPI接口时序图

MCP6S21内部有三个8位寄存器:指令寄存器、增益寄存器和通道寄存器。其中增益寄存器的低3位表示+1~+32的增益。

对SPI的初始化是由源文件NUE_PSK_main_1.c中的Init_SPI()函数完成的,该函数在NUE_PSK_init_SPI.c文件中定义:

978-7-111-36505-1-Chapter07-26.jpg

978-7-111-36505-1-Chapter07-27.jpg

978-7-111-36505-1-Chapter07-28.jpg

dsPIC33FJ128MC706通过SPI2与MCP6S21相连。其中SPI2CON1bits.MODE16=1表示数据宽度为16位;SPI2CON1bits.MSTEN=1表示dsPIC33FJ128MC706工作在主模式。

对MCP6S21操作的代码由NUE_PSK_Subroutines_2C.c文件中的函数Set_PGA1_Gain(intgain_index)定义:(www.xing528.com)

978-7-111-36505-1-Chapter07-29.jpg

978-7-111-36505-1-Chapter07-30.jpg

在对MCP6S21操作之前先将其片选信号拉低,然后将命令字写入寄存器SPI2BUF中,这里选中的是增益寄存器,增益值由该函数的输入参数gain_index决定,等待写入成功后将片选引脚拉高。

对ADC的初始化由源文件NUE_PSK_main_1.c中的Init_ADC()函数完成,该函数在NUE_PSK_init_ADC.c文件中定义:

978-7-111-36505-1-Chapter07-31.jpg

978-7-111-36505-1-Chapter07-32.jpg

978-7-111-36505-1-Chapter07-33.jpg

978-7-111-36505-1-Chapter07-34.jpg

这里初始化了两个ADC,前一个为模拟音频输入的ADC控制器。

其中AD1CON1bits.AD12B=1表示采用12位1通道ADC。

A/D采集到的数据将进行解调处理,其代码为NUE_PSK_Subroutines_2C.c文件中的函数Input_AD1(void):

978-7-111-36505-1-Chapter07-35.jpg

等待A/D转换结束后直接将转换后的结果ADC1BUF0输出。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈