LN882H是一款专为室内短距物联网连接设计的高集成度 IoT Wi-Fi/BLE Combo MCU芯片。
该芯片的主要特性如下:
通讯制式上支持802.11b/g/n和蓝牙5.1双模共存;
硬件配置为Coretex M4F,160M主频,内置296KByte RAM,8/16Mbit Flash;
支持高达2000V的静电放电保护,-40度~105度环境温度,以及通过双85测试;
多达20个GPIO口,具备常规ADC、PWM、SDIO、I2C等多种客户接口;
Wi-Fi/BLE满负荷运行后,客户进行Open Mcu开发时,可使用内存空间多达130KB;
封装为5*5 32Pin QFN;
根据文档说明,在没有特殊情况的时候,我们将固定 XTAL_CLOCK = 40Mhz,PLL_CLOCK = 160Mhz;也就是说时钟主频为 160M。
相关文档
LN882H 软件 SDK 仓库地址:https://gitee.com/lightningsemi/ln882h
LN882H 文档仓库地址:https://gitee.com/lightningsemi/ln882h-document-collection
软件环境搭建指导:https://gitee.com/lightningsemi/ln882h/tree/master/doc
开发环境搭建
软件工具安装
正常安装 Keil 即可,推荐使用 keil-MDK5.18 版本,与原厂SDK的开发环境保持一 致,以避免IDE环境带来的额外问题。
注意:keil 版本如果太高的话,在选择 Device 时候可能没有 ARMCM4_FP ,只有 CMSDK_CM4_FP;所以这里建议与原厂保持一致。
将Keil安装目录下的编译执行文件路径 E:\Keil_v5\ARM\ARMCC\bin 加入系统环境变量 path 和用户环境变量 path中
从官网下载最新版本 python3,安装完成后将安装路径添加在系统环境变量 path 以及用户环境变量 path 中
由于工程内部执行 python 脚本运行的可执行文件名是 python3,所以需要将安装好的 python3 安装目录下的可执行文件python.exe 新拷贝一份并重命名为 python3.exe 即可。
博主这里使用的是 Python 3.9.13,官方推荐最新版没有测试过不知道是由存在问题,如果担心这里可以选择与博主相同的版本。
Keil配置
Device选择ARMCM4_FP(Cortex-M4F)
Debug配置J-Link调试器(如果不使用 J-Link 可忽略此步骤)
使用 JFlash.exe 作为外部 Flash 工具
Command:..\..\..\tools\JFlash\JFlash.exe
Arguments:-openprj ..\..\..\tools\JFlash\ln882h.jflash -open.\flashimage.bin,0x0 -programverify
注意:如果使用的是官方的 Demo 那么这里默认即可,因为官方实例中已经帮我们配置好了,如果是自己建的示例工程这里 JFlash 的路径一定不要选错了;
ECK板说明
B9(Tx)、B8(Rx):UART0 口,官方实例中 LOG 使用的就是 UART0
A2(Tx)、A3(Rx):UART1,串口烧录口
左边白色为复位按钮、右边白色为 Boot 模式
编译
打开官方 SDK 中的任意示例代码,编译输出如下图,表示编译成功。
在 Keil 编译流程中:
- 编译前:Keil 调用一个 Python 脚本 (before_build_keil.py),根据指定的配置文件 (flash_partition_cfg.json) 生成分区表头文件 (flash_partition_table.h)。
- 命令:python3 ......\tools\python_scripts\before_build_keil.py p ..\cfg\flash_partition_cfg.json -o ..\cfg\flash_partition_table.h
- 编译后:Keil 调用一个 after-build 脚本,处理编译生成的 .axf 文件:
- 首先生成 .bin 和 .asm 文件;
- 然后将 boot.bin 与生成的 .bin 文件拼接合并,填充 image header 格式,最终生成 flashimage.bin。
串口烧录
LN882H 文档仓库中提供了亮牛串口烧录工具,这是一款通过计算机串口对芯片 Flash 进行烧录的专用工具。其优点在于支持一拖多烧录,并集成了烧录后自动复位、连续烧录以及烧录失败报警等功能。为确保顺利使用,第一次使用时强烈建议查看快速使用说明,并采用工厂模式进行烧录。
使用说明
首先打开软件,进入到选择工作模式界面,选择默认的工厂模式进行烧录。
进入到工厂模式后先选择串口,选择你要烧录的文件,并输入烧录地址,然后选中地址输入框左面 的选中框。最后设置烧录波特率,然后就可以点击开始下载了,具体流程如下图:
按住 RST 的同时按住 BOOT,然后依次松开 RST 、BOOT 即可进入串口烧录模式
注意:
- 烧录文件路径最好不要有中文,如果必须出现中文则不能有特殊字符以及空格。
- 由于不同的串口工具对波特率的支持都不一样,请尝试使用多个波特率进行烧录。
- 如果提示无法识别芯片信息,请检查芯片是否进入了BOOT状态,通过串口发送 version\r\n 指令给芯片,返回 Mar 14 2021/00:23:32 才正确。
JLink烧录
硬件连接
J-Link 通过 SWD(Serial Wire Debug)接口连接到 LN882H 开发板,通常需要连接以下信号线:
- SWDIO(Serial Wire Debug I/O) - 数据传输信号
- SWCLK(Serial Wire Clock) - 时钟信号
- GND(Ground) - 公共地
- VCC(Target Power) - 目标板供电检测(用于 J-Link 识别目标电压)
- nRESET(Optional) - 复位信号(可选,用于调试过程中复位芯片)
在 LN882H 中 GPIOA1 为芯片的 SWD,GPIOA4 为芯片的 SCLK。
按照上述配置完成并在 Keil 中设置好后,点击load按钮,keil会自动调用JFlash进行烧录。
如下图,即表示烧录成功。注意:每次jlink烧录前确保芯片进行过复位,可按 EVK 的复位键进行彻底复位。
烧录默认只擦除烧录bin文件大小区域,如希望在烧录前进行整片flash的擦除可 在keil配置的Utilities->Arguments中加入-erasechip参数,如下:
-openprj ..\..\..\tools\JFlash\ln882h.jflash -open.\flashimage.bin,0x0-programverif