在調試STM32的i2c和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;
- returnucResult;
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|