MS91051应用指南
MS91051是一款适用于 (NDIR) 传感应用的可配置放大器,它内置了两级可选增益的放大器。第一级可选246、41倍增益,第二级可选4、8、16、32倍增益,而在两极之间,可以外加滤波器,不需要外加滤波器则可以直连。两级放大器的基准电压则可以通过CMOUT脚输出,该基准电压可以通过寄存器选择1.15V或者2.59V。它还有内置的DAC,可以对失调电压进行补偿,补偿的方法为直接对第二级放大器的输出进行调整,DAC寄存器的每一个LSB可以调整34mV。 上述这些功能都需要通过SPI接口对内部寄存器进行指令的读写操作,而不进行读写操作,MS91051上电没有任何功能(重新上电则寄存器数据清空,需要重新读写)。但是在初次使用中,会出现无法进行通讯的情况,且规格书中写的较为复杂,基于这种情况,就有了这一份MS91051的调试说明,以方便进行初次使用。为了方便调试,调试过程中的SPI通讯速率建议先用20KHZ左右,调通后,可以再对通讯速率进行提升。 图一是MS91051的推荐线路图,C6C7是电源端的滤波电容;C1C2为耦合电容;C5为CMOUT的滤波电容;R1R2C3C4为A0和A1脚之间的滤波电路,可以根据需要去掉或者修改;R3是SDIO的上拉电阻;R4C8是输出的滤波电路,可根据需要去掉或修改。 图二是我司的测试电路,该方案中,与MS91051进行通讯的MCU,我司选择的是MS616F512NS,它的封装是QFN48,且有0.1uA的关断功耗,可以满足正常的使用。当IO口需求较大时,还有LQFP100的MS616F512可以选择。 电路连接较为简单,功能只是为了与MS91051进行通讯。器件JTAG1是MS616F512NS的JTAG接口,是为了方便在线调试。MCU的P1.0接SDIO脚,P1.1接SCLK脚,P1.2接CSB脚。 接下去就是调试方法,因为调试过程中不需要进行芯片选择,所以前面三部中CSB脚一直置低。 1、第一步是使用MS616F512NS调试出能被MS91051识别到的数据 图三是MS91051规格书中的数据时序,C7读写控制位,0为写1为读;C6到C4固定为0;C3到C0是寄存器的地址,0x0是器件配置,0x1是DAC配置,0xF是SDIO模式使能;D7到D0为配置数据,详情请看规格书。 MS91051的SPI是上升沿为数据采集点。我司写的是0x00(写模式,器件配置)+0x60(IN1输入,PGA1 PGA2打开,由PGA1到PGA2,CMOUT输出1.15V,GAIN2=4,GAIN1=250),程序在该文件最后,波形如下图(请使用示波器监测该波形,逻辑分析仪有时候无法发现问题) 2、将调试出来的波形写入MS91051的SPI管脚,此时MS91051的外围不需要全接,可以按下图连接 写入后,测量CMOUT脚的电压,此时电压应该为1.15V左右。若有1.15V输出,则MS91051的写数据已经调试成功;若无,则检查此时单片机输出波形是否正常,或者更换新的MS91051进行尝试。 3、对MS91051内部寄存器进行读操作,需要先让MS91051进入SDIO模式,这时候需要写入连续的序列0xFE和0xED(即写入0x0F+0XFE,再写0x0F+0XED),写除了这个序列以外的任何序列都会脱离该模式。进入SDIO模式的波形如下: 进入SDIO模式后,我司选择的是读取DAC寄存器的值,写0x81,将P1.0改为输入,加延时,再给SCLK脚提供一个时钟信号,SDIO就会有寄存器的数据输出。SDIO的数据会在SCLK下降沿改变,所以可以在SCLK上升沿之前读取数据。 因为程序中设置DAC寄存器值为0x80,所以读到的值也为0x80: 当需要退出该SDIO模式,进入写模式时,可以写入0x0F+0x00,这时候再进行读数据操作,读取到的会是0xFF(因为有5.1K上拉,所以读到的信号每一位都为1): 4、CSB的使用,CSB只需要在数据前拉低,写完数据后拉高即可,但是CSB需要10ns的建立时间,所以不能在拉低CSB的同时写数据,以写0x00+0x60为例: P1OUT = 0x06; _NOP(); WRITE(0x00); WRITE(0x60); P1OUT = 0x06; 在CSB和数据之间可以加一个空指令,以保证CSB的建立。 以上四步都调试成功后,则可以根据自己的需要,对SCLK的SPI频率进行更改,对内部寄存器进行配置和对外围器件进行修改,以满足程序与硬件的需求。 |
网友评论