Part Number:TMS320F28069Other Parts Discussed in Thread:TLV5620
我在实现F280069上实现AD\DA实验,AD使用ePWM触发,DA通过SPI与TLV5620芯片通信实现,现在在5000HZ及以上频率时,黄色的输出波形脉冲宽度大,导致无法很好还原输入波形,个人认为是程序设置问题,想请问有没有解决方法?
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from CMPA on upcount
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
EPwm1Regs.CMPA.half.CMPA = 350; // Set compare A value
EPwm1Regs.TBPRD =600; // Set period for ePWM1
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // count up and start
void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol)
{
unsigned short int data;
data=0x0000;
data = ((add<<14) | (rng<<13) | (vol<<5));
while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG ==1); //判断SPI的发送缓冲区是否是空的,等于0可写数据
SpiaRegs.SPITXBUF = data; //把发送的数据写如SPI发送缓冲区
while( SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1); //当发送缓冲区出现满标志位时,开始琐存数据
delay(1500);//同通过一负跳变琐存要发送的数据,看TLV5620数据手册即可得知
ClrLOAD;
SetLOAD;
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; // 自由运行
}
Ben Qin:
你好,请解释一下黄色和蓝色的波形分别是什么波形。
,
?? ?:
蓝色是数字信号发射器给的正弦波,是输入信号,黄色是经过AD、DA转换后输出的波形,频率高了(大概4khz)黄色就不是正弦波,且有一定相位差,频率100、200hz是完美的正弦波,没有相位差
,
Ben Qin:
查看下只经AD转换后的波形是怎么样的,先排除AD的问题。
,
?? ?:
是用graph功能观察输入的AD波形吗,保存了一些频率下的波形
,
Ben Qin:
是的,可以的。请检查下该波形是否正确。