模拟SPI程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

写程序:

voidSPIx_WriteByte(u8 TxData)

{

u8 j=0;

SPI_FLASH_CLK_LOW(); //clk=0

if(TxData&0x80)

{SPI_FLASH_DI_HIGH();} //mosi=1

else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH(); //clk=1,一个上升沿写入一位for(j=0;j<5;j++); //延时

SPI_FLASH_CLK_LOW(); //clk=0

if(TxData & 0x40)

{SPI_FLASH_DI_HIGH();} //mosi=1

else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW();

if(TxData&0x20)

{SPI_FLASH_DI_HIGH();} //mosi=1

else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW();

if(TxData&0x10)

{SPI_FLASH_DI_HIGH();} //mosi=1

else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW();

if(TxData&0x08)

{SPI_FLASH_DI_HIGH();} //mosi=1

else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW();

if(TxData&0x04)

{SPI_FLASH_DI_HIGH();} //mosi=1 else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW();

if(TxData&0x02)

{SPI_FLASH_DI_HIGH();} //mosi=1 else

{SPI_FLASH_DI_LOW();} //mosi=0

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH();

for(j=0;j<5;j++);

SPI_FLASH_CLK_LOW(); //clk=0

if(TxData&0x01)

{SPI_FLASH_DI_HIGH();}

else

{SPI_FLASH_DI_LOW();}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH(); //clk=1

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW(); //clk=0

}

读程序0x80==0x80

u8 SPIx_ReadByte(void)

{

u8i=0,j=0;

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_HIGH(); //clk=1

if(GPIOC->IDR&0x80==0x80)

{i=i+0x80;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW(); //clk=0,下降沿读数for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x40;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x20;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x10;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x08;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x04;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

SPI_FLASH_CLK_HIGH();

if(GPIOC->IDR&0x80==0x80)

{i=i+0x02;}

for(j=0;j<3;j++); //延时

SPI_FLASH_CLK_LOW();

for(j=0;j<5;j++);

相关文档
最新文档