spi.c

来自「教你学习arm,自己慢慢消化吧」· C语言 代码 · 共 64 行

C
64
字号
#include<stdio.h>
#include<lpc213x.h>

typedef unsigned char uint8;
typedef unsigned long uint32;

void delay(uint8 g );

void ssp_init(void){
SSPCR0=(0x01<<8)|			//8位数据桢,spi方式,总线时钟高电平有效,
       (0x00<<7)|		   //第一个时钟跳变上升沿有效,scr=1.
		 (0x01<<6)|
		 (0x00<<4)|
		 (0x07<<0);
SSPCR1=(0x00<<3)|			//正常模式,ssp使能,允许读写器件,主机模式。
       (0x00<<2)|
		 (0x01<<1)|
		 (0x00<<0);

SSPCPSR=0x52;	        //spi时钟为15m/(0x52(scr+1)) 
SSPIMSC=0x07;			  //当Rx FIFO满时,超时,至少一半为满时该位置位。
SSPICR=0x03;				//清除超时和接收已满中断

}



void ssp_inits(void){
SSPCR0=(0x05<<8)|
       (0x00<<7)|
		 (0x01<<6)|
		 (0x00<<4)|
		 (0x07<<0);
SSPCR1=(0x00<<3)|
       (0x01<<2)|
		 (0x01<<1)|
		 (0x00<<0);

SSPCPSR=0x52;
SSPIMSC=0x07;
SSPICR=0x03;
}

uint8  SSP_SendData(uint8 data){
IO0CLR=1<<22;
SSPDR=data;
while((SSPSR&0x01)==0);	//发送不为空时。
IO0SET=1<<22;
return(SSPDR);

}
uint8  ssp_readdata(){
IO0CLR=1<<22;
while((SSPSR&0x01)==0);
IO0SET=1<<22;
return(SSPDR);
}

void delay(uint8 g ){
uint32 i;
for(;g>0;g--)
for(i=0;i<20000;i++);
}

⌨️ 快捷键说明

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