新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于調試stm32和stm8(51單片機)的i2c和spi協議的之間的區別

        關于調試stm32和stm8(51單片機)的i2c和spi協議的之間的區別

        作者: 時間:2016-11-27 來源:網絡 收藏
        在調試STM32i2c和io口模擬spi協議時發現時序是很關鍵的。stm32在72M運行下可以實現i2c或者spi協議,但并不代表把相同的代碼移植到51單片機上就會成功的跑起來,因為51單片機的速讀最塊8M,所以在時序上會產生很多大的區別。
        經過測試,在stm32上的spi協議時鐘線可達到20Khz,移植到51后,頻率會降到<10hz。可是盡管把延時調小或者去掉還是無濟于事,此時就要加幾句把鐘線置高置低的語句了 以便增大的速度,后來成功后,測試時鐘線的確達到了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;
        return ucResult;
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 龙岩市| 威信县| 天祝| 宣威市| 沙雅县| 施秉县| 肥东县| 屯留县| 莲花县| 崇州市| 平陆县| 肥乡县| 永福县| 富源县| 普安县| 栾城县| 清涧县| 德庆县| 鄂州市| 淮安市| 怀柔区| 永年县| 民乐县| 水城县| 昌乐县| 汤原县| 金塔县| 常熟市| 贡山| 开封市| 昭苏县| 金阳县| 沿河| 郑州市| 临沧市| 莎车县| 芜湖市| 姜堰市| 无棣县| 子长县| 宁蒗|