原创 【富芮坤FR3068x-C】开箱体验+烧录调试

2025-2-12 12:43 67 0 分类: MCU/ 嵌入式 文集: 测评

前言

非常感谢面包板社区和富芮坤,申请通过并收到了FR3068E-C开发板。


特性


  • FR3068E-C 芯片架构是属于双核架构,包括一颗独立的蓝牙核做蓝牙通讯以及另外一颗主核MCU,双核之间通过串口做HCI通讯,蓝牙核一般不对外开发,用户无需关注;
  • 内置128KB CRAM + 512KB SRAM,2MB Flash(根据芯片型号有不同大小配置);
  • 需外挂24MHz晶体时钟,系统主频最高可倍频至156MHz;
  • 工作温度为工业级 -40℃~105℃;
  • 有57个可编程IO(不同型号/封装会有所不同);
  • 支持两路CAN总线,支持 CAN FD;
  • 支持丰富的外设总线,如SPI/UART/USB等;
  • 支持双模蓝牙BLE+BT/EDR


硬件资源


  • 2x PDM 数字音频接口
  • 2x 32位宽的I2S接口
  • 3x I2C
  • 6x UART 带流控
  • 2x SPI 主接口,支持QSPI, OSPI
  • 2x SPI 从接口,一路是单线的,一路支持四线
  • USB 2.0 OTG
  • 最多支持 2x16 channel PWM,支持输入捕获,可以做PWM DAC输出
  • 最多支持 9 通道 12bit SAR-DAC,支持普通模式、队列模式
  • 最多可配置57个可配置GPIO
  • CAN FD控制器,符合CAN总线协议 V2.0 part A, B 符合 ISO 11898-1
  • Display 显示接口 8080/6080/RGB/SPI
  • 6x 32bit Timer
  • 2x DMA
  • SDIO 3.0
  • 硬件加密单元 AES-128, AES-192, AES-256
  • 支持 FPU
  • 真随机数发生器 TRNG
  • 像素编码转换器 YUV2RGB


从上面可以看出这款芯片除了支持蓝牙,它的显示接口、音频接口、通讯接口非常丰富,可以做影音相关的应用,非常不错。


开箱



  • 一个开发板,FR3068E-C DEV1.3 版本
  • 大屏幕,分辨率是 480x272
  • 一根USB Type-C 线,长0.5米,给开发板供电,但是这个线支持数据传输、慢充;
  • 一根 USB Mini 线,长0.5米,接板子上调试口;


上电,运行出厂程序


切记,USB Type-C 只给开发板供电,而 USB mini 才是调试口,插上之后电脑新增一个串口和一个 CMSIS-DAP 调试器驱动。

串口16,波特率921600,打印上电信息如下:

运行一段时间黑屏

如果长时间没有和开发板交互,开发板会进入休眠模式,屏幕熄灭,按下K1键/K2键/K3键可以点亮屏幕。


板载调试器

参考文档《5)FR3068E_DEV1.3开发板使用说明.pdf》

PDF文档和开发板出厂设置只把调试器转的 UART 跳线接上了,没有把 SWD 跳线接上。只有把 SWD 跳线也接上,Keil MDK 才能正确识别芯片。


SWD 接通的 BUG

  • 只要把 PB10/PB11 两个跳线帽接上,即 SWD 口联通,开发板的屏幕显示就不正常:
  • 屏幕背景色不正常,可能是大片的红色;
  • 屏幕多出了红色的线条;



的确如此,烧录一个不带显示屏的程序,再接上 PB10/PB11 跳线帽,SWD 成功识别。


串口烧录 bin 文件

参考文档 《FR306x 开发环境说明书v1.1.pdf》

首先,要确保工程 User Action 调用 python 脚本,编译输出 Project_burn.bin 文件,这个才是串口烧录使用的 bin 文件。

参考 examples/evb_demo/lvgl_demo 工程,User Action 命令如下:(别的工程需要生成 Project_burn.bin,直接拷贝这个命令过去,注意 bat 脚本相对路径位置)

Shell
"..\..\..\..\components\tools\keil\post_process.bat" "@L" "#L" "$J"


Keil MDK 烧录、调试

不论烧录的是 Project_burn.bin 还是 Project.bin 文件,理应都能调试。


确认链接脚本,代码放在 Flash 上

GUI 配置 链接地址--废弃

例如 example/peripheral_demo/gpio 工程,链接选项如下,没有使用链接脚本,而是通过GUI配置链接地址。

代码放在 Flash 上,起始地址 0x08002000,容量 0x200000 = 2MB


链接脚本--推荐

有多个可选的链接脚本,如下,存在于 sdk/components/tools/keil 目录下

  • psram_ft_3092e.sct
  • xip_flash_add_psram.sct
  • xip_flash_fr3066d.sct
  • xip_flash_fr3068e.sct 【推荐】
  • xip_flash_turn_key.sct


把链接脚本拷贝 Keil MDK 工程目录下,然后在工程选项中选择这个链接脚本,取消GUI配置链接地址的那个选项。


为什么推荐用链接脚本呢?

因为工程中某些函数有 __RAM_CODE 属性,即把代码放在 ram_code 段中,放在 SRAM 中,加快访问速度。如果是 GUI 配置链接地址,那么 __RAM_CODE 未定义,函数都放在 Flash 上,速度会慢一些。


而且有一些操作 Flash 的代码,还只能放在 RAM 上。


xip_flash_fr3068e.sct 文件内容

Shell
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08002000 0x000FE000 { ; load region size_region
ER_IROM1 0x08002000 0x000FE000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_RAM_CODE 0x1FFE0000 0x20000 {
*(ram_code)

list.o
queue.o
tasks.o
timers.o
port.o
portasm.o
heap_6.o
ke_mem.o
}
RW_IRAM1 0x20000000 0x00080000 { ; RW data
.ANY (+RW +ZI)
}
}


配置 Keil MDK 烧录算法


算法文件路径

sdk\components\tools\keil\

两个算法文件

  • FR30xx.FLM
  • FR30xx_ext.FLM


将两个算法文件拷贝到 Keil MDK 算法文件目录下


Keil 工程配置算法文件

第一步,选择算法文件


第二步修改下载地址

修改算法写入Flash 起始地址为 0x08002000 ,符合算法描述 08002000H~09001FFFH 地址范围


xip 调试配置文件 ini

文件路径 sdk\components\tools\keil\debug_xip_flash.ini

如果 Keil 工程需要调试,需要在 Debug 选项中加载这个文件,最好把这个文件拷贝到对应的工程目录下。

如下所示,当前工程是 sdk/examples/peripheral_demo/gpio 工程,把 debug_xip_flash.ini 文件拷贝到此工程下。

debug_xip_flash.ini 文件内容

Shell
/* 使用说明
1,使用xip_flash.sct作为链接文件;
2,工程选项的Debug标签页中,初始化文件(Initialization File)选择:debug_xip_flash.ini
3,【重要】Utilities标签页中,取消选择:Update Target before Debugging
*/


/*----------------------------------------------------------------------------
* Name: debug_xip_flash.ini
* Purpose: XIP Debug Initialization File
*----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------
Setup() configure PC & SP for RAM Debug
*----------------------------------------------------------------------------*/
FUNC void Setup (void) {
_WDWORD(0xE0050020, 0xffffffff);
_WDWORD(0xE0050024, 0xffffffff);
_WDWORD(0xE0050028, 0xffffffff);
_WDWORD(0xE005002c, 0xffffffff);
_WDWORD(0xE0050030, 0xffffffff);
_WDWORD(0xE0050034, 0xffffffff);
_WDWORD(0xE0050038, 0xffffffff);
_WDWORD(0xE005003c, 0xffffffff);
_WDWORD(0xE0050040, 0xffffffff);
_WDWORD(0xE0050044, 0xffffffff);
SP = _RDWORD(0x08002000); // Setup Stack Pointer
PC = _RDWORD(0x08002004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x08002000); // Setup Vector Table Offset Register

// Enable Cache
if ((_RDWORD(0xE00B0004) & 0x03) == 0x00) {
_WDWORD(0xE00B0000, 0x00000038);
_WDWORD(0xE00B0000, 0x0000003C);
_WDWORD(0x20000000, 0x12345678);
_WDWORD(0x20000004, 0x12345678);
_WDWORD(0x20000008, 0x12345678);
_WDWORD(0x2000000c, 0x12345678);
_WDWORD(0x20000010, 0x12345678);
_WDWORD(0x20000014, 0x12345678);
_WDWORD(0x20000018, 0x12345678);
_WDWORD(0x2000001c, 0x12345678);
_WDWORD(0xE00B0000, 0x0000003E);
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0x20000000, _RDWORD(0x20000000));
_WDWORD(0xE00B0000, 0x0000003D);
}
}

FUNC void OnResetExec (void) { // executes upon software RESET
Setup(); // Setup for Running
}

load %L incremental

Setup(); // Setup for Running

//g, main


调试注意事项

如果工程用到了显示屏那么SWD管脚会被占用导致 CMSIS-DAP 识别失败,那么可以通过串口烧录工具下载固件,然后Keil MDK 就可以调试。但是屏幕初始化之后导致 SWD 管脚又被占用, Keil MDK 就会退出调试。

如果工程没有用到显示屏,那么就可以直接在 Keil MDK 中下载固件并开始调试。

作者: Batman, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4077448.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /3 下一条