iic通訊 FPGA實現 mpu6050為例


 IIC最常用的通訊協議,但普遍用於單片機、arm這些,用FPGA實現大材小用,但對於菜雞水平練練手很不錯,考驗串並轉換和時序的控制。今天我就以mpu6050陀螺儀為例,實現FPGA的iic通信。

1.首先我們還是研究mpu6050的datasheet 。mpu6050我就不用介紹了,直接看關鍵信息

  1)mpu6050上電延時至少30ms 。

  2)iic最大時鍾為400khz。slave address為 b110100 x r/w,x位是mpu6050的sd0引腳。第二張是我使用模塊的原理圖,很明顯能看到sd0引腳被拉低,所以模塊sd0管腳懸空就行,因此slave address為 b1101000 r/w。

  3)iic的 start 與 stop 信號 

  4)如圖,ack為低電平,nack為高電平。

  5)讀寫的時序,注意一下讀寫差別很大,datasheet給的圖很明白,我就不過多解釋

   6)實現讀操作,以設備驗證寄存器為例,這個寄存器不用初始化,默認值為0x68。

2.手冊看得差不多了,我先實現讀操作。

  1.)下圖是iic讀時序仿真,起始位、ack、nack、停止位以及數據。

一定記得要上電延時至少30ms,我之前沒發現上電直接讀,數據讀不出來,后來懷疑上電的問題,仔細看datasheet才發現有上電延時。

 

   2)最后加入uart模塊,將讀出的數據通過串口發送顯示,如圖數據完美正確,說明讀沒問題,說明我們的時序沒問題,下一步就對mpu6050進行初始化

 ⅠⅠⅡⅢⅣⅤⅥⅦⅠⅡ

3.讀時序都寫好了,寫時序就沒問題了,關鍵我們還是要認真讀datasheet,初始化寄存器和讀數據寄存器我總結如下,詳細說明建議看英文版的datasheet。

  1)初始化仿真與上板驗證

    仿真如圖

  2)將原始數據經過uart上傳,顯示數據不停地被讀出,初步判定iic操作成功

  今天就完成到這兒,后面繼續進行原始數據處理,待續。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM