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

📄 dsp28_spi.c

📁 使用spi fifo中断进行接受和cputimer中断里进行发送
💻 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"

//---------------------------------------------------------------------------
// InitSPI: 
//---------------------------------------------------------------------------
// This function initializes the SPI(s) to a known state.
//
void InitSpi(void)
{
	// Initialize SPI-A:
		// Initialize SCI-A:
	EALLOW;
	GpioMuxRegs.GPFMUX.all = 0x000f;	//0000 0000 0000 1111:GPIOF0 SPISIMOA (O)SPI从输入/主输出引脚,GPIOF1 SPISOMIA (I)SPI从输出主输入引脚,GPIOF2 SPICLKA (I/O)SPI串行时钟引脚,GPIOF3 SPISTEA (I/O)SPI从发送时能引脚
	EDIS;
	/* loopback   8 bit data */
	SpiaRegs.SPICCR.all = 0x1f;	//配置控制寄存器(SPICCR):低-高:0-3字符长度控制位,4:SPI自测模式:1自测模式使能,SIMO-SOMI线路在内部连在一起,用于模块自测
	
	SpiaRegs.SPICTL.all = 0x07;	//操作控制寄存器:0000 0111:低-高:SPI INT ENASPI中断使能位:0禁止中断,1使能中断;TALK:主动/从动发送使能:0禁止发送,1:使能发送:对于4引脚选项保证使能接收器的SPISTE引脚。MASTER/SLAVE:网络模式控制:0:SPI配置为从动模式 1:配置为主动模式
	
	SpiaRegs.SPIBRR = 0x7f;	//波特率设置寄存器
	
	SpiaRegs.SPICCR.all = 0x9f;	//配置控制寄存器(SPICCR):低-高:0-3字符长度控制位,4:SPI自测模式:1自测模式使能,SIMO-SOMI线路在内部连在一起,用于模块自测。7:SPI SW RESET软件复位位,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.PIEACK.bit.ACK6 = 1;
	PieCtrl.PIEIER6.bit.INTx1 = 1;	//SPIRXINTA(SPI模块)使能
	PieCtrl.PIEIER6.bit.INTx2 = 1;	//SPITXINTA(SPI模块)使能
	//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)
	if(SpiaRegs.SPIFFRX.bit.RXFFINT == 1)
	{
		i = 1;
	}
	else
	{
		i = 0;
	}
	return(i);	
}

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

⌨️ 快捷键说明

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