na5tr1 測距晶元除錯小結

2021-09-11 07:36:26 字數 1599 閱讀 4102

一些主要函式的介紹

ntrxinit(); 裡面主要是一些對測距晶元的工作頻率,spi通訊模式的設定

phyinit (); 裡面主要是對測距的一些軟體變數進行初始化,

ntrxshadowreg[na_txintsreset_o] = 0x3f;

ntrxshadowreg[na_rxintsreset_o] = 0x7f; 對於這兩個暫存器的值,推薦用這兩個數值。

aplinit(); 裡面主要是設定晶元的位址,對於測距發起端來說還要設定遠端位址即和哪乙個晶元測距,對於響應端來說可有可無。

上面三個初始化完成之後,就可以進入測距流程了。

一直迴圈 aplpoll (); phypoll (); 兩個函式,測距發起端可以設定乙個定時器,定時發起一次測距,發起測距在 aplpoll (); 函式內設定,

pdsap (); plmesap(); 裡面主要是對晶元的暫存器的設定的和獲取暫存器的值的指令的集合,方便使用者設定晶元,以及獲取晶元配置資訊。

pdcallback(); 裡面是對測距資料的乙個處理,得到測的的距離數值。

phypoll (); 是測距的主體不論是快速測距還是普通測距,所有的流程及狀態轉換都是在這個函式裡面進行的,大概流程是讀接收和傳送狀態暫存器,檢測是否有進行過傳送操作或者是接收到了資料;如果有傳送操作,先判斷傳送次數,如果超過了預設值,那麼標記傳送失敗,重新開始測距,如果未超過預設,那麼將對應的狀態轉變,等待遠端的響應。

所有的測距資訊都是彙總在發起端的,最後的測距結果是在發起端進行計算得到。

常見的幾種測距錯誤資訊原因

#define stat_no_error				0x00

#define stat_configuration_error 0x01

#define stat_no_remote_station 0x02

#define stat_no_answer1 0x04

#define stat_no_answer2 0x08

#define stat_packet_error_tx 0x10

#define stat_packet_error_rx1 0x20

#define stat_packet_error_rx2 0x40

#define stat_ranging_value_error 0x80

0x02 發起端沒能正常傳送測距資訊,檢查spi通訊是否可靠,晶元電壓是否正常,

0x10 發起端正常發起了一次測距,響應端未能正常響應。

0x80 測距流程能夠全部進行下來,但是測距資料錯誤。

0x02表示沒有響應端

重點來了,

很多時候,由於硬體的不穩定,在一直通過spi通訊的時候,會出現通訊錯誤,第一步可以先軟體上吧spi重新初始化一下,在測試spi的通訊,如果成功了就可以到此為止了。

如果上述不行,非得通過斷電重新開始才能解決,則可以試一下將stm32的spi管腳設定成輸出,然後拉低(輸出低),然後再將測距晶元的供電斷掉,此時測一下測距晶元的電壓,如果電壓掉到0.5v以下,則可以將spi重新初始化,則可以正常使用。

如果電壓沒能掉下來,可以將stm32與晶元相連的管腳設定成輸入,內部下拉,給晶元放電,稍微延時,然後再重新初始化,即可。

5M1E分析法 人機料法環測

做質量檢驗的人員,無論是做實際業務的還是做相關erp sap oracle 的質量模組實施的,都經常會聽到乙個5m1e分析法,什麼人機料法環測,這到底是什麼東東啊?5m1e其實就是指6中分析維度與方法,其中五項的英文是以m開頭,一項是e開頭的,分別為 5m man 人 machine 機 mater...