MC56F83789数字信号控制器介绍

电子说

1.3w人已加入

描述

MC56F83789支持 256KB闪存,带 ECC。内置双闪存块支持实时更新,高达 64KB RAM,以与内核相同的速度运行。增强型DMA。增加了引导ROM,以支持 UART、I2C和 CAN的代码更新。

高达16通道高分辨率PWM,分辨率为312ps。双路低功耗ADC,每个高达3MSPS。集成事件发生器(EVTG),集成USB 2.0 PHY 全速模式 OTG,CAN-FD外设,支持车规 AEC Q100 认证。

可用于电机控制、开电源应用场景,如 EV空调压缩机, 电动汽车充电器, 电源模块, 车载充电器,充电桩,太阳能离网逆变器, 家用储能等应用。

ECC

MC56F83xxx在片上 Flash中运行代码,因此Bootloader的主要任务是在制造生产期间或设备寿命期间的任何时间为内部 Flash 提供嵌入式固件应用程序更新。

MC56F83xxx具有片上ROM引导加载程序,这与 Kinetis 和 LPC系列相同,因为引导加载程序代码保存在 ROM中,引导加载程序无法修改。

它使用以下固定外设下载应用程序代码。Bootloader 通过充当从设备并监听主设备可以启动通信的各种外围端口来进行配置。

内置 BootRom 支持通过 I2C, UART, CAN 总线接口进行在线升级,无需额外的仿真调试工具。

如果用户设计目标板,想使用片上引导加载,则必须使用以下引脚。

下面演示用 blhost.exe软件和 MC56F83xxx内置的Boot进行通信。

ECC

BCA和闪存配置字段配置,片上闪存中有一个特殊的空间,称为BCA,位于 P:00x3C0,它提供了配置 Bootloader操作所需的所有参数。

对于未初始化的闪存,Bootloader使用预定义的默认配置。主机应用程序可以使用Bootloader对BCA进行编程,以便在引导加载器的后续初始化期间使用。

在P:0x400~0x40F处有一个名为Flash配置字段的特殊空间,必须设置FOPT(P:0x40D)的Bit7和Bit6,以便在复位启动时执行引导加载程序。

为了设置BCA配置和Flash配置字段,用户只需修改 Flash_config.c,它由CodeWarrior IDE软件为 MCU 工具自动创建。

ECC

基于CodeWarrior为 MCU V11.x版本软件生成 S-Record 固件文件,引导加载程序可以下载应用程序代码以闪存 S-Record格式文件。

如下图所示,S-Record文件可以由 CodeWarrior为 MCU工具生成,以便 blhost可以将 S-Record文件下载到 Flash。

请注意,必须选中“生成S记录文件”/“按地址排序”/“生成字节地址”的选项。

最大S记录长度设置为128,必须选择DOS模式,如下图所示。

ECC

 请注意,由 blhost 工具下载的只能是*.elf.p.S文件而不是*.elf.S下载。限制:ROM 引导加载程序将其全局变量从 x:0x0000放入RAM,对它们没有保护。

如果使用“.S”或“.x.S”文件,可能会损坏ROM引导加载程序的变量。因此,需要将“.p.s”文件与ROM一起使用。

ECC

Blhost -p com19 get property 1

Blhost -p com19 flash erase all unsecure //mass erase and set the DSC in unsecure mode by setting the P:0x40C byte in BYTE address mode

Blhost -p com19 flash image *.s19 erase

ECC

ECC

将应用程序代码和常量转储到文件中,以便用户比较应用程序代码和常量是否正确编写,或者当目标板从现场返回时,可以验证应用程序固件是否损坏。

打开 CodeWarrior 软件,创建新项目,通过点击 + 按钮添加任务及任务名。

ECC

ECC

ECC

选择项目,点击 Run->Debug 配置,调试配置菜单出现,选择 “Attach”,同时点击 Debug按钮,PC端将会连接目标板。

ECC

ECC

ECC

在点击 “Suspend” 按钮后,PC端将会和 DSC板子通信,可以看到 P flash 的内容,点击 Export 按钮,“Export Memory” 菜单将会出现。然后输入需要保存的文件名,保存 Flash的内容到该文件中。

ECC

可以看到 2.txt文件将包含 S-Record格式的文件数据。

备注:在安全模式下,JTAG端口被阻止访问,用户无法使用JTAG进行写入或读取。

但有一个后门,JTAG在安全模式下只接受大规模擦除命令,这样可以在安全模式中擦除所有 Flash 以保护代码,同时避免芯片 Flash一旦处于安全模式就永远无法写入的现象。

CW工具可以生成以下数组,并在将代码下载到 Flash时将其写入Flash 中的配置字段。

#pragma define_section reserved_FCF "reserved_FCF.text" RX
#pragma section reserved_FCF begin
static const uint8_t _flash_config_field[] = {

/* NV_BACKKEY3: KEY=0xFF */
0xFFU,
/* NV_BACKKEY2: KEY=0xFF */
0xFFU,
/* NV_BACKKEY1: KEY=0xFF */
0xFFU,
/* NV_BACKKEY0: KEY=0xFF */
0xFFU,
/* NV_BACKKEY7: KEY=0xFF */
0xFFU,
/* NV_BACKKEY6: KEY=0xFF */
0xFFU,
/* NV_BACKKEY5: KEY=0xFF */
0xFFU,
/* NV_BACKKEY4: KEY=0xFF */
0xFFU,
/* NV_FPROT3: PROT=0xFF */
0xFFU,
/* NV_FPROT2: PROT=0xFF */
0xFFU,
/* NV_FPROT1: PROT=0xFF */
0xFFU,
/* NV_FPROT0: PROT=0xFF */
0xFFU,
/* NV_FSEC: KEYEN=1,MEEN=3,FSLACC=3,SEC=2 */
0x7EU,
/* NV_FOPT: FOPT[7:6] = 11b 表示从 ROM启动,其他数值表示从 Flash启动 Flash */
0xFFU,
/* Reserved */
0xFFU,
/* Reserved */
0xFFU
};
#pragma section reserved_FCF end






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分