模拟SPI程序.docx
- 文档编号:2494085
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:10
- 大小:16.48KB
模拟SPI程序.docx
《模拟SPI程序.docx》由会员分享,可在线阅读,更多相关《模拟SPI程序.docx(10页珍藏版)》请在冰豆网上搜索。
写程序:
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 SPI 程序