FR801xH 系列芯片授权烧录

更新时间:2023-11-21 03:45:07下载pdf

本文介绍如何对 FR801xH 系列芯片进行授权烧录。

固件烧录方式

芯片支持两种烧录方式 串口烧录J-link SW 接线烧录,下面介绍两种烧录方式
使用时需注意两种烧录方式的区别。

  • 串口烧录:支持烧录和全片擦除
  • J-Link SW 烧录:只支持写不支持擦除

基于 Keil + J-Link的烧录方式

  • 连接硬件

按下图将J-Link工具链接到开发板上

FR801xH 系列芯片授权烧录

  • 配置Keil
  1. 安装Keil5

  2. 安装完 Keil 工具后,需安装 keil 工具的 Cotex-M3 库软件包

  3. 将 (Fr801xH SDK/Tools/FR8010H.FLM) 文件拷贝到如下目录中,以完成 Fr801xH J-link 在线下载程序的支持,

    C:\Keil_v5\ARM\Flash

  4. 在Keil工程中进行如下配置。

    1. 选用J-Link作为调试工具。
      FR801xH 系列芯片授权烧录

    2. 配置调试方法为 SW。
      FR801xH 系列芯片授权烧录

    3. 在 flash download 选项卡中配置下载选项,单击 add 选中配置文件。
      FR801xH 系列芯片授权烧录

    4. 配置使用 Debug Driver 进行 flash 的烧录。
      FR801xH 系列芯片授权烧录

通过以上配置就可以实现在 Keil 的 IDE 中进行 flash 的调试和烧录。

采用 PC 烧录工具+串口进行烧录

在芯片的 J-Link 调试口被复用成别的功能,或者系统会进入睡眠时,则无法通过上述方法进行烧录。这时可以采用 PC 烧录工具加串口的方式进行烧录。其原理为:在芯片上电时,内部 boot 程序会尝试通过串口与外部工具进行通信,在握手成功之后就可以进行烧录等后续操作。

芯片对应引脚 串口工具对应引脚
芯片PA3(TXD) RX
芯片PA2(RXD) TX
VCC VCC3.3V
GND GND

具体操作步骤如下:

  1. 安装 USB 转 UART 驱动软件,取决你所用的串口工具

  2. 打开 PC 端串口烧录工具

    FR801xH 系列芯片授权烧录
    选择正确的串口号,导入 DAT 文件(选择要烧录的 bin 文件),然后打开串口,进入等待连接状态。
    FR801xH 系列芯片授权烧录

  3. 将串口工具的 TX 连接到芯片 PA2(芯片端的 RX),RX 连接到芯片的 PA3(芯片端的 TX)。

  4. 将串口工具的地和供电同时与芯片的地和供电连接,这时芯片与 PC 工具握手成功后在工具端会显示已经连接,然后先点击擦除所有内容,之后点击写入所有内容即可将程序烧录到芯片中

    FR801xH 系列芯片授权烧录
    注意事项:因为串口工具的 TX 会串电到芯片端,所以接线连接顺序要符合上面的 2 和 3 步骤所描述的流程。

  5. 烧录完成后,按下复位键复位 FR8018HA。PC COM口打印信息,表示固件正常运行。
    FR801xH 系列芯片授权烧录

:::info
该日志打印需在SDK中开启以下两个宏定义
        #define TUYA_BLE_LOG_ENABLE                  1
        #define TUYA_APP_LOG_ENABLE                 1 
:::

烧录授权

获取授权

请参考 Bluetooth LE 系列授权中的“生产凭证”章节。

烧录授权

  1. 使用USB转TTL工具,连接芯片 UART2。

  2. 打开云模组烧录授权工具,选择只授权。
    FR801xH 系列芯片授权烧录

    注意:根据当前代码设置,要使用 UART2 来授权固件,波特率使用和代码配置一致,只授权。

   uint32_t ty_uart2_init(void)
   {
       system_set_port_pull(GPIO_PA2, true);
       system_set_port_mux(GPIO_PORT_A, GPIO_BIT_2, PORTA2_FUNC_UART1_RXD);
       system_set_port_mux(GPIO_PORT_A, GPIO_BIT_3, PORTA3_FUNC_UART1_TXD);
                                                                                                                                                                                                                                         
       uart_init(UART1, BAUD_RATE_115200);
       NVIC_EnableIRQ(UART1_IRQn);
       uart2_is_init = true;
       return TUYA_BLE_SUCCESS;
   }