AD5231-AD7545-driver-DSP.rar

  • 黄国锋
    了解作者
  • C/C++
    开发工具
  • 5KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 48
    下载次数
  • 2011-02-15 11:24
    上传日期
基于DSP的AD5231和AD7545驱动
AD5231-AD7545-driver-DSP.rar
  • McBSP.c
    4.7KB
  • AD9831.h
    102B
  • AD5231.h
    925B
  • io.h
    2KB
  • AD5231.c
    3.1KB
  • AD7545JN.c
    1.1KB
  • AD7545JN.h
    82B
  • McBsp.h
    359B
  • AD9831.c
    2KB
内容介绍
#include "cpu_reg.h" #include "McBsp.h" unsigned int LSB=0,MSB=0; /********************************************************/ unsigned int read_subreg0(unsigned int addr) { *(SPSA0)=addr; return(*SPSD0); } ///////////////////////////////////////////////////////// void write_subreg0(unsigned int addr,unsigned int val) { *(SPSA0)=addr; *(SPSD0)=val; } /*******************************************************/ unsigned int read_subreg1(unsigned int addr) { *(SPSA1)=addr; return(*SPSD1); } ///////////////////////////////////////////////////////// void write_subreg1(unsigned int addr,unsigned int val) { *(SPSA1)=addr; *(SPSD1)=val; } /*******************************************************/ void McBsp0_init(int ps) { if(ps) { write_subreg1(SPCR1,0); write_subreg1(SPCR2,0); delay(10); write_subreg1(SPCR1,0x1800); //CLKSTP=11b write_subreg1(PCR,0x0A08); //CLKXP=0 CLKXM=1 FSXM=1 FSXP=1 write_subreg1(RCR1,0x0080); //RWDLEN1=100(每个字24位) RFRLEN1=0(每帧1个字) write_subreg1(XCR1,0x0080); //XWDLEN1=100(每个字24位) XFRLEN1=0(每帧1个字) write_subreg1(SRGR2,0x2000); //CLKSM=1 FSGM=0 write_subreg1(SRGR1,0x0040); //CLKGDV=255 write_subreg1(XCR2,0x0001); //XDATDLY=01b write_subreg1(RCR2,0x0001); //RDATDLY=01b write_subreg1(SPCR2,0x0040); //GRST=1 delay(10); *(DXR11)=0; write_subreg1(SPCR1,0x1800|1); write_subreg1(SPCR2,0x0040|1); delay(10); } else { write_subreg0(SPCR1,0); write_subreg0(SPCR2,0); delay(10); write_subreg0(SPCR1,0x1800); //CLKSTP=11b bit12-11 有延迟 //CLKSTP=10b bit12-11 无延迟 //CLKSTP=11b bit12-11 有延迟 // write_subreg0(SPCR1,0x1000);//无延迟 write_subreg0(PCR,0x0A08); //CLKXP=0 CLKXM=1 FSXM=1 FSXP=1 //CLKXP=0 bit1 接收数据在上升沿采样 //CLKXP=1 bit1 接收数据在下降沿采样 // write_subreg0(PCR,0x0A0A); //CLKXP=1 CLKXM=1 FSXM=1 FSXP=1 write_subreg0(RCR1,0x0080); //接收 RWDLEN1=100(每个字24位) RFRLEN1=0(每帧1个字) write_subreg0(XCR1,0x0080); //发送 XWDLEN1=100(每个字24位) XFRLEN1=0(每帧1个字) // write_subreg0(RCR1,0x0000); //接收 RWDLEN1=000(每个字8位) RFRLEN1=0(每帧1个字) // write_subreg0(XCR1,0x0000); //发送 XWDLEN1=000(每个字8位) XFRLEN1=0(每帧1个字) write_subreg0(SRGR2,0x2000); //CLKSM=1 FSGM=0 write_subreg0(SRGR1,0x00FF); //CLKGDV=255 write_subreg0(XCR2,0x0001); //XDATDLY=01b 1位 // write_subreg0(XCR2,0x0002); //XDATDLY=10b 2位 // write_subreg0(XCR2,0x0000); //XDATDLY=00b 0位数据延迟 write_subreg0(RCR2,0x0001); //RDATDLY=01b write_subreg0(SPCR2,0x0040); //GRST=1 delay(10); *(DXR10)=0; *(DXR20)=0; write_subreg0(SPCR1,0x1800|1); write_subreg0(SPCR2,0x0040|1); delay(10); } } /**********************************************/ void Send_Byte(unsigned int DataL,unsigned int DataH,int ps) { unsigned int temp; if(!ps) { do{ temp=read_subreg0(SPCR2); }while((temp &0x0002)!=0x0002); *DXR10=DataL; *DXR20=DataH; } else { do{ temp=read_subreg1(SPCR2); }while((temp &0x0002)!=0x0002); *DXR11=DataL; *DXR21=DataH; } } void Read_Byte(void) { unsigned int temp; write_subreg0(RCR1,0x0060); //RWDLEN1=010(每个字20位) RFRLEN1=0(每帧1个字) write_subreg0(XCR1,0x0060); //XWDLEN1=010(每个字20位) XFRLEN1=0(每帧1个字) //write_subreg0(PCR,0x0A0A); //CLKXP=1 数据在时钟下降沿发送 delay(10); // Send_Byte(0x0000,0); //Send_Byte(0x00); while(1) { temp=read_subreg0(SPCR1); if(temp &0x0002) break; } MSB= *DRR20; LSB= *DRR10; delay(10); // write_subreg0(PCR,0x0A08); //CLKXP=0 恢复:数据在时钟下降沿发送 write_subreg0(RCR1,0x0000); //RWDLEN1=000(每个字8位) RFRLEN1=0(每帧1个字) write_subreg0(XCR1,0x0000); //XWDLEN1=000(每个字8位) XFRLEN1=0(每帧1个字) //return(*DRR10); } ////////////////////////////////////////////////////////// void delay(unsigned int k) { while(k--); }
评论
    相关推荐
    • ad7606.rar
      一个ADC芯片的接口代码,支持ADI公司的16位ADC芯片AD7606
    • AD7988.zip
      AD7988芯片的控制和采样时序,可以作为测试程序进行验证
    • AD元件库
      AD元件库,大家可以在学习过程中应用到元件库,在AD实验都需要
    • ad学习资料
      ad9学习资料。。。。。。。。。。。。。
    • AD绘制 PCB
      AD用于绘制PCB,安装简单方便易懂,可以尝试。
    • AD770X.zip
      AD采集模块,2路AD,基于arduino代码。
    • AD5791.rar
      AD5791,驱动,stm32f407平台
    • AD.zip
      AD单片机信号采集,51单片机模拟信号采集,新手教程
    • AD5624.rar
      ADI公司串行DA芯片AD5624的VHDL源码,实际工程应用成功、 (ADI Corporation serial DA of the AD5624 chip VHDL source code, the actual engineering application success)
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路