「移植」的重要性:並不是全部的電路都得本身設計,到了必定階段,「移植」也是一種學習能力。——CrazyBingohtml
轉眼間期末又到了,最近開始了所謂的期末總預習,比賽最終仍是把做品交了,也算是對本身這學期一個交代了吧,感受不總結出來老是少點什麼,因此仍是在努力一把,熬夜把以前的東西整理出來吧。Bingo說的「移植」是一種能力,可是徹底拿別人的代碼拿來用不加以思考和學習,那樣是沒有意義的,這學期就是由於「移植」的太多了,才感受學到的很零散不繫統。學習的過程原本就是一個很是枯燥的過程,不能總想着獲得。以前看了許多文章,在尋找FPGA的前途是什麼,到頭來仍是沒一探出個究竟,還不如堅持心裏,作本身想作的,學本身想學的,學知識的方法是相通的,想太多隻能說是有點浮躁,寫博客能夠說不失爲一個讓人靜心的好方式,即便沒養分有怎樣,個人博客我喜歡你能把我怎樣。微信
主機:初始化總線的數據傳輸並個容許傳輸的時鐘信號器件。學習
從機:任何被尋址的器件都被認爲是從機 設計
SCL時鐘線SDA 數據線3d
起始位:SCL爲高電平,SDA降低沿htm
結束位:SCL高電平,SDA爲上升沿blog
總結:當scl爲高電平的時候,sda爲出現降低沿爲start位,當生成了爲低電平的時候,sda出現上升沿爲stop位,因此在scl爲高電平的時候sda應該保持穩定不能隨意亂動。get
寫入數據狀態博客
scl爲高電平的時候sda的數據被寫入從機,it
scl爲低電平的時候sda的數據被寫入主機
讀取數據狀態
scl爲低電平的時候器件的數據被讀出到sda總線上,在scl高電平器件保持數據穩定
scl爲高電平的時候主機將sda總線上的數據讀出被存儲,在scl低電平時間保持穩定
SCL 週期400k 2.5us,SCL最大能夠爲400Khz,可是通常設置爲100Khz
ACK (Acknowledgement),即確認字符,在數據通訊中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接收無誤。即應答。低電平。
「接收器每接受一個正確的數據字節後,都要在數據線上發送一個應答信號。低電平爲確認,高電平爲不確認」
MSB是Most Significant Bit的縮寫,最高有效位。在二進制數中,MSB是最高加權位。與十進制數字中最左邊的一位相似。一般,MSB位於二進制數的最左側,LSB位於二進制數的最右側
LSB,英文 least significant bit,中文義最低有效位。
圖中MSB即表示從最高位開始傳輸,ACK即表示寫入數據完成後的應答
1)產生 start 信號
2)傳送器件地址(寫 DEVICE ADDRESS)
3)傳送字地址 WORD ADDRESS(ACK 不用管)
4)發送想要寫入的 8 位數據(ACK 不用管)
5)產生 stop 信號(ACK 不用管)
write虛寫,一次空寫入。在這裏其實是要讀取數據,不是寫數據,可是仍是要寫入須要讀取得器件地址,卻沒有寫入數據,向設備寫要讀的數據的地址 不是真正向地址寫數據 這個地址會被鎖存,不會觸發讀寫操做 因此dummy write。
1)產生 start 信號
2)傳送器件地址(寫 DEVICE ADDRESS)
3)傳送字地址 WORD ADDRESS
4)發送 start 信號
5)再一次傳送器件地址(讀 DEVICE ADDRESS)
6)讀出
8)位數據
7)產生 stop 信號
SCCB(I2C)時序圖
每當一個字節的數據或命令傳輸完成時,都會有一位的應答位,須要應倒時,數據發出方將SDA總線設置爲3態輸入,因爲IIC總線上有上拉電阻,所以此時總線默認高電平,若數據接收方正確接收到數據,則數據接收方將SDA總線拉低,以示正確應答。
IIC傳輸的應答位是數據接收方給數據發送方!
SCCB總線在寫寄存器時,先寫設備地址(0x42),收到從設備應答後再寫寄存器地址,最後寫將要寫入的寄存器的值。
SCCB總線的讀取寄存器時序:SCCB總線在讀寄存器時,分兩個階段:第一階段爲先寫設備地址(0x42),而後再寫寄存器地址;第二階段爲寫設備地址(0x43),而後讀出寄存器地址的值,從而完成對一個寄存器值的讀取。
這是I2C協議的兩條總線,時鐘總線sclk和數據總線sdat,咱們在時鐘總線爲高電平的中心時採集數據,在時鐘總線爲低電平的中心改變數據,每發送8位數據會有一個應答。
應答在仿真時序圖上看是爲高阻態z的,這一點很重要,當時我就是在這上面迷惑了很久。
最後在說一句Modelsim真是太好用了,用腳本仿真的話會大大加快仿真的速度的看來仍是要有不少東西要學的。眼看期末了,趕忙把考試早早經過,就能夠作我本身想作的事情了。
轉載請註明出處:NingHeChuan(寧河川)
我的微信訂閱號:NingHeChuan
若是你想及時收到我的撰寫的博文推送,能夠掃描左邊二維碼(或者長按識別二維碼)關注我的微信訂閱號
知乎ID:NingHeChuan
微博ID:NingHeChuan