02.26 如何弄懂單片機時序?

草莓味屠夫


單片機時序,我的理解是依據時鐘信號,遵循標準,傳輸數據的過程。那麼如果要弄清楚單片機時序,首先需要先弄清楚單片機的時鐘信號,時鐘信號驅動內核、外設工作。那麼時鐘信號從哪裡來,又如何驅動內核,外設工作呢?先從晶振說起。

晶振

晶振,全稱是石英晶體振盪器,是一種高精度和高穩定度的振盪器,通過一定的外接電路來,可以生成頻率和峰值穩定的正弦波。

該正弦波信號通過單片機內部的時鐘電路,可倍頻/分頻為需要的時鐘信號頻率,如原始晶振8M,可以最終產生72M的時鐘給內核使用,到達內核與外設的時鐘。

時鐘週期是單片機中最基本的、最小的時間單位。在一個時鐘週期內,內核僅完成一個最基本的動作,一個時鐘週期從RoM中取一條指令,然後下一個時鐘週期執行,週而復始。

時鐘差不多了,那麼時序基於時鐘信號,外設以spi為例說明時序如何實現的。

時序(SPI)

SPI主要有一個時鐘CLOCK,兩個數據線MISO/MOSI,其中CLOCK由主動發起的外設產生,如設備1的外設要讀設備2的外設,那麼設備1的外設產生時鐘,設備2的外設只能由設備1的外設時鐘操控。

如上圖所示:

設備1外設產生時鐘1時,設備1外設通過數據線MOSI線輸出1位,同時設備2外設通過MISO數據線輸出1位;8個時鐘,就輸出8位數據,即1個字節傳輸完成。

設備1外設通過MOSI輸出的數據,被設備2外設的MISO接收,同理,設備2外設通過MOSI輸出的數據,被設備1外設的MISO接收,如下圖:

同時設備1與設備2傳輸前約定傳輸規則:

1、我們從時鐘上升沿輸出數據,從時鐘下降沿採集數據,即讀取數據;

2、我們每個字節數據都是先輸出最低為,然後再輸出最高位。

以上就是SPI的時序。

其它外設時序

還有其它I2C時序、串口時序等等,都有自己的傳輸約定。


以上,個人觀點。


小扇子的開發筆記


時序對於數字電路而言非常重要,可以說時序是數字電路正常工作的基礎。說到時序,一般是指可編程器件的編程方法,在單片機編程時,需要根據被控芯片的時序去寫程序,把芯片手冊上規定好的時序用代碼來實現,放可以實現單片機和芯片之間的通訊。下面以幾種常用芯片的時序來簡單介紹一下如何看懂時序。

1

IIC通訊的開始/結束時序

IIC是常用的芯片間的通訊方式,也叫I2C,適合於PCB板內近距離的通訊,總共具有兩跟線,可掛接不同地址的多個設備,其硬件連線如下圖所示。

IIC在通訊時需要首先發送一個開始信號,數據結束時需要發送結束信號,開始和結束就在器件手冊上就給出了時序圖,在編程時就需要用C語言代碼去實現開始和結束的時序,時序圖如下所示。

SCL是IIC的時鐘線,SDA是數據線,SDA數據如何傳輸需要在特定的SCL時序上。從圖中可以看出,在開始時,必須SCL是高電平,而SDA是下降沿,這就是開始的時序。在發送結束信號時,必須讓SCL為高電平,讓SDA是上升沿,這就構成了結束信號。用C語言代碼所實現的結束信號如下所示。

2

IIC數據傳輸時的時序

IIC在發送完開始信號後,就要開始發送數據,發送數據的過程也必須得遵守IIC的時序,IIC數據傳輸的時序如下圖所示。

從時序圖上,可以看出,在SCL為高電平期間是不允許SDA數據發生變化的,如果要改變SDA數據必須發在SCL為低電平期間。這就是這個時序圖的含義。單片機在編程時要遵循這個規則才可以。

時序圖是編程的依據,在寫代碼時必須要嚴格按照芯片手冊上的時序圖,否則通訊失敗。所以,時序圖這個東西要多看,多寫代碼。

以上就是這個問題的回答,感謝留言、評論、轉發。更多電子設計、硬件設計、單片機等內容請關注本頭條號:玩轉嵌入式。感謝大家。


玩轉嵌入式


弄一本51單片機教材,關注晶振,基本時序章節,特別關注讀寫存儲器的時序,能夠提出疑問了,就可以算開始了。


分享到:


相關文章: