Foxes 方案 3D Localization Demo 調試

Foxes 是一套基於 BLE晶片 KW38 和 UWB 晶片 NCJ29D5D 的 UWB 開發套件。 

其中 UWB 晶片 NCJ29D5D 是一種全集成的單晶片脈衝無線電超寬帶 (IR-UWB) 低能低成本收發晶片。它是為汽車環境中的安全範圍應用而設計的。它可以用於雙向測距定位系統,以確定距離的精度高達 10 厘米。該設備配備了專用的 MAC 固件,以簡化超寬帶範圍設置和會話控制,能夠按照汽車連接聯盟 (CCC) 的指定操作,以實現與汽車接入生態系統的互操作性。 

KW38 是高度集成的單晶片設備,可實現低功耗藍牙 (Bluetooth LE,支持 BLE5.0) 和通用 FSK (250,500,1000 和 2000kbps) 連接,用於汽車和工業嵌入式系統。為了滿足汽車應用的嚴格要求,KW39/38/37 完全符合 AEC Q100 2 級汽車合格。 

一、方案介紹

1.1 方案功能

此方案是由基於 S32K144 開發板 + 轉接板+ NXP NCJ29D5D 的 UWB 模組組成的4 個 UWB 錨點,一個 KW38 開發板作為 BLE 錨點,一塊單獨的 S32K144 作為 BCM,以上三個部分在車身端並通過 CAN 連接,然後再由一塊 KW38 開發板 + NCJ29D5D 模組作為智能鑰匙部分。 

該方案通過作為 BCM 板的S32K144 與上位機通訊,在上位機配置位置信息後,再啟動 UWB 定位,把數據收集到 BCM 進行計算,再把計算得到的坐標上傳上位機進行實時顯示。

 

1.2 方案各模塊介紹

1.2.1 UWB 模塊

UWB 模塊實物和如框圖如下圖,其作用是搭建起 UWB(基站 + 鑰匙)系統,實現鑰匙定位。

 

 

1.2.2 BLE KW38 開發板

KW38 通過 SPI 完成 NCJ29D5D 配置後成為一塊智能鑰匙 Key Fobs 板,可以與車身端作為 BLE 錨點的另一塊 KW38 互相通信,如下是實物圖與框圖。

 

 

1.2.3 轉接板

轉接板用來連接 S32K144 和UWB 模組,如下是實物圖和框圖。

 

二、3D Localization Demo 調試

2.1 NCJ29D5D 軟體燒寫與測試

NCJ29D5D 的UWB 模塊的軟體燒寫方法請參考我之前的博文 《NCJ29D5D 使用 Lauterbach 進行下載調試》,燒寫完畢後可以參考 《Foxes 方案 UWB 模塊 NCJ29D5D 的配置與測距》,確認模塊功能是否正常。

關於軟體版本,本次 3D Localization Demo 燒寫的版本是 NCJ29D5 SDK v11.1,DSP FW 版本 V2.20E。 

2.2 3D Localization Demo 調試

本次 3D Localization Demo 調試的代碼是由 NXP 提供的 《UWBLocalizationDemoKit_v2.4》 2D 定位算法移植而來,並添加 3D 定位算法,其中主要的代碼運行 S32K144 以及 KW38 上 。S32K144 有兩份代碼,錨點程序和 BCM 程序。

 

 

KW38 同樣也是兩份代碼,錨點程序和 Keyfob 智能鑰匙部分的程序。

 

 

2.2.1 S32K144 UWB 錨點程序燒寫

2.2.1.1 S32K144 UWB 錨點程序導入 S32DS for ARM 2.2

(1)從 NXP 官網下載安裝 S32DS for ARM 2.2,打開 S32DS For ARM 2.2。

 

(2)點擊 “File”->”Import” 導入S32K144 錨點程序項目文件。

 

(3)選擇導入項目到工作目錄中。

(4)選擇從項目的根目錄導入,建議勾上”copy prejects into workapace” 這樣會把項目拷貝一份到工作目錄,這樣就只改動副本,如果出現問題,可以重新導入。

 

2.2.1.2 S32K144 UWB 錨點程序編譯

(1)點擊小錘子,然後我們編譯第一個錨點 “Debug_FLASH_Anchors1”,如果編譯不過請先編譯 “Debug_FLASH”。

 

 

(2)在控制台界面查看編譯情況,如下是編譯成功的控制台信息。

 

2.2.1.3 S32K144 UWB 錨點程序燒寫

(1)給 S32K144 接上 12V 電源,使用 J-link 如圖連接 S32K144 進行燒寫。

 

(2)點擊 S32SD for ARM 2.2 軟體界面上的小蟲子,選擇 “Debug Configurations” 進入調試配置。

 

(3)選擇 “GDB SEGGER J-Link Debugging” 再點擊左上角新建一個 J-Link 配置。

 

(4)確認配置名稱,項目名稱,確認是否是自己編譯時選擇的編譯項,比如我這裡應該是“Debug FLASH Anchors1”,並且確認是否填入了編譯得到的 elf 文件。

  

(5)如果下載提示沒有找到 elf 文件,請刷新項目窗口,確保之前的編譯生成了 elf 文件。

 

(6)點擊 Debug 進行下載,並進入調試模式,然後可以進行單步調試。

 

 (7)如圖使用串口工具連接 S32K144 與電腦,可以查看 log 信息。

 

(8)波特率 115200,接收 ASCII 碼,拔掉電源重新上電可以看到列印的錨點號 NO.1 。

 

(9)用上面同樣的方法編譯下載 1~5 號錨點的程序。

(10)下圖分別是 5 塊 S32K144 下載完成列印的 log。

 

(11)把燒寫了錨點程序的 5 塊S32K144 對應錨點號貼上標籤。

(12)把燒好錨點程序的 S32K144 與 NCJ29D5D UWB 模塊如圖進行硬體連接便組成一個完整的錨點。

 



2.2.2 S32K144 BCM 程序燒寫

2.2.2.1 S32K144 BCM 程序導入 S32DS for ARM 2.2

導入步驟與上文 S32K144 錨點程序導入方法一致,不再贅述。 

2.2.2.2 S32K144 BCM 程序編譯

編譯方法與 S32K144 錨點程序的一致,不再贅述。 

2.2.2.3 S32K144 BCM 程序燒寫

(1)程序燒寫的硬體連接和燒寫步驟與 S32K144 錨點程序的一致,不再贅述。 

(2)程序燒寫進去之後可以看到 BCM 程序啟動後列印的 log。

 

(3)燒寫確認完畢後給 BCM 板貼上標籤。

  

2.2.3 KW38 BLE 錨點程序燒寫

2.2.3.1 KW38 BEL 錨點程序導入 MCUXpresso IDE

(1)從 NXP 官網下載安裝 MCUXpresso IDE,打開軟體,進行項目導入。

 

(2)MCUXpresso 與 S32DS for ARM 2.2 都是基於 Eclipse 開源框架開發的 IDE,項目導

入方式都是差不多的,所以這裡不再贅述。

2.2.3.2 KW38 BLE 錨點程序編譯

(1)編譯方法和 S32DS 一致,這裡我們選擇 “Debug” 編譯選項。

 

(2)在控制台可以看到相關編譯信息,如下圖說明編譯得到了axf 的文件。

 

2.2.3.3 KW38 BLE錨點程序燒寫

(1)使用 J-Link 進行下載,連接如圖所示。

 

(2)下載步驟與 S32DS for ARM2.2 基本一致,不同的是,這裡需要填入的 axf 格式的下載文件,點擊調試進行下載,進入調試模式。

 

(3)開始下載會彈出如下對話框。



(4)使用串口助手如下圖連接 PTC6 和 PTC7 和 GND 可以列印出調試 log。

(5)KW38 BLE 錨點程序上電運行 log 如下圖,串口波特率為 115200,接收 ASCII 碼。 

(6)燒寫完成貼上 BLE Anchors 的標籤。

2.2.4 KW38 智能鑰匙程序燒寫

2.2.4.1 KW38 BEL 智能鑰匙程序導入 MCUXpresso IDE

MCUXpresso 與 S32DS for ARM 2.2 都是基於 Eclipse 開源框架開發的 IDE,項目導入方式都是差不多的,所以這裡不再贅述。 

2.2.4.2 KW38 智能鑰匙程序編譯

編譯方法和 KW38 BLE 錨點程序編譯一致,不再贅述。 

2.2.4.3 KW38 智能鑰匙程序燒寫

(1)硬體連接和 KW38 BLE 程序連接一致,不再贅述。 

(2)串口設置與 KW38 BLE 程序一致,列印 log 如下。

 

(3)燒寫完成後,貼上 keyfob 的標籤。

  

2.3 3D Localization Demo 硬體連接

完成上面 4 個部分的程序燒寫之後,我們進行硬體連接。

(1)S32K144 的 UWB 錨點通過 CAN 連接,這裡我們同時也把供電連上,如下圖,是單個錨點的接線方式,下圖中最左起第 1 根排針為 GND,第 3 根為 12 V,第 7 根為CAN_L,第 8 根為 CAN_H。

 

(2)作為 BCM 的S32K144 開發板的 CAN 與 12V 電源的連接方式也是和上面一樣的,但是作為與上位機溝通的 BCM,還需要通過串口連接到作為上位機的電腦。

(3)KW38 BLE 錨點也要接入 CAN 網絡中,接線方式如圖,左起 1 是CAN_H,左 2 是 CAN_L,右起 1 是 GND,右 2 是 12V。

 

(4)所有模塊的 CAN 和 12V 電源都通過如下 2 進 4 出的接線端子進行連接。

 

(5)用 CAN 線把 UWB 錨點 + BLE 錨點 + BCM 把車身端的模塊全部連接起來,再把 BCM 用串口連到上位機電腦,整個系統只需要接入一路 12V 的電源線即可。

 

(6)智能鑰匙 Keyfob 端不接電源,而使用 CR2032 電池,J3 排針需要跳冒改變供電方式。

 

2.4 3D Localization Demo 上位機介紹

該上位機是大聯大世平集團深圳 ATU 同事開發的,僅用作基本的定位功能演示,主界面如圖所示,主要分為串口設置,錨點坐標設置,運行日誌,左側是定位結果顯示區域。

  

2.5 3D Localization Demo 功能演示

(1)按照硬體連接並上電之後,找到對應的串口號,波特率為 115200,點擊打開串口。

 

(2)同時可以看到運行日誌區域已經列印了相應動作的 log。

 

(3)再基於 index0(錨點1) 為(0,0,0)坐標點,填入 5 個錨點的坐標值,並通過串口發送給 BCM。

  

(4)發出坐標值的同時可以看到日誌窗口也有相應的記錄。

 

(5)收到錨點坐標位置的 BCM 的 綠色 LED 會點亮。

 

(6)給智能鑰匙 Keyfob 安裝電池或接入 12V 電源,然後按下 SW4 啟動藍牙廣播。

 

(7)再按下 BCM 上的按鍵 SW1 查找藍牙信號,並開始進行測距。

 

(8)等待約幾秒鐘之後,就可以看到上位機左側的位置綠色位置正在跳動,右下角是返回的 3 維坐標數據。

 

三、總結

本文主要講了基於 NXP NCJ29D5D 晶片的 UWB 方案和上位機軟體,移植到我們 Foxes 方案,包括 S32K144 錨點程序,S32K144 BCM 程序,KW38 BLE 錨點程序,KW38 智能鑰匙程序的代碼修改,編譯,燒寫,最後把各個模塊通過 CAN 線連接起來,並結合上位機軟體,進行定位演示的全部過程。

  

參考資料

[1]《an523019 - AN-SCA-1901 NCJ29D5 Tools (1.9)》
[2]《ds652611_1.1_NCJ29D5DHN – Ranger-4 Ultra Wideband Transceiver with MAC support》(datasheet)



UWB 相關博文:

NCJ29D5D 使用 Lauterbach 進行下載調試
Foxes 方案 UWB 模塊 NCJ29D5D 的配置與測距


歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
作者:Stark Liu / 劉沛(好景虛設)

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論