网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> FAQ >> 硬件开发 >> 文章正文
  AD50C程序已经调试好         ★★★ 【字体:
AD50C程序已经调试好
作者:skywolf    文章来源:本站原创    点击数:    更新时间:2004-7-20    

我的毕设的DA不慎ti的tl320ad50c,将近一周的时间都在调它
今天终于通了!除了一口恶气!!
有点感想,向曾经或正在被他还得也不能寐的朋友共享一下我的
经验吧,这样可以少走一些弯路。
1)使用da时间一最好还是用常用的并行的片子,变成时采用定时
  器中断,这样的冬冬很多,  千万不要看5402dsk上很好用就以为
  他很简单(这是血的教训阿)
2)他的外围电路虽不复杂,但是那个8.192MHz的有源晶振就足以让
  我跑断了腿,大连没有卖的,我差点让mm帮我从北京及两个过来。
  由一个弥补办法,就是可以采用8.192倍数的晶振,我用的是32.768
  ,要使用ad50内部的dpll。
3)他的ad/da采样率不高,只有22.05khz,仅限于语音处理,如果要
  处理数据就有点难度了。
4)建议使用硬件初始化,即FC。我一周的时间都花在软件初始化上
  面了,现在想想真是心疼啊。软件初始化,da的输出频率不准。至少
  我是这样的。硬件初始化,一次就通过了,爽!
以下是我的程序,用C语言编的。包括McBsp和AD50C的初始化
main()
{
        ResetMcBsp();
        InitMcBsp();
        OutReset();
        Init_AD50C();
//      initad50c();
        while(1)
        {
                for(i=0;i<8;i++)
        {       
                DXR11_RDY();
                DXR11=sin[i];
        }
        }
}
void ResetMcBsp(void)
{
   SPSA1 = 0x0000;
   SPSD1 = 0x0000;    //rrst = 0; //串口控制寄存器1 清零
   SPSA1 = 0x0001;    //xrst = frst = 0;
   SPSD1 = 0x0000;               //串口控制寄存器2 清零
}
void InitMcBsp(void)
{
   SPSA1 = 0x0002;  //rcr       //RCR1接收控制寄存器1
   SPSD1 = 0x0040;  //16bit     //接收字长度16bit

   SPSA1 = 0x0003;              //RCR2接收控制寄存器2
   SPSD1 = 0x0000; //single phase  & 1  delay//接收长度8bit,无延时
   SPSA1 = 0x0004; //xcr        //XCR1发送控制寄存器1
   SPSD1 = 0x0040;              //发送字长度16bit

   SPSA1 = 0x0005;             //XCR2发送控制寄存器2
   SPSD1 = 0x0000;             //发送长度8bit,无延时

   SPSA1 = 0x0006;             //SPGR1采样率发生器寄存器1
   SPSD1 = 0x0000;             //值为0

   SPSA1 = 0x0007;             //SPGR2采样率发生器寄存器2
   SPSD1 = 0xA000;

   SPSA1 = 0x000E;             //PCR1引脚控制寄存器
   SPSD1 = 0x000C;             //接收数据采样率在时钟CLKR的下降沿
                               //发送数据采用率在时钟CLKX的上升沿
                               //接收帧同步脉冲低电平有效
                               //发送帧同步脉冲低电平有效
                               //CLKR,CLKX,FSR 输入脚
   asm (" nop");
   asm (" nop");
   asm (" nop");
   asm (" nop");
}
void OutReset(void)
{
// SPSA1 = 0x0000;              //SPCR1串口控制寄存器1
// SPSD1 = 0x0001;                      //rrst = 1; //打开接收
   SPSA1 = 0x0001;                   //xrst = frst = 1;//SPCR1串口控制器2
   SPSD1 = 0x0007;             // 打开发送,DXR XSR不空发送
  asm (" nop");
  asm (" nop");
   asm (" nop
   asm (" nop");
}
void Init_AD50C(void)
{
        asm(" ssbx xf");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11=0x0181;                       //寄存器1   软件复位
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11_RDY();
        asm(" ssbx xf");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11=0x0101;                               //TLC320AD50C脱离复位
                                                                //并且设置寄存器1,使INP,INM为输入
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11_RDY();

        asm(" ssbx xf");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11=0x0210; //16bitadc        //寄存器2    16位ADC
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11_RDY();
        asm(" ssbx xf");
        asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11=0x04c0;                       //寄存器4       N=4
                                        //因为晶振为32.768MHz
                                        //采样频率16kHz
                                        //所以32768/16=2048=512*4
                                        //Bypass internal PLL,D7=1
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11_RDY();
    DXR11=0x0300;
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");
    DXR11_RDY();
    asm (" nop");
    asm (" nop");
    asm (" nop");
    asm (" nop");                                                                     //N=4
        
}
void DXR11_RDY(void)
{
    SPSA1=0x0001;
    while(!((SPSD1&0x02)==0x02)){};     //判断DXR发送寄存器是否准备好接收新数据
    asm(" rsbx xf");
}


               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    两个从AD50和DSP连接
    两个AD50和DSP连接
    AD50和一个DSP的连接
    AD50模拟和数字电源的连接
    AD50的去耦合电容的连接
    AD50参考代码
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号