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; // 自由运行
}
user151383853:
各路 REF 的信号作为 DAC 的参考信号, 只是输入信号, 不应该影响电源的供电.
所以先查一下 REF 信号的电压, 到底降下去了吗, 还是软件计算的问题, 再做进一步分析
mike Jeff:
回复 user151383853:
在tlv5620的参考电压引脚上测过了,是3.3V没错,软件计算也确定没错,因为这是8位的DA芯片,所以当数字值设为255时理论上应输出3.3V,但实际只有2.2V,当然也试过输入其他数字值在软件上,但得出的结论参考电压都是2.2V
user4308790:
回复 mike Jeff:
楼主解决了吗?
kuihui song:
楼主,我和你一样,我查看了tlv5620芯片的手册,并没有发现有2.2V参考电压的规定,或者3.3-1.1的计算,但是输出电压总是和2.2V有关,茫然中