您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > STC硬件SPI驱动程序
#ifndefSPI_H#defineSPI_H#includeSTC12C5A60S2.h#defineSSIG1//1:忽略SS脚,由MSTR位决定主机还是从机0:SS脚用于决定主从机。#defineSPEN1//1:允许SPI,0:禁止SPI,所有SPI管脚均为普通IO#defineDORD0//1:LSB先发,0:MSB先发#defineMSTR1//1:设为主机0:设为从机#defineCPOL1//1:空闲时SCLK为高电平,0:空闲时SCLK为低电平#defineCPHA1//#defineSPR10//SPR1,SPR000:fosc/4,01:fosc/16#defineSPR00//10:fosc/64,11:fosc/128#defineSPEED_40//fosc/4#defineSPEED_161//fosc/16#defineSPEED_642//fosc/64#defineSPEED_1283//fosc/128#defineSPIF0x80//SPI传输完成标志。写入1清0。#defineWCOL0x40//SPI写冲突标志。写入1清0。voidSPI_Init_Initing();voidSPI_Init_Working(void);voidSD_spi_write(unsignedcharMydata);unsignedcharSD_spi_read(void);#endif#includeSPI.h#includeSTC12C5A60S2.H/*****************************************//****设备初始化时对SPI配置,要求速度低****//*****************************************/voidSPI_Init_Initing(){SPCTL=(SSIG7)+(SPEN6)+(DORD5)+(MSTR4)+(CPOL3)+(CPHA2)+SPEED_64;}/*****************************************//****读写设备时对SPI配置,要求速度低******//*****************************************/voidSPI_Init_Working(void){SPCTL=(SSIG7)+(SPEN6)+(DORD5)+(MSTR4)+(CPOL3)+(CPHA2)+SPEED_4;}/***********************************************功能:SPI发送一个字节变量:x,待发送的字节变量***********************************************/voidSD_spi_write(unsignedcharMydata){SPSTAT=0xC0;//清0SPIF和WCOL标志SPDAT=Mydata;//发送一个字节while(!(SPSTAT&SPIF));//等待发送完成}/***********************************************功能:SPI接收一个字节的数据变量:返回一个字节变量,从SD卡读取的数据***********************************************/unsignedcharSD_spi_read(void){SPSTAT=0xC0;//清0SPIF和WCOL标志SPDAT=0xff;//发送一个字节while(!(SPSTAT&SPIF));//等待发送完成returnSPDAT;}
本文标题:STC硬件SPI驱动程序
链接地址:https://www.777doc.com/doc-6730092 .html