雅特力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寄存器写入先前设置的密码来解除保护功能。解除安全库区的保护时,芯片将会执行主闪存的整片擦除(包含安全库区的内容)。因此即使软件方案商设置的密码被泄漏,也不会有程序代码外泄的疑虑。 

MS5180T模拟-数字转换器(ADC)完美替代AD7780
氢燃料电池汽车的环境效益分析
为什么小汽车出行比例首次出现下降
工业互联网的网络安全技术趋势
Google现在正在印度的KaiOS手机上提供镜头文本翻译功能
雅特力AT32F435/F437入门使用指南
研究人员开发基于即兴的聊天机器人
又跳水了!魅族唯一非联发科前年度旗舰手机,如今仅一千四
二维码读码器应用无处不在 高速读取二维码和条形码
Google周二宣布将取消Cloud Next的物理部分
锂离子电池作业原理及结构分析
基于ARM体系架构构建云服务
中兴裸眼3D新机皇天机7Max,为逆袭而战!
一种门厅灯自动开关电路图分享
性价比超小米,搭配6GB运存+IMX586四摄+大电池20W快充
鸿海大赚?6.67亿美元购夏普三间海外工厂
条形液晶屏的尺寸是如何确定的?
曼富图多功能三脚架评测 个性化的设计和简易的操控性
小米10 Pro曝光搭载骁龙865移动平台采用了单挖孔设计
英特尔11代酷睿 “黑豹峡谷”NUC本月发布,性能更高“幻影峡谷”推迟到明年Q1