⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ads7844.c

📁 本程序采用ADS7844 12位AD采样芯片具有采样速率快精确度高等优点
💻 C
字号:
/*********************************************************************
** 功能描述:模数转换程序**
*********************************************************************/
#include "DSP28_Device.h"

#define uint unsigned int
#define DCLK GpioDataRegs.GPFDAT.bit.GPIOF13
#define CS   GpioDataRegs.GPFDAT.bit.GPIOF12
#define DIN  GpioDataRegs.GPFDAT.bit.GPIOF11
#define DOUT GpioDataRegs.GPFDAT.bit.GPIOF9
#define BUSY GpioDataRegs.GPFDAT.bit.GPIOF10

void IOinit(void)
{
    EALLOW;
    GpioMuxRegs.GPFDIR.bit.GPIOF13 = 1;   //GPIO F13为输出
	GpioMuxRegs.GPFDIR.bit.GPIOF12 = 1;   //GPIO F12为输出
	GpioMuxRegs.GPFDIR.bit.GPIOF11 = 1;   //GPIO F11为输出
	CS=1; 	DCLK=0; 
	EDIS;
}

uint ADS7844(void) 
{
	uint temp,i;
	CS=0;
	temp=0x87;//控制字
	temp<<=8;
	for(i=0;i<8;i++)
		{
			DCLK=0;	
			if((temp&0x8000)==0x8000)DIN=1;
			else DIN=0; 
			temp<<=1;
			DCLK=1;	
		}
	DCLK=0;
	DCLK=1;
	while(BUSY==0);
	temp=0x00;
	for(i=0;i<16;i++)
		{
			DCLK=0;	
			if(DOUT==1)temp|=0x01; 
			temp<<=1;
			DCLK=1;	
		}
	DCLK=0;
	CS=1;
	temp>>=4;
	return(temp);	
}

void Spi_intial() 
 {
 	SpiaRegs.SPICCR.all = 0x004F;    //  使SPI处于复位模式, 下降沿,16位数据  
	SpiaRegs.SPICTL.all = 0x000d;    // 主控模式, 一般时钟模式,使能talk, 关闭SPI中断 0x000D:表示有延时
	SpiaRegs.SPIBRR = 0x007F;        //  配置波特率
	SpiaRegs.SPICCR.all = SpiaRegs.SPICCR.all|0x0080; //  退出复位状态	 
	EALLOW;	
    GpioMuxRegs.GPFMUX.all = 0x000F;      //  设置通用引脚为SPI引脚	 	
    EDIS;
  }
void main(void) 
{
	unsigned int i20,temp11,d_a_data;
	InitSysCtrl();
	IOinit();
	EALLOW;
	SysCtrlRegs.HISPCP.all = 0x3;// 高速外设模块时钟HSPCLK=SYSCLKOUT/6=25Mhz
	EDIS;
	DINT;         // 关闭总中断
	IER = 0x0000; // 关闭外设中断
	IFR = 0x0000; // 清中断标志
	Spi_intial();       // SPI初始化子程序
	/*
	SpiaRegs.SPITXBUF = 0xD002; // 初始化指令:DAC_A使能 内部参考,输出2.048
    while(SpiaRegs.SPISTS.bit.INT_FLAG != 1);
    SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF;
	d_a_data=100;  //(0--2047)
    for(i20 = 0; i20<2; i20++);
	SpiaRegs.SPITXBUF = 0xC000|d_a_data;  // DAC_A置数  
    while(SpiaRegs.SPISTS.bit.INT_FLAG != 1);
   	SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF;
	temp11= ADS7844();
	*/
    d_a_data=2000;
/* 	GpioDataRegs.GPBDAT.bit.GPIOB9  = 0;                  */
/* 	//DSP28x_usDelay(20);                                 */
/* 	SpiaRegs.SPITXBUF = 0x5000|d_a_data; //  0101         */
/*     while(SpiaRegs.SPISTS.bit.INT_FLAG != 1){}         */
/*     SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF;             */
/*     //DSP28x_usDelay(20);                              */
/*     GpioDataRegs.GPBDAT.bit.GPIOB9  = 1;               */

    //DSP28x_usDelay(20);
	GpioDataRegs.GPBDAT.bit.GPIOB9  = 0;
	//DSP28x_usDelay(20);
	SpiaRegs.SPITXBUF = 0xc000|d_a_data;  // DAC_A置数 
    while(SpiaRegs.SPISTS.bit.INT_FLAG != 1){}
 	SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF;
    //DSP28x_usDelay(20);
    GpioDataRegs.GPBDAT.bit.GPIOB9  = 1;

	while (1)
   	{
	
	DSP28x_usDelay(205630);
	


   	};
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -