STM32学习笔记之软件模拟SPI

2019-07-20 22:10发布

    SPI的硬件的确非常好用,但往往我们会遇到不能用硬件的情况,最近写了一个软件模拟的程序,亲测可用,现在贴出来,分享给大家,希望对你们有帮助。(这个程序是针对CPOL=1,CPHA=1的情况,若用于其他情况,请适当修改SCK)
[mw_shl_code=c,true]/************************************************** 函数:SOFT_SPI_RW() 描述: 根据SPI协议,写一字节数据到从机,同时从从机 读出一字节 **************************************************/ u8 SOFT_SPI_RW(u8 byte) { u8 i,Temp=0; for(i=0;i<8;i++)     // 循环8次 { SPI1_SCK = 0;     //拉低时钟 if(byte&0x80) SPI1_MOSI = 1;                             //若最到位为高,则输出高 else       SPI1_MOSI = 0;                             //若最到位为低,则输出低 byte <<= 1;     // 低一位移位到最高位 SPI1_SCK = 1;     //拉高时钟 Temp <<= 1;     //数据左移 if(SPI1_MISO) Temp++;     //若从从机接收到高电平,数据自加一 SPI1_SCK = 0;     //拉低时钟 } return (Temp);     //返回数据 }[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。