|
/**************************************************************
**功能描述: SPI程序,通过SPI操作接收来自于AMC2103的电流**
**************************************************************/
#include "DSP28_Device.h"
void InitSpi(void)
{
SpiaRegs.SPICCR.all = 0x0F;///进入初始状态,数据在上升沿输出,自测禁止,16位数据模式(AMC1203为16位)
SpiaRegs.SPICTL.all = 0x0;///正常的SPI时钟方式,从动模式,禁止SPI发送,禁止中断
/*波特率的设置,在此设置为从机模式,波特率设置无效,但是要求主机即AMC1203的波特率不能大于从机即2812的SPI波特率=70/4=17.5M*/
//SpiaRegs.SPIBRR = 0x0;//波特率 = LSPCLK/4 = 75/4 = 17.5M
SpiaRegs.SPICCR.all = 0x8F; //退出初始状态
}
unsigned int Spi_RxReady(void)
{
unsigned int i;
if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)
{
i = 1;
}
else
{
i = 0;
}
return(i);
}
void InitSysCtrl(void)
{
EALLOW;
SysCtrlRegs.PCLKCR.bit.SPIENCLK = 1;//SPI模块时钟使能
EDIS;
}
void Gpioinit(void)
{
EALLOW;
GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 =1;//选择SPISIMO为功能引脚
GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 =1;//选择SPICLK为功能引脚
EDIS;
}
void main(void)
{
unsigned int k=0;
int data;
InitSysCtrl(); // 系统初始化子程序,该程序包含在DSP28_SysCtrl.C中
DINT; // 关闭总中断
IER = 0x0000;
IFR = 0x0000;
InitSpi(); // SPI初始化子程序
Gpioinit(); // GPIO初始化子程序
while(1)
{
}
}
上面的程序还不是很完整,如何让SPI实现AMC1203电流值数据的接收啊? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|