天天看点

[嵌入式方案][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按钮]。      

继续阅读