雅特力AT32F435/F437入门使用指南

描述

 

搭建AT32开发环境

一、调试工具及开发板目前AT32F435/F437开发板都自带AT-Link-EZ调试工具,AT-Link-EZ如下图左边红框所示,它也可拆开后单独搭配其他电路板使用,支持IDE在线调试、在线烧录、USB转串口等功能。图1. AT-START-F437开发板及AT-Link-EZ实物图雅特力

 

注意:AT-START板配备资源的详细说明,请参考《UM_AT_START_F43x_Vx.x》,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的EvaluationBoard(开发板)资料包解压后\AT_START_F43x_Vx.x\03_Documents。图2. 雅特力科技官方网站AT-START-F437开发板资料包雅特力

二、烧录工具及软件

  • AT烧录工具及软件:AT-Link/AT-Link+/AT-Link-Pro/AT-Link-ISO/AT-Link-EZ、ICP/ISP。
  • 第三方烧录工具:J-Link、安富莱、正点原子、轩微科技、创芯工坊、周立功、迈斯威志、阿莫烧录器、昂科、永创智能、高勒康达、浦洛、戎象科技、欣扬电子、西尔特、智峰科技等。

注意:上述烧录工具详情请访问雅特力科技官方网站→技术与开发支持→Hardware Development Tool 页面及第三方编程器(3RD Party Writer)页面。

  • ICP使用说明请参考《UM_ICP_Programmer》,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的ICP工具解压后Artery_ICP_Programmer_Vx.x.xx\Document\UM_ICP_Programmer。
  • ISP使用说明请参考《UM_ISP_Programmer》,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的ISP工具解压后Artery_ISP_Programmer_Vx.x.xx\Document\UM_ISP_Programmer。
  • AT-Link使用说明请参考《UM0004_AT-Link_User_Manual》,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的AT-Link-Family工具解压后AT_Link_CH_Vx.x.x\05_Documents\UM0004_AT-Link_User_Manual_ZH_Vx.x.x。

图3. 雅特力科技官方网站ICP/ISP/AT-Link-Family资料包雅特力

三、AT32开发环境

模板工程介绍在ArteryTek提供的固件库BSP中都默认建立好了常用IDE的模板工程。BSP可从雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列获取。图4. 雅特力科技官方网站BSP资料包雅特力以AT32F435/F437系列为例,BSP中创建了Keil_v5/Keil_v4/IAR_6.10/IAR_7.4/IAR_8.2/eclipse_gcc/at32_ide的模板工程,存放路径为AT32F435_437_Firmware_Library_V2.x.x\project\at_start_f4xx\templates,打开对应工程的文件夹并点击工程文件即可打开对应的IDE工程。如下是Keil_v5工程示例:图5. Keil_v5 templates工程示例

雅特力

工程内添加的内容描述如下:① at32f435_437_clock.c时钟配置文件,设置了默认的时钟频率及时钟路径。② at32f435_437_int.c中断文件,默认编写了部分内核中断函数的代码流程。③ main.c模板工程的主代码文件。④ at32f435_437_board.c板级配置文件,设置了AT-START上的按键和LED等常用硬件配置。⑤ firmware下的at32f435_437_xx.c是各片上外设的驱动文件。⑥ system_at32f435_437.c系统初始化文件。⑦ startup_at32f435_437.s启动文件。⑧ readme.txt工程的说明文件,记录了模板工程的一些应用功能、设置方式以及关联应用笔记(ApNote)等信息。除了templates外,BSP还按照外设分类,提供了大量的examples示例代码(Keil_v5工程文件)供用户参考,用户只需要直接打开即可。存放路径为AT32F435_437_Firmware_Library_V2.x.x\project\at_start_f4xx\examples。注意:关于BSP的更多详细说明,请参考《AT32F435_437固件库BSP&Pack应用指南》的“4 BSP使用简述”章节,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的BSP解压后\AT32F435_437_Firmware_Library_Vx.x.x\document。

Pack安装

需要安装Pack包在Keil/IAR中增加AT32MCU型号,Pack包可以从雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载。图6. 雅特力科技官方网站Pack包雅特力对于Keil编译系统,建议keil4.74或5.23以上版本。Keil_v5版本需要将Keil5_AT32MCU_AddOn解压后安装对应ArteryTek.AT32F435_437_DFP,Keil_v4版本需要安装Keil4_AT32MCU_AddOn;默认情况下,安装时可以自动识别到Keil的安装路径,如果识别不到或者不正确,需要手动选择Keil的安装路径。图7. 安装ArteryTek.AT32F435_437_DFP雅特力图8. 安装Keil4_AT32MCU_AddOn雅特力也可打开keil,点击Pack Installer图标,在Pack Installer中点击左上角file,选择import,导入从雅特力科技官方网站下载好的对应pack包完成安装。图9. Keil中Pack Installer图标雅特力对于IAR编译系统,建议IAR7.0或IAR6.1以上版本。安装IAR_AT32MCU_AddOn,默认情况下,安装时可以自动识别到IAR的安装路径,如果识别不到或者不正确,需要手动选择IAR的安装路径。图10. 安装IAR_AT32MCU_AddOn雅特力注意:关于Pack安装的更多详细说明,请参考《AT32F435_437固件库BSP&Pack应用指南》的“2 Pack安装步骤”章节,存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的BSP解压后\AT32F435_437_Firmware_Library_Vx.x.x\document。

使用AT-Link调试及下载

在Keil环境下使用AT-Link,在Debug里选择CMSIS-DAP调试器。图11. Keil Debug选项雅特力在Debug单击Settings进入Cortex-M Target Driver Setup界面如下图,1. 先选择AT-Link(WinUSB)-CMSIS-DAP/AT-Link-CMSIS-DAP;注意:关于WinUSB,请参考《FAQ0136_如何使用AT-LINK的WinUSB功能提升下载速率》,该文档可以从雅特力科技官方网站→技术与开发支持→FAQ→FAQ0136下载。2. Port选择SW,再勾选SWJ;3. 确认已识别到ARM SW-DP调试模块。图12. Keil Debug选项Settings设置雅特力并且在Utilities里,先勾去下图标示的选项框1,在选项框2下拉菜单选择CMSIS-DAP Debugger, 然后再勾选选项框1(需要先取消再勾选)。图13. Keil Utilities选项雅特力在IAR环境下使用AT-Link,选中工程,点击Project,选择Options,在Debugger里选择CMSISDAP调试器,再在CMSIS DAP里选择SWD。图14. IAR Debug选项雅特力图15. IAR CMSIS-DAP选项雅特力注意:关于Flash算法文件、MCU型号切换、Jlink无法找到MCU等的详细说明,请参考《AT32F435_437固件库BSP&Pack应用指南》相关章节,此处不再赘述。存放路径为雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列下载的BSP解压后\AT32F435_437_Firmware_Library_Vx.x.x\document。

四、快速替代AT32F403A/407流程

  • 请参考《MG0018_从AT32F403A_407移植到AT32F435_437》,该文档可从雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列获取;
  • 如果程序仍无法正常运行,请参考本文件其他章节,或联络代理商及雅特力科技技术支持人员协助解决。

AT32F435/F437芯片的增强功能配置

一、PLL时钟设置PLL设定方式AT32F435/F437内置的PLL最高可输出288MHz时钟,须根据输出频率设定PLL时钟配置寄存器(CRM_PLLCFG)。雅特力例如PLL=288MHz时(HEXT=8MHz),设置如下:雅特力其中,入口参数CRM_PLL_SOURCE_HEXT代表选择HEXT为外部时钟源,72为PLL_NS值,1为PLL_MS值,CRM_PLL_FR_2(0x01,二分频)为PLL_FR值。更多时钟配置相关信息,请参考《AN0084_AT32F435_437_CRM_Start_Guide》。该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0084获取,其中详细介绍了AT32F435/437的时钟源码配置与修改,以及如何使用雅特力的时钟配置工具(New Clock Configuration)来快速生成想要的时钟代码并应用到工程,该工具可从雅特力科技官方网站→产品讯息→高性能MCU→AT32F4xx系列获取。

PLL自动滑顺

当AT32F435/F437内置的PLL为108MHz以上时钟时,需要操作自动滑顺频率切换功能。使用AT32F435/F437 BSP时PLL自动滑顺频率切换程序范例:图16. PLL自动滑顺频率切换配置雅特力注意:如果开启了自动滑顺频率切换功能,在时钟切换后必须关闭自动滑顺频率切换功能,开启及关闭务必配 对使用。

Flash时钟分频

Flash时钟分频系数与系统时钟频率相对应,系统时钟频率与Flash分频系数对应关系如下:雅特力代码实现如下:雅特力

二、如何打开FPU功能(硬件浮点运算单元)

请参考《AN0037_How_to_use_FPU》,该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0037获取,其中详细描述了如何在AT32 MCU上使用FPU功能,以及Keil/IAR环境下的相关配置。

三、AT32F435/F437零等待/非零等待Flash和内置SRAM大小选择配置说明

通过用户系统数据配置支持内部闪存存储器和SRAM分配使用。AT32F435/F437的SARM大小默认是384KB,通过修改用户系统数据的扩充系统选项EOPB0来对其SARM在最低128KB字节到最高512KB字节之间动态配置。使能EOPB0有效务必要掉电或RESET一次。AT32F435/F437的用户系统数据说明如下:雅特力

雅特力

内核读取存放在零等待的Flash的指令码没有任何延迟,不会因为CPU主频太快,Flash的速度跟不上而要插入等待时钟。下文以AT32F435ZMT7(闪存容量4032K)为例,着重介绍SRAM从384KB修改为512KB的方法。更多SRAM扩展相关的原理说明,请参考《AN0026_Extending_SRAM_in_User's_Program》,该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0026获取。

使用Artery ICP Programmer工具(BOOT0=0,BOOT1=0)

AT-Link-EZ/AT-Link/J-Link连接到MCU→设备操作→用户系统数据→EOPB0选择512KB(如果有其他设置一并设置好)→应用到设备,即完成修改。图17. ICP工具编辑用户系统数据选择SRAM大小雅特力图18. 用户系统数据设置选择SRAM大小雅特力

使用Artery ISP Programmer工具(BOOT0=1,BOOT1=0)

UART或者USB连接到MCU→一直下一步到如下界面→选择编辑用户系统数据→下一步→EOPB0选择512KB(如果有其他设置一并设置好)→应用到设备,即完成修改。图19. ISP工具编辑用户系统数据选择SRAM大小雅特力

在IAP中修改

用户也可以使用在Bootloader program(IAP)内修改SRAM的大小。需要注意的是,编译器里需要将SRAM大小设置为与修改后SRAM大小一致(参考AN0026)。在运行启动文件时会加载SRAM,如果应用程序使用的SRAM大于384KB,就要在IAP修改用户系统数据,可以修改为512KB,SRAM大小用户系统数据EOPB0的地址是0x1FFFC010,示例代码如下:图20. 定义Extend_SRAM(void)函数修改SRAM大小雅特力修改用户系统数据前需要擦除用户系统数据区,如果用户系统数据区的其他选项已经设置过,需要将其他设置读出来,擦除后和设置SRAM大小一并写入。

在启动文件中修改

在运在运行启动文件时会加载SRAM,如果程序没有IAP,而应用程序使用的SRAM大于384KB,那么加载失败就会进入hardfault,导致应用程序运行不起来。所以可以在启动文件中加载SRAM之前将SRAM大小设置为512KB。在Keil编译环境启动文件中增加如下加粗部分代码:图21. Keil启动文件中修改SRAM大小雅特力在IAR编译环境启动文件中增加如下加粗部分代码:图22. IAR启动文件中修改SRAM大小雅特力完成以上配置后,同时需要在应用程序中添加声明和定义Extend_SRAM函数,参考1.2.3.3中写法,定义Extend_SRAM(void)函数修改SRAM大小。不推荐使用APP应用程序修改SRAM大小。如果APP使用的SRAM空间大于修改后的SRAM空间,程序会进入Hardfault。

四、加密方式(访问保护,擦写保护)

访问保护访问保护即大家通常说的“加密”,作用于整个Flash存储区域。一旦设置了Flash的访问保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过JTAG或者SWD读出,当使用ICP/ISP工具解除访问保护时,芯片会对FLASH进行擦除操作。可用ICP/ISP工具对IC进行访问保护与解除访问保护操作,如下:

  • Artery ICP Programmer工具(BOOT0=0,BOOT1=0)启用访问保护:设备操作--访问保护--启用访问保护。解除访问保护:设备操作--访问保护--解除访问保护。

图23. ISP工具启用访问保护雅特力图24. ISP工具解除访问保护雅特力

  • Artery ISP Programmer工具(BOOT0=1,BOOT1=0)启用访问保护:使能/除能保护、启用访问保护--下一步--是,即可将程序加密。解除访问保护:使能/除能保护、禁用访问保护--下一步--是,即可将Flash解除加密。
  • Artery ISP Multi-Port Programmer工具(BOOT0=1,BOOT1=0)启用访问保护:使能/除能保护、启用访问保护--开始--是,即可将程序加密。解除访问保护:使能/除能保护、禁用访问保护--开始--是,即可将Flash解除加密。

注意:设置了访问保护不能通过擦除操作来解除访问保护。

擦写保护

写保护作用于整个Flash存储区域或者Flash存储区域的某些页。一旦设置了Flash的写保护,内置的Flash存储区就不能通过任何方式写入。可用ICP/ISP工具对IC进行擦写保护与解除擦写保护操作,如下:

  • Artery ICP Programmer工具(BOOT0=0,BOOT1=0)启用擦写保护:设备操作--用户系统数据--勾选擦写保护字节扇区--应用到设备。解除擦写保护:设备操作--用户系统数据--勾除擦写保护字节扇区--应用到设备。

图25. ICP工具启用擦写保护雅特力图26. ICP工具解除擦写保护雅特力

  • Artery ISP Programmer工具(BOOT0=1,BOOT1=0)启用擦写保护:使能/除能保护、启用擦写保护--下一步--是,即可启用写保护。解除擦写保护:使能/除能保护、禁用擦写保护--下一步--是,即可解除写保护。
  • Artery ISP Multi-Port Programmer工具(BOOT0=1,BOOT1=0)启用擦写保护:使能/除能保护、启用擦写保护--开始--是,即可启用写保护。解除擦写保护:使能/除能保护、禁用擦写保护--开始--是,即可解除写保护。

注意:设置了擦写保护不能通过擦除操作来解除擦写保护。

五、在程序中区分AT32与其他IC方法

  • 读取Cortex-M系列CPU ID号区分,此方式可以区分出M0,M3,M4内核

图27. 读取Cortex型号雅特力

  • 读取UID,PID方式区分

图28. 读取UID,PID雅特力说明:在AT32F4xx微控制器内部有多个ID编码,将获取到的ID信息组装成一个64bit的数据,就可以区分出MCU是哪一种型号。更多信息请参考各型号技术手册RM的调试(DEBUG)章节以及《AN0016_Recognize_AT32_MCU》,该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0016获取。

六、AT32F435/F437高级功能

雅特力科技提供AT-SURF-F437开发板,配套实例涵盖AT32F437大部分高级功能,且提供很多实用级别的程序(存放于BSP例程\project\at_surf_f437\examples目录),详细信息请参考《AN0049_AT_SURF_F437_Board_Application_Note》,该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0049获取。图29. AT-SURF-F437开发板雅特力注意:系统性能改善是多方面调优共同作用的结果,关于如何提高AT32F435/F437的运行效能,请参考应用手册《AN0004_Performance_Optimization》与《AN0092_AT32F435_437_Performance_Improve》,该应用笔记可从雅特力科技官方网站→技术与开发支持→AP Note→AN0004/AN0092获取。

下载编译过程常见问题

编译

程序启动进入Hard Fault Handler

  • 使用SRAM超过用户系统数据设置的SRAM空间。请参考1.2.3使用ICP/ISP或第三方烧录器开启更大SRAM空间后烧录程序。
  • 在Keil或IAR上开启了singleprecision功能,在code中并没有开启M4内核FPU寄存器。在code中开启FPU功能:

图30. 增加开启FPU的代码雅特力

  • 访问数据越界。找到程序中访问越界的问题点,并修改它到正常数据区域内。
  • 系统时钟设置超出规格。

Keil项目内Jlink无法找到IC

  • 请参考《FAQ0008_Keil项目内Jlink无法找到IC问题》,该文档可以从雅特力科技官方网站→技术与开发支持→FAQ→FAQ0008下载。
  • 请参考《FAQ0132_JLink手动添加Artery MCU》,该文档及其附件可以从雅特力科技官方网站→技术与开发支持→FAQ→FAQ0132下载。

程序下载过程出问题

一、显示Error: Flash Download failed–“Cortex-M4”问题在Keil仿真或下载时弹出:图31. 下载出现Flash Download failed–“Cortex- M4”雅特力出现弹窗的原因可能是以下几种:

  • 开启了访问保护,先取消MCU访问保护再下载。
  • 选错了或者没有选择加载Flash文件算法,在Flash Download处选择添加正确的Flash文件算法。
  • BOOT0、BOOT1选择错误,BOOT0、BOOT1管脚电平须分别设置为BOOT0=0、BOOT1=0,使MCU从主闪存存储器启动。
  • J-Link驱动版本太低,建议6.20C以上版本。
  • 在程序中将JTAG/SWD PIN disable,解决方法参考“2.2.5AT32恢复下载”。

二、显示No Debug Unit Device found问题

  • 下载端口被占用,比如ICP正在连接目标设备。
  • JTAG/SWD连线错误,或没有连接。

三、显示RDDI-DAP Error问题

  • 编译器优化等级过高,如Keil AC6编译器的默认优化等级-Oz,需要改为-O0/-O1。
  • 在程序中将JTAG/SWD PIN disable,解决方法参考“2.2.5 AT32恢复下载”。

四、ISP串口下载时卡死问题

使用ISP串口下载时,偶尔会卡死,卡死之后电脑无法释放串口。建议处理方式:

  • 检查电源是否稳定。
  • 更换质量更好的USB转串口工具,如CH340芯片等。

五、AT32恢复下载

在使用AT32F435/F437时,用户可能在以下操作后无法再次下载程序:

  • 在程序中将JTAG/SWD PIN disable后,无法下载程序并且找不到JTAG/SWD device。
  • 进入Standby mode后,无法下载程序并且找不到JTAG/SWD device。

这里提供Keil和IAR环境下的解决方法如下:

  • 方法1 通过切换boot模式。切换boot模式到Boot[1:0]=01b或Boot[1:0]=11b,再按下复位键,即可恢复下载(注意切回Boot[1:0]=00b)。同理,ISP下载也可恢复。
  • 方法2 通过ICP tool加AT-Link方法。AT-Link专为AT32设计,因此使用ICP加AT-Link可恢复下载。

安全库区

编译

概述

目前越来越多的微控器(MCU)应用需要使用到复杂的算法及中间件解决方案(middleware solution),因此,如何保护软件方案商开发出来的核心算法等知识产权代码(IP-Code),便成为微控制器应用中一项很重要的课题。因为这一重要的需求,AT32F435/437系列提供了安全库区(SLIB)的功能,以防止重要的IP-Code被终端用户的程序做修改或读取,进而达到保护的目的。

应用原理

  • 设定以密码保护主闪存中指定范围的程序区(即安全库区),软件方案商可将核心算法存放到此区域,以达到保护的功能,其余空白程序区可以提供给终端商客户进行二次开发。
  • 安全库区划分为唯读区(SLIB_READ_ONLY)及指令区(SLIB_INSTRUCTION),并可选择部分或是整个安全库区存放唯读区或者指令区。
  • 唯读安全库区(SLIB_READ_ONLY)的数据能透过I-Code和D-Code总线读取,不能写入。
  • 指令安全库区(SLIB_INSTRUCTION)内的程序代码仅能被MCU透过I-Code总线抓取指令(仅能被执行),不能透过D-Code总线以读取数据的方式读取(包含ISP/ICP/调试模式以及从内部RAM启动的程序),以读取数据的方式去访问SLIB_INSTRUCTION时,读到的数值全都是0xFF。
  • 安全库区的程序代码及数据,除非输入正确的密码,否则无法被擦除。在密码不正确时,对安全库区执行写入或擦除,将会在FLASH_STS寄存器的EPPERR位置"1"提出警告。
  • 终端用户执行主闪存的整片擦除时,安全库区的程序代码及数据不会被擦除。
  • 当安全库区的保护功能被启动后,可以透过在SLIB_PWD_CLR寄存器写入先前设置的密码来解除保护功能。解除安全库区的保护时,芯片将会执行主闪存的整片擦除(包含安全库区的内容)。因此即使软件方案商设置的密码被泄漏,也不会有程序代码外泄的疑虑。

 

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

全部0条评论

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

×
20
完善资料,
赚取积分