MCU

MCU是Microcontroller Unit(微控制器单元)的缩写,它是一种集成了中央处理器(CPU)、存储器(ROM、RAM)、输入/输出端口(I/O)、定时器(Timer)、串行通信接口(UART、SPI、I2C等)和其他外围设备控制器的单个芯片。MCU通常用于嵌入式系统中,用于控制各种电子设备和系统。

由于其集成度高、体积小、功耗低以及成本相对较低等特点,MCU被广泛应用于各种嵌入式系统中,例如智能家居设备、医疗设备、汽车电子系统、工业自动化等。MCU的选择通常基于应用的需求,如处理性能、功耗、外设接口等因素。

1.jpg

2.jpg

来源:航顺芯片

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 16

日前,德州仪器参加了由电子发烧友主办的 2023 电机控制先进技术研讨会,并凭借其高性能的 MSPM0G3507 芯片,获得 2023 年度电机控制器十大主控芯片奖项。这款芯片在电机控制领域具有丰富的应用场景,其卓越的性能和稳定性赢得了业内专家和客户的赞誉与肯定。

1.jpg

德州仪器 MSP 产品线应用工程师何帅先生

出席颁奖典礼并领奖

德州仪器的 MSPM0G3507 微控制器 (MCU) 是一款高度集成的超低功耗 32 位 MCU。它基于增强型 Arm® Cortex®-M0+ 32 位内核平台,工作频率最高可达80MHz。这款低成本 MCU 提供高性能模拟外设集成,支持 -40°C 至 125°C 的工作温度范围,并在 1.62V 至 3.6V 的电源电压下运行。

此外,MSPM0G3507 还配备了丰富的外设接口,方便用户进行系统集成。这款芯片适用于各种类型的电机控制系统,包括直流无刷电机、步进电机、永磁同步电机等。其广泛的应用领域包括工业自动化、电动车、航空航天、机器人等。

MSPM0G3507 的主要优势:

·高性能模拟外设集成:具有两个总计多达 17 个外部通道的 12 位 4Msps ADC、一个 12 位 1Msps DAC、三个高速比较器、两个零漂移零交叉运算放大器和一个通用放大器。

·智能数字外设:提供了丰富的数字外设,包括两个 16 位高级控制计时器、五个通用计时器、两个窗口式看门狗计时器以及一个具有警报和日历模式的 RTC。

·超低功耗:具有优化的低功耗模式,待机时仅需要 1.5µA 的电流,同时保留 RTC 和 SRAM。这使得 MSPM0G3507 在低功耗应用中具有优势,可以大大延长电池寿命,降低能耗。

·丰富的存储资源:提供了 128KB 的闪存和 32KB 的 SRAM。能够满足基础的电机控制应用的存储需求,同时保持了低功耗的特点。MSPM0G3507 也可以通过外部扩展存储器来灵活地实现更大的数据存储和处理能力。

·增强型通信接口:提供了四个 UART、两个 I2C、两个 SPI 以及 CAN 2.0/FD。这些通信接口可以让 MSPM0G3507 与多种设备或系统进行高效的数据交换,实现电机控制的精准和稳定。

德州仪器还提供了一个基于 MSPM0G3507 的开发板,该开发板集成了一个在线调试探针,可以方便设计人员进行编程、调试和能耗测量。

MSPM0G3507  作为今年发布的 MSPM0 家族的一员,高性能模拟和低功耗特性使其成为理想的主控芯片。TI MSPM0 系列低功耗 MCU 包含具有不同模拟和数字集成度的器件,可让客户找到满足其工程需求的 MCU。MSPM0 MCU 平台将 Arm® Cortex®-M0+ 平台与超低功耗整体系统架构相结合,使系统设计人员能够在降低能耗的同时提高性能。

来源:德州仪器

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 254

Silicon Labs(亦称“芯科科技”)制作本篇设计应用文章将说明8 位微控制器(MCU)的独特优势,如何为开发人员实现简化的设计以提升开发效率并节省总体成本。点击链接获取完整内容:https://cn.silabs.com/mcu/8-bit-microcontrollers/why-8-bit-mcus-are-here-to-stay 

几十年来,8位MCU)一直是无数嵌入式应用的主力,尤其是消费产品和医疗器械中的应用。简单、有效的 8 位 MCU 在推动智能物联网产品的发展中发挥了核心作用。虽然其后代的功能(如32 位和无线 MCU)继续领先,但对于广泛的应用来说,8 位 MCU 的普及和偏好没有放缓的迹象。

业界已经证明,尽管不可否认对高端、尖端解决方案存在需求,但对于需要8 位支持的简单应用来说,将始终存在一个巨大的市场,且这一需求保持稳定。更大并不总是更好,尤其是在优先考虑低功耗、长寿命和高产量的领域。

市场对 8 位 MCU 的成熟需求

玩具、电动工具、医疗器械、烟雾报警器、安全、个人护理、家用电器和汽车电子元件等行业仍然需要能够可靠地执行任务且复杂度尽可能低的MCU。8 位微控制器能够满足这一需求,允许制造商将额外的时间和资源用于更高的维护或新兴业务领域。

此外,8位 MCU 的持续使用使制造商能够在其产品线中为客户提供真正的定制选项。选择更多功能和更多连接性的能力,或者相反,选择基线模型的能力,支持更广泛和更多样的产品组合。

1.png

8位MCU对于设计简化的刚需

遗憾的是,一些微控制器制造商似乎计划逐步淘汰8 位微控制器架构,这不利于此类微控制器的开发者和客户。虽然 32位 MCU 无疑为相应的应用提供了更多的功能和连接选项,但也增加了复杂性。在某些情况下,32 位 MCU 需要完全不同的编码语言或开发环境。数十年来,广泛使用的8 位 MCU 已经积累了大量代码库,这样做抵消了利用广泛的公共 8 位代码库可能节省的时间。这也使得开发人员更难(甚至不可能)仅使用 32 位 MCU 将传统组件和部件集成到新产品中。

上佳的解决方案是采用各种MCU 选项,从 8 位开始,到 32 位,再到无线甚至更高。对于不需要无线连接的简单应用而言,开发人员可以选择可靠、成熟的8 位 MCU 来节省空间和成本。随着复杂性的增加,开发人员在理想情况下可以创建混合 MCU 架构,为应用中所需的每项任务选择正确的位数。凭借这种灵活性,客户可以从一系列解决方案(从“好”、“更好”到“最佳功能”)中进行选择,以满足他们的特定需求和预算。

为什么开发平台对 MCU 选择至关重要

因此,一个关键的考虑因素是您MCU 协同工作的能力,特别是当涉及到您的编码语言时。为了确保这一点,您的MCU 应该在单个开发环境中是可编程的,无论 MCU 的位数或连接性如何。这使得开发人员不必为同一应用中的不同 MCU 维护两套单独的代码数据库,并允许将传统 MCU 集成至新兴应用中。

一个额外的好处是能够根据不断发展的需求、标准或要求(包括安全方案)来改进您的产品和应用程序。在单个应用中选择不同MCU 的能力可确保您的基准解决方案保持健康、稳定,同时您的前沿投资完全能够经得起未来考验。

芯科科技坚守其 MCU 根基

作为提供卓越速度和低功耗的行业领导者,芯科科技以支持尖端物联网应用和无线解决方案而闻名。然而,我们提供(并将在可预见的未来持续支持)高质量、价格合理的8 位 MCU 产品线,满足消费产品和医疗器械行业及其他领域的实际需求,这也是事实。

好消息是,所有芯科科技MCU(8 位、32位和无线)都可以在 Simplicity Studio 中进行编程,这是我们所有技术、SoC 和模块的统一开发环境。

2.png

Simplicity Studio 包括 SDK 资源、软件和硬件配置工具,以及集成开发环境(IDE),其中包含行业标准代码编辑器、编译器和调试器,无需额外成本。

减轻您对MCU 如何在应用中协同工作的担忧,或者如果您正在构建不必要的复杂性或未使用的功能,将使您确信您正在充分利用您的开发和制造资源。

探索芯科科技全系列8位和32位MCU产品组合:https://cn.silabs.com/mcu

来源:SiliconLabs

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 42

01、问题现象与分析

客户项目中使用的 MCU 型号是 STM32G0B1, 他们反馈在代码中尝试擦除并编程 FLASH时, 发现 FLASH 的状态寄存器显示编程错误(如图 1 所示). 问题是当前代码还没有开始擦除和编程, 怎么就有了编程错误标志了呢 ? 如果不将此错误标志清除, 后续的编程操作无法继续.客户对于每次想要操作 FLASH 之前这个清除动作既感觉多余也感觉别扭, 且还不得不做, 且做了也不知对整个产品的稳定性会有什么样的影响 ?

1.jpg

图1.Flash 编程错误标志

访问客户时, 客户也曾私下里反馈, 经常在网络论坛上获取类似这种问题, 客户怀疑是不是STM32 本身就存在某些未曾公开的问题 ? 其实, STM32 的所有问题都已公开在勘误手册中, 如果客户的问题在勘误手册中没找到, 那么极有可能是自己代码哪里出了问题。 

问题分析及测试 

查看客户的工程, 由于客户的工程相当庞大, 各个模块和任务相互交叉, 一时半刻是很难从如此庞大的工程中找出问题, 更麻烦地是, 客户的电脑是有加密系统的, 导致在工程内查找任何字符和函数都相当痛苦. 好在是, 问题能够稳定地复现。 

于是尽量精简客户的代码, 将所有不相关的任务,模块统统移除掉, 并且保持问题能够重现. 并使其能够在 ST 官方的 NUCLEO 板上重现. 这样一来, 就完全可以脱离客户原来的硬件环境进行测试. 由于客户的环境非常不利于查找问题, 效率事倍功半. 于是, 将客户的最小化工程提取出来(与软件泄密无关), 并拿到办公室进行测试. 很快就找到了问题所在。 

原来客户的工程中有用到两个串口, 串口 2 和串口 3, 都是使用的 DMA 模式。客户不同的软件人员负责不同的模块, 最终在整合代码时, 串口 2 并没有使用, 所以串口 2 对应的初始化代码是删除掉的, 但由于串口 2 和串口 3 的 DMA 中断是共用一条中断线, 是相同的中断入口, 在中断处理时,串口 2 的 DMA 处理函数和串口 3 的处理函数都会一起处理. 问题就出在串口 2 的 DMA 中断处理并没有移除 。如 stm32g0xx_it.c 文件 :

2.jpg

如上图,DMA 的通道 4~7 以及 DAM2 的通道 1~5 都是共用一个中断入口的。在这个中断处理函数内, 串口 2 并没有使用到, 但其对应处理代码由于疏忽仍然保留了下来。句柄hdma_usart2_rx, 和 hdma_usart2_tx 内的数据成员很多都是不定内容或为 0. 当代码运行到函数内部, 如下图所示出问题的代码行:

3.jpg

如上面代码所示, 代码运行到上图 866 行代码 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU));时, 实际上是给错误地址 0x0800 4109 赋值了, 此地址是内部 FLASH 地址, 这样相当于直接写 FLASH, 肯定会出错, 这也是为什么FLASH->SR.PGSERR 置位的原因. 我们都知道, 写内部 FLASH, 必须先擦除, 才可以写入, 而且写也是调用对应的 HAL API 函数, 且还需要先写 key 解锁 FLASH 等操作, 有一套写操作流程. 并不是直接用赋值语句, 这样操作出现问题一点也不奇怪。

当在中断中将串口 2 的 DMA 对应处理函数移除掉后功能就恢复正常, 这也佐证了结论的准确性。 

另外, 客户反映, 这个最小化工程, 相同的代码, 使用 IAR 时测试会出错, 但使用 KEIL 时并没有出错. 这个很奇怪. 这就引出的另外一个问题. 相同代码, 不同编译器运行结果不一致的问题。于是继续找原因, 对比 IAR 和 KEIL 的调试情况, 发现当代码运行到图 2 中 857 行代码 if 语句时其判断结果不相同. IAR 调试环境会进入到 if 语句内容, 从而导致错误的给内部 FLASH 地址赋值, 进行导致问题. 而 KEIL 调试环境并没有进入到 if 语句内部, 因此并没有触发问题. 那么为什么if 语句的判断结果不一样呢?

为了方便并避免不同编译器对长语句的执行顺序的差异, 将这个 if 长语句拆开:

4.jpg

如上红色代码, 用它替换原来的 if 判断语句. 结果发现 tmp1 在 IAR 和 KEIL 两个编译器环境中的值是一样的, 但是 tmp2 的值却不一样, 正是由于 tmp2 值的不一样, 导致 if 语句的最终判断结果不同。进一步发现, tmp2 的值主要是由于 flag_it 的值在两种编译器环境不一样所致。

5.jpg

如上 IAR 编译器环境, flag_it 的值为 0x2000 10f8。

6.jpg

如上 KEIL 编译器环境, flag_it 的值却是 0x2000 14F0。 

那么 flag_it 的值又是如何来的呢? 从如下代码:

7.jpg

如上所示, flag_it 的值来自 hdma->DmaBaseAddress->ISR, 原来是 DMA 相关 ISR 寄存器的值, 但实际调试如下:

8.jpg

如上 IAR 调试环境下, 出错时, hdma->DmaBaseAddress 实际指向的是地址 0, 其成员 ISR为其第一个成员, 实际也就是地址 0 上的数据. 我们都知道, 在默认情况下, MCU 的地址 0 默认是映射到内部 FLASH 的首地址 0x0800 0000 上的, 而此地址一般保存的是栈顶.。也就是说, IAR 编译环境下, 地址 0 指向栈顶地址 0x2000 10f8。 

对应地, 在 KEIL 调试环境下:

9.jpg

如上 KEIL 调试环境, hdma->DmaBaseAddress 同样地实际指向的是地址 0, 而地址 0 的上对应的数据为栈顶地址: 0x2000 14F0。 


也就是说, 在不同的 编译器 IAR 和 KEIL 环境下, 地址 0 指向栈顶地址是未必相同的, 进而导致两种编译环境下运行相同的代码结果不一样。 

我们知道, 通常栈地址是由编译器来指定的, 在默认情况下, IAR 和 KEIL 都会将栈放在内存的所有静态变量之后来分配. 其具体的分配地址这两个编译器都会默认按自动填充地方式来. 实际分配的地址具有不确定性, 当然, 我们也可以通过链接配置文件(IAR 的.icf 文件, KEIL 的.sct 文件)来将栈地址指定某一固定地址, 但我们通常不会这么做, 且完全没有必要.

02、小结

至此,将问题稍作小结。给变量 flag_it 实际赋值栈顶地址, 不同的编译器环境下, 此栈顶地址的不一致导致变量 flag_it 的值不一致, 进而导致 if 语句的判断结果不同, 最终导致 IAR 和 KEIL 这两个编译器环境下运行相同代码而结果不一样的情形。

03、后记

有时会听到某某客户反馈说, 在网络上看到 STM32 某款 MCU 存在某某问题, 然后问是不是 ST 故意隐瞒 ? 

不存在故意隐瞒的说法,芯片终究是要经过终端验证的。 

正常来讲, 任何芯片存在应用局限是正常的。对于 ST,一方面会正式地将所有已知 bug或应用局限放入到勘误手册中公示, 大家需要注意使用最新版勘误手册;另一方面,对于 ST 量产芯片,因本身缺陷导致的问题的概率非常低。事实上,绝大多数问题都来自我们自身的应用,遇到问题若简单的基于芯片品质来回猜疑非常不利于开发者静下心来查找问题原因。其实,面对问题时,我们很多人欠缺的并不是多么高深的水平,而是一颗冷静、自信并富有条理的心。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 52

近日,极海APM32F035电机控制专用MCU以其卓越性能连续斩获“2023年度电机控制器十大主控芯片”、“2023创芯突破奖”两项行业大奖。作为国内领先的芯片设计企业,极海依托多年技术沉淀,不断用创新思路推出满足现代电机需求的产品,并为行业应用带来多元化的量产级解决方案。

2023年度电机控制器十大主控芯片

11月16日,由电子发烧友网组织举办的2023电机控制先进技术研讨会在深圳益田威斯汀酒店顺利举办。同期举办的2023年第四届BLDC电机控制技术市场表现奖颁奖典礼上,极海APM32F035电机控制专用MCU凭借核心技术实力,赢得主办方与广大同行的认可,成功登榜“2023年度电机控制器十大主控芯片”。

1700131620257169.jpg1700131638391554.jpg

在研讨会现场,极海围绕APM32F035电机控制专用MCU,展示了通用步进驱动器、燃气强排风机、管道换气扇、强磁搅拌器、手持电钻等量产级解决方案,旨在缩短工程师设计流程,加速产品上市进程。

3.jpg

4.jpg

5.jpg

2023创芯突破奖

近日,大比特“创新驱动,擎引未来”2023年BLDC电机控制器优秀企业评选活动于深圳揭晓。极海APM32F035电机控制专用MCU,凭借出色的产品性能及量产级应用方案的突出表现,荣获“2023创芯突破奖”。该项荣誉是对极海在电机驱动领域产品技术创新的支持与肯定。

1700131717802363.jpg

1700131771789796.png

深耕市场 打造智能化、节能化、高效化电机应用场景

针对电机市场日益丰富的智能化功能需求,极海推出的APM32F035系列电机控制专用MCU,配备满足电机应用的内存与丰富外设,并通过在ADC采样频率、电机专用PWM性能、硬件加速协处理器等方面积极响应行业需求,为电机控制应用带来更高性能、更快响应速度、更精确的控制精度及更低的功耗,并保持平稳性。

APM32F035关键特性及生态优势:

• Arm® Cortex®-M0+低功耗内核,工作主频高达72MHz

• Flash 64KB,SRAM 10KB,BootLoader 独立4KB

• 支持单周期32位硬件乘法器,内置M0CP协处理器

• 12-bit ADCx1,COMPx2,OP-Ampx4,温度传感器x1

• I2Cx1,U(S)ARTx2,SPIx1,CANx1,DMA

• 领先的系统级生态服务能力:可提供硬件开发工具、电机通用开发平台、多种算法选择、以及快速响应的技术服务等支持

以领先的系统级生态服务 助力客户产品快速交付量产

为满足各类电机应用差异化开发需求,实现快速交付量产,极海电机控制生态平台从应用层、中间层、器件层、硬件层、电机团队出发,提供灵活易用、丰富多样的软硬件开发工具,实现全面生态支持,包括高低压通用电机平台、步进电机通用评估板、底层寄存器SDK、客户支持电机专用运算、多种算法选择与控制方式接入,以及全面的安全保护机制。

8.png

极海电机控制算法平台

面向未来,极海将持续丰富电机产品组合,以满足行业客户普遍的降本增效与上市加速需求,即将推出GHD3440三相电机专用栅极驱动器,以及内置栅极驱动的APMSPIN32F020高集成32位FOC矢量控制MCU,目标应用包括园林工具、电动两轮车、吸尘器、电动工具等。

来源:Geehy极海半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 27

HOLTEK新推出BH66F2665 Flash MCU,整合体脂量测、IQ解调与24-bit Delta Sigma A/D电路,增加MCU内部资源,并支持电极断线侦测功能,特别适用于各种四/八电极LED体脂量测相关产品,具有性能成熟稳定、整合度高、功能齐全的特点。

1.jpg

BH66F2665拥有6个通道的24-bit ADC以及内置四/八电极体脂量测电路,OPA、Analog Switch及Sine Wave Generator可大量减少外部元件,缩小产品体积,降低成本;可直推LED做显示并由软件调整亮度;支持多种传输接口包含I²C、SPI与UART。

系统资源包含16K×16 Flash ROM、1024×8 RAM、IAP,内建1024×8 EEPROM,容易实现产品调校/标定的功能,简化开发及生产。BH66F2665提供24/32-pin QFN与48-pin LQFP封装形式,方便客户开发不同档次的产品。

来源:HOLTEK

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 26

Silicon Labs(亦称“芯科科技”)宣布推出新的BB5 8位微控制器(MCU)系列产品,该系列MCU针对价格和性能进行了优化,进一步扩展了芯科科技强大的MCU开发平台。阅览产品发布新闻:https://news.silabs.com/8-MCU-,-MCU 

1.jpg

这些新的8位MCU与PG2x 32位MCU产品系列共享同一个开发平台,即芯科科技的Simplicity Studio平台,该平台包含编译器、集成开发环境和配置工具等所有必需的工具。

“在当今世界,随着物联网(IoT)设备的不断扩展,MCU在嵌入式计算中发挥着至关重要的作用。”芯科科技无线产品营销高级总监Dhiraj Sogani表示。“新的BB5系列MCU扩展了我们的产品组合,使我们可以为当今市场提供最全面的MCU产品选择。”

成本优化的BB5 8位MCU可降低嵌入式设备的复杂性

随着嵌入式计算应用的不断扩展,开发人员需要能够为各种任务选择合适的硬件。虽然32位MCU是机器学习推理或词汇识别等更复杂的计算密集型任务的理想选择,但有许多更简单的任务并不需要32位MCU带来的额外功耗和成本。然而,对开发人员来说具有挑战性的是,大多数8位和32位MCU使用的开发工具不同,这使得开发人员很难同时开发这两种MCU。因此开发人员尽管不需要更强的计算能力,但通常会承担额外的开发成本。

这就是为什么芯科科技将其8位和32位MCU产品设计为均可以使用Simplicity Studio平台来开发。芯科科技的无线片上系统(SoC)也共享这一开发平台,该平台可极大地简化和加快设备制造商将各种设备推向市场的过程。这使得开发人员无需学习两套工具,并支持他们通过选择最适合应用需求的部件来实现设备的成本优化。

Simplicity Studio也是芯科科技无线SoC产品组合的开发平台,它支持开发人员开发一次,然后部署到多个产品变体中,而不必考虑是否有些产品连网,有些产品不连网。例如,电动牙刷等许多消费产品现在都有连网和非连网版本。连网版本是那些希望追踪自己刷牙习惯的消费者的理想选择,而非连网版本则适合那些只是想刷牙的消费者。对于开发人员来说,这意味着他们可以针对连网和非连网产品开发一次,然后部署两次或者多次。

芯科科技的BB5x系列其中包括市场上性能最佳的8位MCU

新的BB5x系列其中包括市场上功能最强大的8位MCU,因为BB5系列50 MHz的核心频率可以提供比其他任何通用8位MCU高出36%的计算能力。BB5系列是电动工具,手持式厨房工具(如浸入式搅拌机),甚至儿童玩具等电池供电型应用的理想之选,其支持从1.8V到5.5V的多种电压选择,使设备利用纽扣电池即可持续使用多年。BB5系列有多种封装尺寸,BB50 MCU为2mm x 2mm,而BB51和BB52 MCU则为3mm x 3mm,同时提供额外的通用输入输出端口(GPIO)和增强的模拟功能。在某些应用中,8位BB52 MCU甚至可以提供比32位MCU竞品更高的性价比。

了解芯科科技MCU产品和平台的更多信息

新的BB5系列MCU现已通过芯科科技及其分销商合作伙伴实现全面供货。如果您有兴趣与芯科科技合作开发新的MCU项目,请访问:

更新的芯科科技MCU产品页面:
https://www.silabs.com/mcu 

新的BB5 8位MCU系列产品页面:
https://www.silabs.com/mcu/8-bit-microcontrollers/efm8-bb5 

阅读我们的博客,了解芯科科技的8位和32位MCU如何协同工作
https://www.silabs.com/blog/bb50-is-new-to-efm8-8-bit-mcu-portfolio 

了解有关8位MCU普及应用的更多信息
https://www.silabs.com/mcu/8-bit-microcontrollers/why-8-bit-mcus-are-here-to-stay 

来源:SiliconLabs

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 17

概述

VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称IntelliSense)、代码重构、查看定义功能,并且内置命令行工具和Git版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的插件安装功能扩展软件功能。在2019年的Stack Overflow组织的开发者调查中,Visual Studio Code被认为是最受开发者欢迎的开发环境。

VSCode因为其轻量化、丰富的插件以及炫酷的界面等优点,当前成为了开发者热捧的开发工具。AT32提供在VSCode下开发、编译、下载、调试解决方法。只需安装所需要的软件工具并简单配置即可使用。本指南所使用的所有软件,目前都是开源的。

软件安装

Windows下环境配置

一、VSCode安装

VSCode是微软开发的代码编辑器软件,可免费下载和使用,登录VSCode官网即可下载安装文件,注意在windows环境下需要下载对应的版本。

1.png

图1. VSCode官方下载

下载安装后打开VSCode界面如下图所示

2.png

图2. VSCode界面

注意安装完成后需要将VSCode安装路径加入到环境变量中,后续使用会更加方便。上图中的红色框内为安装的插件,C/C++和Cortex-debug必须安装,其他可选择性安装即可。

二、交叉编译工具链与MinGW安装

本小节说明如何安装arm交叉编译工具链和MinGW,以及openocd的使用。

交叉编译工具链安装

为了能使在windows平台下编译的代码在AT32 MCU上运行,需要安装ARM提供的交叉编译工具链。在本文档配套的代码包内可找到此软件(gcc-arm-none-eabi-10.3-2021.10-win32.exe),然后双击运行安装即可。

注意安装完成后需要添加系统环境变量。

MinGW安装

MinGW是Minimalist GNU for windows的缩写。它是可以自由使用自由发布的windows特定头文件和使用GNU工具集导入库的集合,可在windows平台生成本地的windows程序。其包括GCC编译器,所以本应用所使用的编译器为GCC。

在本文档配套的代码包内可找到此软件(mingw-get-setup.exe),双击运行即可安装。需要注意安装完成后需要添加系统环境变量。

3.png

图3. MinGW设置

到MinGW安装目录下,进入/bin目录,找到其中的mingw32-make.exe并复制一份放到相同目录下,修改命名为make.exe。

三、OpenOCD使用

Openocd可执行文件由雅特力提供,在本文档配套的代码包内可找到。使用时只需将其添加到系统环境变量即可,无需其他安装与配置。

四、环境变量配置

在系统中搜索“环境变量”,进入环境变量配置界面,确保前面所安装的软件都已添加到环境变量中;例如如下所示:

4.png

图4. 环境变量设置

上图为笔者系统下软件安装路径和环境变量配置,可作为参考。

需要特别注意,如若环境变量安装路径不对,会导致VSCode编译下载代码等出错。

Linux下环境配置

下面介绍在linux下软件安装与环境配置(ubuntu系统为例)。

一、VSCode安装

下面介绍在ubuntu系统下VSCode的安装方式,只需在命令行输入如下命令即可一键安装VSCode:
5.png

输入以上命令后耐心等待一会,安装完成会出现提示信息。

安装成功之后,在命令行下只需输入code命令即可启动VSCode,如下图所示:

6.png

图5. Linux下VSCode安装与启动

二、交叉编译工具链与OpenOCD安装

第一步:在arm官方网站下载好交叉编译工具链,也可使用本APPNOTE所提供的工具链,将其放在linux某个目录下;

第二步:使用artery提供的OpenOCD软件,将其放在linux某个目录下;

第三步:将交叉编译工具链和OpenOCD添加环境变量,例如将其放在/home/artery目录下,打开~/.bashrc文件,在末尾添加如下两行:

7.png

图6. Linux下环境变量添加

注:交叉编译工具链和OpenOCD在附带的software_tool文件夹下有提供,可直接使用。

Template使用

硬件环境

对应AT-START-BOARD搭配AT-Link

工程导入

模板工程分为windows和linux两个版本,在windows环境下使用:

SourceCode\at32_vscode\template_for_windows目录下工程,在linux环境下使用:

SourceCode\at32_vscode\tamplate_for_linux目录下工程。

代码包内模板工程如下:

8.png

图7. 模板工程

如若环境安装正确,下面只需要将本文档配套的代码包内的模板工程文件夹使用VSCode打开即可。打开后工程目录如下所示:

9.png

图8. 工程目录结构

Libraries:主要存放artery芯片库文件;

Project:工程相关配置文件以及用户代码;

Makefile:编译器需要使用;

.vscode:工程配置脚本。

配置修改

由于环境不同,软件安装的路径存在差异,所以需要进行环境适配。只需修改.vscode目录下的3个配置脚本即可。

1. c_cpp_properties.json脚本修改

10.png

图9. c_cpp_properties.json脚本

上图中框起来的路径需要根据实际路径进行修改。

2. launch.json脚本修改

11.png

图10. launch.json脚本

上图中框起来的路径需要根据实际路径进行修改。

3. tasks.json脚本修改

12.png

图11. tasks.json脚本

上图中框起来的路径需要根据实际路径进行修改。

工程使用

通过以上配置,现在可以使用VSCode开发、编译、下载、调试AT32 MCU了。

点击VSCode菜单栏TerminalàRun Task会出现如下界面:

13.png

图12. 编译、下载和清除

界面有clean、download code和build,点击这三个按钮分别执行如下操作:

Build:编译代码;

Clean:删除编译产生的文件;

download code:下载代码到目标板。

编译下载代码后,点击VSCode菜单栏RunàStart Debugging即可进入调试状态:

14.png

图13. 调试界面

进入调试界面后可进行单步执行等操作,也可查看外设寄存器值、变量值等操作。

IC型号修改

Template工程为各系列中单一型号,如果使用到其他型号需要按照如下步骤修改即可。

Makefile 文件修改

Makefile文件如下红框内容需根据实际型号进行修改

15.png

图14. Makefile修改

.ld文件可在artery BSP内获取,路径如下:

AT32F435_437_Firmware_Library_V2.x.x\libraries\cmsis\cm4\device_support\startup\gcc\linker

理论上修改完makefile文件就可以顺利编译下载调试代码了,但在VSCode上阅读代码时会出现波浪线等警告提示,这是因为VSCode解释代码关系出错,还需要修改一下c_cpp_properties.json脚本

c_cpp_properties.json脚本修改

文件如下红框内容需根据实际型号进行修改:

16.png

图15. c_cpp_propertie修改

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 138

页面

订阅 RSS - MCU