模拟SPI程序.docx

上传人:b****3 文档编号:2494085 上传时间:2022-10-30 格式:DOCX 页数:10 大小:16.48KB
下载 相关 举报
模拟SPI程序.docx_第1页
第1页 / 共10页
模拟SPI程序.docx_第2页
第2页 / 共10页
模拟SPI程序.docx_第3页
第3页 / 共10页
模拟SPI程序.docx_第4页
第4页 / 共10页
模拟SPI程序.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

模拟SPI程序.docx

《模拟SPI程序.docx》由会员分享,可在线阅读,更多相关《模拟SPI程序.docx(10页珍藏版)》请在冰豆网上搜索。

模拟SPI程序.docx

写程序:

voidSPIx_WriteByte(u8TxData)

{

u8j=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

u8SPIx_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++);

SPI_FLASH_CLK_HIGH();

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

{i=i+0x01;}

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

SPI_FLASH_CLK_LOW();

returni;

}

读程序0x40==0x40

u8SPIx_ReadByte(void)

{

u8i=0,j=0;

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

SPI_FLASH_CLK_HIGH(); //clk=1

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

{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&0x40==0x40)

{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&0x40==0x40)

{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&0x40==0x40)

{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&0x40==0x40)

{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&0x40==0x40)

{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&0x40==0x40)

{i=i+0x02;}

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

SPI_FLASH_CLK_LOW();

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

SPI_FLASH_CLK_HIGH();

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

{i=i+0x01;}

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

SPI_FLASH_CLK_LOW();

returni;

}

读程序0x20==0x20

u8SPIx_ReadByte(void)

{

u8i=0,j=0;

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

SPI_FLASH_CLK_HIGH(); //clk=1

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

{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&0x20==0x20)

{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&0x20==0x20)

{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&0x20==0x20)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1