国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 2234|回復: 0
打印 上一主題 下一主題

【飛控開發基礎教程8】瘋殼·開源編隊無人機-I2C(激光測距)

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2022-7-21 11:13:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 開源 , 編隊 , 無人機 , I2C , 激光測距
COCOFLY教程
——瘋殼·無人機系列
I2C(激光測距)





    圖1


    一、VL53L1X 簡介
    VL53L1X 屬于 STMicroelectronics 即常說的意法半導體(ST)公司推出的
    FlightSense™ 產品系列 ToF(Time of flight)激光測距傳感器
    VL53L1X 是目前市場上最快的微型 ToF 傳感器,精確測距能力達 4 米,測距頻率快至 50 Hz。它采用微型、可回流焊封裝,集成了一個單光子雪崩二極管
    (SPAD)接收陣列、一個 940nm 不可見激光 1 類發射器、物理紅外濾波器和光學器件,可在各種環境照明條件下實現最佳測距性能,并提供一系列覆蓋窗口選擇。
    由于封裝小巧,因此它很容易集成到設備中。與傳統的紅外傳感器不同, VL53L1X 采用 ST 最新一代 ToF 技術,無論目標顏色和反射率如何,都可以進行絕對距離測量。還可以對接收陣列上的 ROI(感興趣區域)大小進行編程,從而減小傳感器 FoV(視場角)。VL53L1X 激光測距傳感器的實物圖如下圖所示。

   
    圖2
    二、I2C 概述
    Inter-Integrated Circuit,即內部集成電路接口,縮寫為 IIC 或 I2C。IIC 總線是一種由 PHILIPS 公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C 總線在物理連接上非常簡單,分別由 SDA(串行數據線)和 SCL(串行時鐘線)及上拉電阻組成。通信原理是通過對 SCL 和 SDA 線高低電平時序的控制, 來產生 I2C 總線協議所需要的信號進行數據的傳遞。在總線空閑狀態時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。如下圖所示為單片機與 I2C接口的傳感器之間通信示意圖。

  
    圖3

    三、I2C 總線協議
    對 I2C 總線的操作實際就是主從設備之間的讀寫操作。大致可分為以下兩種操作情況:
    第一,主設備往從設備中寫數據。數據傳輸格式如下:


圖4
    第二,主設備從從設備中讀數據。數據傳輸格式如下:

   
    圖5
    實際上把 I2C 協議拆分開來它的組成有:起始條件、終止條件、地址段、數據段、響應 ACK、非響應 NACK。
    (1)START 和 STOP,起始和終止條件都是由主機(master)發起產生。總線在起始條件之后處于忙碌狀態,在停止條件之后又處于空閑狀態。

   
    圖6
    起始條件:SCL 線是高電平時,SDA 線從高電平向低電平切換。停止條件:SCL 線是高電平時,SDA 線從低電平向高電平切換。
    (2)地址段,地址段由 7bit 地址+讀寫位組成,一個 7-bit 的地址是從最高位(MSB) 開始發送的,這個地址后面會緊跟 1-bit(R/W)的操作符,1 表示讀操作,0 表示寫操作。 接下來的一個 bit 是 NACK/ACK,當這個幀中前面 8 bit 發送完后,接收端的設備獲得 SDA 控制權,此時接收設備應該在第 9 個時鐘脈沖之前回復一個 ACK(將 SDA 拉低)以表示接收正常,如果接收設備沒有將SDA 拉低,則說明接收設備可能沒有收到數據(如尋址的設備不存在或設備忙) 或無法解析收到的消息,如果是這樣,則由 master 來決定如何處理,比如:停止。


    圖7
    (3)數據段,SDA 數據線上的每個字節必須是 8 位,每次傳輸的字節數量沒有限制。每個字節后必須跟一個響應位(ACK)。首先傳輸的數據是最高位
    (MSB),SDA 上的數據必須在 SCL 高電平周期時保持穩定,數據的高低電平翻轉變化發生在 SCL 低電平時期。

   
    圖8
    以傳輸 Byte:1010 1010 (0xAAh)為例,SDA SCL 傳輸時序如下所示:

   
    圖9
    (4)響應 ACK(Acknowledge)和非響應 NACK(Not Acknowledge),
    每個字節傳輸必須帶響應位,相關的響應時鐘也由主機產生,在響應的時鐘脈沖期間(第 9 個時鐘周期),發送端釋放 SDA 線,接收端把 SDA 拉低。以上圖傳輸 101010101 為例,SCL 第 9 位時鐘高電平信號期間,SDA 拉低其代表了有ACK響應位。當在 SCL 第 9 位時鐘高電平信號期間,SDA 仍然保持高電平,這種情況定義為 NACK 非響應位。這種情況下,主機可以直接產生 STOP 條件終止以后的傳輸或者繼續重新 START 開始一個新的傳輸。以下情況會導致出現 NACK 位:
    a、接收機沒有發送機響應的地址,接收端沒有任何 ACK 發送給發射機;
    b、由于接收機正在忙碌處理實時程序導致接無法接收或者發送; c、傳輸過程中,接收機識別不了發送機的數據或命令;
    d、接收機無法接收;
    e、主機接收完成讀取數據后,要發送 NACK 結束告知從機。以下圖例代表 NACK 時序:

   
    圖10

    根據 I2C 協議分解的各個部分,可得出讀和寫的時序圖,以向某傳感器的地址為 0x09 的寄存器寫入兩個字節 0x02 和 0x84 為例,如下圖所示為該過程時序圖。

   
    圖11
    以從某傳感器的地址為 0x09 的寄存器中讀出兩個字節 0x02 和 0x84 為例, 該時序圖如下所示。

   
    圖12

    四、激光測距實驗

    激光測距實驗使用STM32 的GPIO 模擬I2C 與激光測距模組VL53L1X 相連接,串口 1 即UART1,通過 USB 轉串口模塊連接電腦,把 I2C 獲取到的VL53L1X的距離值(mm 為單位)通過串口 1 傳輸到電腦端的串口調試助手顯示出來。做該實驗的時候需要把視覺模組暫時取下,并且把 USB 轉串口的線接到視覺模組接口處。激光測距模組 VL53L1X 在無人機支架底部,杜邦線和 SH1.0 接口接到主板上的 USART3(這里用該接口的 GPIO 模擬 I2C)的接口上,如下圖所示。

   
    圖13
    根據原理圖,可以看到 VL53L1X 的 I2C 接口分別是:PB10、PB11,如下圖所示。

   
    圖14
    串口 1 的配置可以參考《串口(基礎收發),配置代碼(通過調用官方庫)。獲取 VL53L1X 的測距數據代碼編寫的思路如下:
    代碼思路

   
    表1
    模擬 I2C 的 GPIO 初始化代碼如下:

   
    圖15
    VL53L1X 的初始化代碼如下。

   
    圖16
    VL53L1X 的測距代碼如下。

   
    圖17
    每隔 5s 讀取一次距離,并發送到串口上。代碼如下所示。

   
    圖18
    這里注意要把串口的發送也配置好,這樣才能把數據發送到電腦。串口 1 通過 USB 轉串口模塊接到電腦,保存、編譯、下載代碼,可以看到串口調試助手每隔 5s 在打印 VL53L1X 的 2 個字節的距離數據(mm 為單位),數據如下圖所示:

   
    圖19





更多完整學習資料和對應開源套件,請登陸官網:“瘋殼”

如需定制開發,請通過官網“瘋殼”網頁底部的“聯系我們”進行聯系

    文件下載請點擊: 【8】I2C(激光測距).pdf (868.42 KB)



您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 三级视频黄色| 色聚网久久综合| 亚洲九九| 图片区小说区av区| 天天综合亚洲| 亚洲天堂色网站| 日本三级韩国三级香港三级在| 青草福利| 台湾佬香蕉娱乐中文22网| 日本特黄特色| 亚洲精品午夜级久久久久 | 天堂草原视频在线观看| 亚洲天堂午夜| 日本福利一区二区| 视频一区国产精戏刘婷| 亚洲成a人片77777kkk| 日韩高清成人| 亚洲精品一二三区| 亚洲欧美国产精品| 一级高清理论片| 日韩在线综合| 香蕉久草| 亚洲福利专区| 欧美精品成人| 青草青青视频在线观看| 亚洲香蕉综合在人在线视看 | 日本三级网络| 日韩色视频| 亚洲国产成人久久99精品| 三级在线免费看| 亚洲专区在线视频| 啪啪一级| 亚洲不卡一区二区三区在线| 亚洲a级黄色片| 图片亚洲va欧美va国产综合| 一本久道久久综合婷婷| 午夜一级精品免费毛片| 欧美日韩中文字幕在线| 欧美午夜一区| 四虎高清成人永久免费影院 | 亚洲国产精品久久久久网站|