微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > dsp2812外接tlv5620DA芯片参考电压与实际不符

dsp2812外接tlv5620DA芯片参考电压与实际不符

时间:10-02 整理:3721RD 点击:

tlv5620的硬件接线如图,参考电压(2,3,4,5)和VDD接的是dsp的3.3V端,(6,7)接到dsp2812的SPISIMO口和SPICLK口,但实际测得参考电压只有2.2V,求教

以下是程序:

#define SetLOAD GpioDataRegs.GPADAT.bit.GPIOA15=1;   //将LOAD置高
#define ClrLOAD GpioDataRegs.GPADAT.bit.GPIOA15=0;   //将LOAD置低
int QQ=47,QA=0;
void main(void)
{
   InitSysCtrl();
   DINT;
   IER = 0x0000;
      IFR = 0x0000;
   InitPieCtrl();
   InitPieVectTable();
   InitGpio();
   spi_init();
   EINT;
   ERTM;
   SetLOAD;
        while(1)
        {

              
            WriteDAC(0,QA,QQ);     //0.4V

                       WriteDAC(1,QA,QQ);   //0.8V

                       WriteDAC(2,QA,QQ);   //1.2V

                       WriteDAC(3,QA,QQ);   //1.6V
                 
        }    


//===========================================================================
// No more.
//===========================================================================
void InitGpio(void)
{

     EALLOW;
     GpioMuxRegs.GPAMUX.all=0x0000;
     GpioMuxRegs.GPADIR.all=0xFFFF;            // upper byte as output/low byte as input
     GpioMuxRegs.GPAQUAL.all=0x0000;        // Input qualifier disabled

// Set GPIO B port pins, configured as EVB signals
// Input Qualifier =0, none
// Set bits to 1 to configure peripherals signals on the pins

     GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2=1;
     GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0=1;

}


void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol)
{
    unsigned short int data;
    data=0x0000;
     data = ((add<<14) | (rng<<13) | (vol<<5));
     //注意这里的有效数据是11位,SPI初始化中也进行了定义

   while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG ==1);            //判断SPI的发送缓冲区是否是空的,等于0可写数据

    SpiaRegs.SPITXBUF = data;  //把发送的数据写如SPI发送缓冲区

    while( SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1);        //当发送缓冲区出现满标志位时,开始琐存数据

    delay(1500);//同通过一负跳变琐存要发送的数据,看TLV5620数据手册即可得知
    ClrLOAD;//给个下降沿更新DAC输出

    delay(150);
    SetLOAD;//LOAD置1重新输入数据

    delay(1500);
}

void delay(unsigned int t)
{

    while(t>0)
        t--;
}
//初始化SPI函数
void spi_init()
{
    SpiaRegs.SPICCR.all =0x0a;///进入初始状态,数据在上升沿输出,自测禁止,11位数据模式

    SpiaRegs.SPICTL.all =0x0006; // 使能主机模式,正常相位,使能主机发送,禁止接收
                                //溢出中断,禁止SPI中断;

    SpiaRegs.SPIBRR =0x0031;    //SPI波特率=37.5M/50   =0.75MHZ;
    SpiaRegs.SPICCR.all =0x8a; //退出初始状态;
    SpiaRegs.SPIPRI.bit.FREE = 1;  // 自由运行
}

各路 REF 的信号作为 DAC 的参考信号, 只是输入信号, 不应该影响电源的供电.

所以先查一下 REF 信号的电压, 到底降下去了吗, 还是软件计算的问题, 再做进一步分析

在tlv5620的参考电压引脚上测过了,是3.3V没错,软件计算也确定没错,因为这是8位的DA芯片,所以当数字值设为255时理论上应输出3.3V,但实际只有2.2V,当然也试过输入其他数字值在软件上,但得出的结论参考电压都是2.2V

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top