目前我的專案中用到tdc晶元,這裡選擇的是acam的tdc-gp22晶元,原因是功能基本滿足要求且**便宜。
最初看晶元手冊感覺功能很多,讀寫操作通過spi實現,也比較方便。於是圖省事,直接在**上買了乙個gp22的模組,製作者主要是針對晶元內部整合的模擬輸入電路、脈衝發生器、內部觸發器功能製作的,理論上可以直接用晶元發出的脈衝激勵發射換能器,然後直接接收回波,讀出飛躍時間(tof)。
然後,拿到模組之後,第一步要做的是按照手冊中提示測試spi通訊是否實現。這裡就出現了問題。
按照手冊中所述,可以通過寫暫存器1(3位元組 or 4位元組),讀取暫存器5得到寫入資料的高1位元組。
這裡我用的控制器是stm32f103,寫了乙個簡單的test函式,放在while(1)中,通過jlink**器觀察變數。其中的讀、寫暫存器函式都扒的官方程式。
uint16_t test_spi
(void
* bus_type)
在while(1)之前的是必要的初始化,歸納為:
1、微控制器系統初始化(包括時鐘、gpio及復用等)
2、晶元上電指令 power_on_reset
3、晶元初始化 init
然後在迴圈中測試spi功能,按理說變數rcv0應該一直為寫入暫存器1資料的高1位元組,但是讀出卻一直為0x0000.
在反覆實驗下,發現用手指以某個方向輕輕用力捏spi4個引腳時能通訊成功,鬆開又恢復0x0000,推斷是模組連線的問題。
在網上查詢時,發現有個帖子說了類似的問題(原帖),後來樓主重新打板,讓晶元的第33個引腳(晶元肚子下的大焊盤)接地。然後我也重新做了一次,晶元下面多打了幾個過孔。並且拆了購買的模組的晶元,發現底下好像還真沒接地。
打板焊接之後,重新測試,可以穩定實現spi通訊了。
至此,spi通訊基本解決,後面就開始研究tdc的測時功能了,之後再記錄。
shell學習記錄 2 2
echo 這是指令碼的名稱 0 echo 這是指令碼的第1個引數 1 echo 這是指令碼的第2個引數 2 echo 這是指令碼的第3個引數 3 echo 這是指令碼的第4個引數 4 echo 這是指令碼的第5個引數 5 echo 這是指令碼的第6個引數 6 echo 這是指令碼的第7個引數 7 e...
OpenCV學習記錄22
一 學習內容 1 影象對映 1.1 影象對映 對映到不同的座標位置 例如 影象上下對稱 左右對稱 對角線對稱 縮小等 1.2 關於對映表的設定 值為對映後的座標位置 二 除錯 include include include using namespace cv using namespace std...
學習記錄一
基礎學習記錄一 1 函式式程式設計 lambda 要求 函式介面 functionalinte ce只有乙個抽象方法,格式 引數 2 如何重構 箭頭型 衛語句3 程式錯誤處理 錯誤碼和異常捕捉 4 如何保障資料安全 資料隔離提供操作介面 只進不出 定義安全級別 敏感資料模糊化 傳輸加密 隨機 失效 ...