標(biāo)題: 調(diào)試STM32的i2c和io口模擬spi協(xié)議 [打印本頁]

作者: 2806695136    時間: 2022-8-30 10:04
標(biāo)題: 調(diào)試STM32的i2c和io口模擬spi協(xié)議
在調(diào)試STM32的i2c和io口模擬spi協(xié)議時發(fā)現(xiàn)時序是很關(guān)鍵的。stm32在72M運行下可以實現(xiàn)i2c或者spi協(xié)議,但并不代表把相同的代碼移植到51單片機上就會成功的跑起來,因為51單片機的速讀最塊8M,所以在時序上會產(chǎn)生很多大的區(qū)別。經(jīng)過測試,在stm32上的spi協(xié)議時鐘線可達到20Khz,移植到51后,頻率會降到<10hz?墒潜M管把延時調(diào)小或者去掉還是無濟于事,此時就要加幾句把鐘線置高置低的語句了以便增大的速度,后來成功后,測試時鐘線的確達到了10Khz左右。
先貼上部分代碼
unsigned char ReadRawRC(unsigned char Address)
{
    unsigned char i, ucAddr;
    unsigned char ucResult=0;

    MF522_SCK = 0;
    MF522_NSS = 0;
     ucAddr= ((Address<<1)&0x7E)|0x80;

    for(i=8;i>0;i--)
    {
        MF522_SI =((ucAddr&0x80)==0x80);
        MF522_SCK = 1;//stm32上沒有
        ucAddr <<= 1;
        MF522_SCK = 0;
    }

    for(i=8;i>0;i--)
    {
        MF522_SCK = 1;//stm32上沒有
        ucResult <<= 1;
        ucResult|=(bit)MF522_SO;
        MF522_SCK = 0;
    }

    MF522_NSS = 1;
    MF522_SCK = 1;
     returnucResult;
}


作者: 2806695136    時間: 2022-8-30 10:10
把延時調(diào)小或者去掉還是無濟于事,此時就要加幾句把鐘線置高置低的語句了以便增大的速度




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1