微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > DSP28335通过SPI控制dac88s085进行DA转换的程序问题,此程序无输出。不知程序有什么问题

DSP28335通过SPI控制dac88s085进行DA转换的程序问题,此程序无输出。不知程序有什么问题

时间:10-02 整理:3721RD 点击:
DA转换部分程序如下,SPI的spisimo连接的DAC的DIN,SPI 的时钟连接DA的时钟。GPIO57脚连接的DA的片选信号,

#define SetLOAD GpioDataRegs.GPBDAT.bit.GPIO57=1;        //将LOAD置高
#define ClrLOAD GpioDataRegs.GPBDAT.bit.GPIO57=0;        //将LOAD置低
InitSpiaGpio();//将SPI的时钟和主设备输出设为功能引脚
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // 配置GPIO17为GPIO口
        GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1;      // 定义GPIO17输出引脚
        GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0;      // 禁止上啦 GPIO17引脚
        EDIS;
SetLOAD;        //把刷新锁存控制信号拉高
    WriteDAC(9,0,0);//选择DAC的WTM模式
    temp=20;//REF=2.2V;VO(DACA|B|C|D) =REF* CODE/256
    while(1)
    {
                
                WriteDAC(0,0,temp);                //0.4V
          
                WriteDAC(1,0,temp*2);        //0.8V
                WriteDAC(2,0,temp*3);        //1.2V
                WriteDAC(3,0,temp*4);        //1.6V
                delay(1500);        //在此设断点,用万用表直接测量四路DA的输出电压值
        }
}        
       
void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol)
{
        unsigned short int data;
    data=0x0000;
    ///add是4个通道的地址
    ///                                 
    ///                     

    data = ((add<<12) | (rng<<4) | (vol<<0));
     ClrLOAD;//低电平时在时钟信号的下降沿DA进行写数据
   while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG ==1);                        //判断SPI的发送缓冲区是否是空的,等于0可写数据
       SpiaRegs.SPITXBUF=data;        //把发送的数据写如SPI发送缓冲区
  while( SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1);                //当发送缓冲区出现满标志位时,开始琐存数据
             
    delay(1500);
        SetLOAD;
    }


void spi_init()
{   
        SpiaRegs.SPICCR.all =0x4f;///进入初始状态,数据在下降沿输出,自测禁止,16位数据模式
                                    
        SpiaRegs.SPICTL.all =0x0006; // 使能主机模式,正常相位,使能主机发送,禁止接收
                                    //溢出中断,禁止SPI中断;
        SpiaRegs.SPIBRR =0x0009;        //SPI波特率        3.75
    SpiaRegs.SPICCR.all =0xcf; //退出初始状态;
    SpiaRegs.SPIPRI.bit.FREE = 1;  // 自由运行     
}


已退回5积分

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

网站地图

Top