热门关键词: 缝纫设备 济南海辉水处理设备 圆管抛光机 苏州工业自动化设备 上海轮胎翻新设备 工业节电设备 烧结实验设备
  IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
相关专题
TMS320LF2407 SPI接口的DA 实验
新闻出处:嵌入式技术网 发布时间:2007-11-15

//Main.c
//SPI-TLC5620 DA转换程序
#include "global.c"
void SystemInit();
void Timer1Init();
void KickDog(); 
void SPI_Init();
void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA); 
int numled0=200;  
unsigned int t0=0,i=0;  
int Voltage=0;
main()

   SystemInit();           //系统初始化
   MCRA=MCRA & 0xC0FF;       //IOPB0-6设为IO口模式
   PBDATDIR=0xFFC2;         //所有LED=0
   PBDATDIR=PBDATDIR | 0x003D;  //所有LED=1 
   SPI_Init();     
//   CreateDASigal();
/*   while(1)
   {
   CreateDASigal();
   i=10;  
   for(i=0;i<100;i++);
   }    */
   Timer1Init();           //定时器初始化
   asm(" CLRC INTM ");
   while(1);
  
}


void SystemInit()

 
 asm(" SETC INTM "); //关闭总中断
 asm(" CLRC  SXM  "); //禁止符号位扩展
 asm(" CLRC  CNF  ");    //B0块映射为 on-chip DARAM
 asm(" CLRC  OVM  ");    //累加器结果正常溢出
 SCSR1=0x87FE;          //系统时钟CLKOUT=20*2=40M
          //打开ADC,EVA,EVB,CAN和SCI的时钟
 WDCR=0x006F;   //禁止看门狗,看门狗时钟64分频
 KickDog();       //初始化看门狗 
    IFR=0xFFFF;    //清除中断标志
    IMR=0x0003;    //打开中断2    
   

void Timer1Init()          
{

    EVAIMRA=0x0080;   //  定时器1周期中断使能
    EVAIFRA=0xFFFF;   //  清除中断标志
    GPTCONA=0x0000;
 T1PR=2500;    // 定时器1初值,定时0.4us*2500=1ms    
 T1CNT=0;
 T1CON=0x144E;           //增模式, TPS系数40M/16=2.5M,T1使能
    
}

void SPI_Init()             //SPI-DA初始化
{
    MCRB=MCRB | 0x0014;     //SPISIMO,SPICLK特殊功能方式
    PBDATDIR=PBDATDIR | 0x0002;     //CS_DA=1
    SPICCR=0x004a;          //11bit数据
    SPICTL=0x0006;          //禁止中断
    SPIBRR=0x0027;          //1M波特率,40M/40=1M
    SPICCR=SPICCR | 0x80;  

}

void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA)

    unsigned char flag=0;
    SPITXBUF=(CHANNEL<<14)|(RNG<<13)|(SPI_DATA<<5) ;      //bit10,9~CHANNEL;bit8~RNG倍数
    while(1)
    {
    flag=SPISTS&0x40;
    if(flag==0x40)     break;
    }
    SPIRXBUF=SPIRXBUF;             //虚读寄存器以清除中断标志    

    PBDATDIR=PBDATDIR & 0xFFFD;  //CS_DA=0,更新模拟信号输出  
    for(i=0;i<5;i++);              //延时
    PBDATDIR=PBDATDIR | 0x0002;     //CS_DA=1,锁存数据  
   
}

void c_int2()                     //定时器1中断服务程序
{

    if(PIVR!=0x27)
  {   asm(" CLRC INTM ");
   return;
  }
 T1CNT=0;
 
 numled0--;
 if(numled0==0)
 {
  numled0=200;
  if((PBDATDIR & 0x0001)==0x0001)
   PBDATDIR=PBDATDIR & 0xFFFE;     //IOPB0=0;LED灭 
  else
   PBDATDIR=PBDATDIR |0x0101;      //IOPB0=1;LED亮
 }
    if(Voltage<0) Voltage=0;
    DA_OUT(0,0,Voltage);                //Voltage范围0-255对应0-3.3V
    DA_OUT(1,0,Voltage);                //Voltage范围0-255对应0-3.3V
    DA_OUT(2,0,192);                  //2.475V,Voltage范围0-255对应0-3.3V
    DA_OUT(3,0,128);                  //1.65V,Voltage范围0-255对应0-3.3V
    if(t0<255)  Voltage++;
      else  Voltage--;
    if(Voltage<0) Voltage=0;
    if(t0==508)     t0=0;
      
    t0++; 
   
 EVAIFRA=0x80;
 asm(" CLRC INTM ");  
 

void KickDog()          //踢除看门狗
{
 WDKEY=0x5555;
 WDKEY=0xAAAA;
}


关闭】【打印
友情链接:
© 2007 电子设备网 网站地图