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:
你好,我将在另一个帖子中回复你:
(+) TMS320F28069: C2000︎ 微控制器论坛 – C2000︎ 微控制器论坛 – C2000 微控制器 – E2E 设计支持 (ti.com)