一、架构说明
【注意】 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_bootoutnrf52_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按钮]。
上一篇:[嵌入式框架][nrf52820][nrf52840] 硬件USB_HID
下一篇:[nrf52810] ESB(2.4G) 主从一体方案 多通道通信 动态调频
推荐阅读最新更新时间:2024-10-29 10:05