天天看點

[嵌入式方案][nrf52820] DONGLE擴充卡 ESB(2.4G) 主從一體方案 多通道通信 動态調頻

一、架構說明

模式 描述 優勢
主從一體 1. 多通道通信 2. 動态調頻 1對7
架構功能 1. RTX5 2.功能分層 架構清晰,內建部分功能友善開發
USB_HID 滑鼠-鍵盤-磁滾輪-自定義通道 代碼健壯易懂
附帶功能 BootLoader(usb) -
【注意】 CMSIS版本不能低于5.8.0,否則程式将不正常運作。    ARM.CMSIS.5.8.0.pack
        5.8.0更新了 [GCC LinkerDescription,GCC 彙程式設計式啟動] [為工具鍊 ARM、GCC 添加了 ARMv8-M 堆棧密封(到連結器、啟動)]

[項目結構]
+---hand_write_board
|    +---bsp
|    |   \---nrf52                     [BSP層公共接口函數]
|    +---chip
|    |   +---nRF_Drivers               [晶片驅動函數]
|    |   +---nRF_Libraries             [晶片支援函數]
|    |   \---nRF5_SDK_17.0.2_d674dde   [晶片SDK版本]
|    +---lib
|    |   \---queue                     [消息隊列]
|    +---os
|    |   \---rtx5                      [OS層公共接口函數]
|    +---platform
|    |   +---log                       [日記函數]
|    |   \---SEGGER_RTT                [RTT庫]
|    +---protocol
|    |   \---usb_comm_ugee             [USB手寫序列槽協定]
|    +---sys
|    |   \---nrf52                     [SYS層公共接口函數]
|    +---main_HandWriteBoard           [項目業務層]
|    │      sdk_config.h               (NRF功能配置)
|    │      business_gpio.h            (引腳定義)
|    │      business_function.h        (功能定義/業務宏)
|    │      app_main.c                 (主業務功能)
|    │      biz_flash.c                (Flash資訊存儲和讀取)
|    +---public                        [項目公共層]
|    │      biz_esb.c                  (2.4G功能函數:發送端/接收端)
|    │      biz_fds.c                  (重新封裝fds函數)
|    +---biz_usb                       [USB業務層函數]
|    |   \---biz_usb.c                 (USB初始化/通道發送/USB資訊)
|    +---public_usb                    [USB公共層函數]
|    |   +---app_usbd_string_desc.c    (USB字元串描述符/目前系統類型)
|    |   \---app_usbd_core.c           (USB裝置進階庫核心内部子產品/内部變量、輔助宏和函數)

[FLASH結構]
nRF52820 256 KB Flash, 32 KB RAM
          0x40000       0x8000

使用boot時:keil需要在Options-c/c++-Define  添加宏定義 MBR_PRESENT

boot檔案:..\nrf52_boot\out\nrf52_boot_usb_dfu.hex

  名稱        位址                           大小(位元組)
|----------------------------------------------------------
MBR:         0x0000                         0x1000       (mbr_nrf52_2.4.1_mbr.hex)
APP:        0x1000                         0x40000 - boot_size - RSV1_SIZE - RSV2_SIZE - mbr_size = 0x31000
Boot:        0x32000                        0xC000
RSV1:        0x3E000                        0x1000       (settings.hex)--Bootloader setting
RSV2:        0x3F000                        0x1000       (settings.hex)--MBR parameters
END:         0x40000

|-----------------------------------------------------------

boot+app addr: 0x0

fds addr:0x31000 - 0x0C00 = 0x30400
fds_size: 3 * 0x0400 = 0x0C00

注:使用BootLoader時,沒有燒錄【mbr_nrf52_2.4.1_mbr.hex】就會跳轉失敗,程式跑飛。


如何進入BootLoader模式?
1. 從[Bus Hound]找到裝置根節點[USB Composite Device],輕按兩下進入。
2. 新視窗選擇節點3(Interrupt Out), 設定資料長度12。
3. 在Hex Bytes 輸入02 FE, 點選上方[Run按鈕]。

如何恢複出廠設定?
1. 同上。
2. 在Hex Bytes 輸入02 DD, 點選上方[Run按鈕]。      

繼續閱讀