📄 dsp28_spi.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 + -