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

📄 dsp28_spi.c

📁 TMS320F2812DSP与ADS8361的接口程序
💻 C
字号:
//
//      TMDX ALPHA RELEASE
//      Intended for product evaluation purposes
//
//###########################################################################
//
// FILE:	DSP28_Spi.c
//
// TITLE:	DSP28 SPI Initialization & Support Functions.
//
//###########################################################################
//
//  Ver | dd mmm yyyy | Who  | Description of changes
// =====|=============|======|===============================================
//  0.55| 06 May 2002 | L.H. | EzDSP Alpha Release
//  0.56| 20 May 2002 | L.H. | No change
//  0.57| 27 May 2002 | L.H. | No change
//###########################################################################

#include "DSP28_Device.h"
#include "DSP28_Spi.h"
//---------------------------------------------------------------------------
// InitSPI: 
//---------------------------------------------------------------------------
// This function initializes the SPI(s) to a known state.
//
void InitSpi(void)
{
	// Initialize SPI-A:
		// Initialize SCI-A:
	EALLOW;
	GpioMuxRegs.GPFMUX.all = 0x0007;	//GPIOF0-3
    GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1; //out
    GpioMuxRegs.GPFDIR.bit.GPIOF3 = 1; //out SPISTEA(I/O)ADS8361 CS
    
    GpioMuxRegs.GPAMUX.all=0x0000;    // 配置GPIOA13,GPIOA14和GPIOA15为普通IO口,分别控
                                      // 制ADS8361的M1,M0和RD_CONVST; 配置GPIOA0, GPIOA1, 
                                      // GPIOA2为PWM1, PWM2, PWM3来提供抗混叠滤波器MAX291
                                      // 的时钟
    GpioMuxRegs.GPADIR.all=0xE000;    // 配置GPIOA13,GPIOA14和GPIOA15的方向为输出   
	EDIS;
	

	/* loopback   8 bit data */
	SpiaRegs.SPICCR.all = 0x000f;		//0x1f 自测模式,内部SIMO SOMI连接
	
	SpiaRegs.SPICTL.all = 0x07;
	
	SpiaRegs.SPIBRR = 0x7f;		//LSPCLK/127+1  
	//----------------------------------------------
	SpiaRegs.SPIFFTX.all = 0xE042;               // SPI能重新开始发送或接收;SPI FIFO被使能;重新
                                                 // 使能发送FIFO操作;清除TXFFINT标志位;禁止TX FIFO
                                                 // 中断;发送FIFO中断级别为0级
    SpiaRegs.SPIFFRX.all = 0x2062;               // 重新使能接收FIFO操作;清除RXFFINT标志位;禁止
                                                 // RX FIFO中断;接收FIFO中断级别为1级
    SpiaRegs.SPIFFCT.all = 0x0000;                 // FIFO发送延迟位为2
    //--------------------------------------------------
	SpiaRegs.SPICCR.all = 0x008f;			//SW RESET = 1

	PieCtrl.PIEIER6.bit.INTx1 = 1;		//SPIRXINTA
	PieCtrl.PIEIER6.bit.INTx2 = 1;		//SPITXINTA
	//tbd...
	//tbd...
	
}

unsigned int Spi_TxReady(void)
{
	unsigned int i;
	if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)	//发送缓冲区满
	{
		i = 0;
	}
	else
	{
		i = 1;
	}
	return(i);
}

unsigned int Spi_RxReady(void)
{
	unsigned int i;
	if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)	//完成发送 接收了最后一位
	{
		i = 1;
	}
	else
	{
		i = 0;
	}
	return(i);	
}

// 控制开始转换RD_CONVST的子函数
void ADS8361_RDCONVST()
{
    GpioDataRegs.GPACLEAR.bit.GPIOA15 = 1;// RD_CONVST置1    rising edge
    asm (" RPT #30 || NOP");             // 延时30个时钟周期
    GpioDataRegs.GPASET.bit.GPIOA15 = 1; // RD_CONVST置0        
}

void ADS8361_CS(int state)
{
    switch(state)
    {
    case 0:
    	GpioDataRegs.GPFCLEAR.bit.GPIOF3 =1; //CS  			
        break;
    case 1:
        GpioDataRegs.GPFSET.bit.GPIOF3 =1;    // CS置1
        break;
    }
}

void ADS8361_M1(int state)
{
    switch(state)
    {
    case 0:
        GpioDataRegs.GPACLEAR.bit.GPIOA13 = 1;  // M1置0    
        break;
    case 1:
        GpioDataRegs.GPASET.bit.GPIOA13 = 1;     // M1置1
        break;
    }
}

// 控制工作模式M0的子函数

void ADS8361_M0(int state)
{
    switch(state)
    {
    case 0:
        GpioDataRegs.GPACLEAR.bit.GPIOA14 = 1;   // M0置0    
        break;
    case 1:
        GpioDataRegs.GPASET.bit.GPIOA14 = 1;   // M0置1
        break;
    }
}

//interrupt void SPIRXINTA_ISR(void);   // SPI
//interrupt void SPITXINTA_ISR(void);   // SPI
	
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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