MCU

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

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

分体式水控概述

1.png

分体式水控是一种常见的水控系统,它的工作原理是通过水的流动来控制水的供应和排放,该系统一般由两部分组成:控制器和水阀。控制器负责监测水的流量和压力,根据设定的参数来控制水阀的开和关,从而实现水流的控制。

基于上海航芯ACM32F403的物联网分体水控是一款以M1卡或CPU卡作为电子钱包,以实时扣费的方式实时扣取卡中金额,通过对出水管道电磁阀(或电动阀)的开关控制,实现插卡出水、拔卡断水、精确计费。

分体式水控 功能特点

• 支持各种类型的非接触式射频卡M1、CPU卡

• 无需通信布线,全网通方式与运营商基站通信

• 支持在线自动升级终端程序

• 支持脱机工作和联机工作,脱机自动变联机,下载参数和上传记录

• 防水等级IPx6

分体式水控方案介绍

分体式水控方案采用上海航芯ACM32F403作为主控芯片,支持Cortex-M33和Cortex-M4F指令集。芯片内核支持一整套DSP指令用于数字信号处理,支持单精度FPU处理浮点数据,同时还支持MPU用于提升应用的安全性。主频高达180MHz,内置最大512K eFlash和192K SRAM,同时具有多路UART/IIC/SPI等丰富的通讯外设,能够满足系统在多场合下的应用要求,分体式水控方案框图如下所示:

2.png

ACM32F403主控芯片带有速率高达50Mbps的QSPI接口,能快速与NFC芯片通讯,获取卡片信息,读卡时间小于0.3秒,并通过ESAM模块完成与卡片的双向认证,实现充值,扣费、记录、数据加密等功能。如外接的CAT1模块与云端保持在线状态,则将系统的刷卡信息实时的同步到云端,也可通过UART和蓝牙模组和手机APP通讯,进行固件升级、参数下载、记录上传等功能。外接1.3寸OLED 128*64点阵屏,支持中文显示,主控芯片通过IIC接口与屏驱IC通讯,实时显示刷卡信息、卡片余额、阀门状态、在线状态等信息。


来源:上海航芯

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

围观 17

根据国家能源局2020年能源领域行业标准制修订计划,中国电力科学研究院有限公司牵头起草了《12kV一二次融合成套柱上开关》、《12kV一二次融合成套环网箱》两项电力行业标准。2021年6月中国电科院配电技术中心组织30余家配电开关及配电终端主流生产企业开启了两项标准的执行。

在过去的二年,新规不断应用在设备端口。标准规定DTU采用双核设计,区分实时核和管理核。实时核需要MCU保证完成保护和高速采样,管理核需要高性能处理器实现状态检测数据接收和分析及通信。硬件接口规定3路以太网、多路串口、4G通信、国密加密芯片、北斗定位对时等。

基于市场以及庞大的电力客户群体的需求,北京远大创新科技有限公司与上海先楫半导体科技有限公司通力配合,用国产高性能RISC-V内核MCU设计了一款DTU/FTU最小系统核心板。客户可以根据国网标准固定外部设计,还能扩展自定义功能。

电网自动化系统一般由以下部分组成:配电主站、配电子站(常设在变电站内,可选配)、配电远方终端(FTU、DTU等)和通信网络。配电主站位于城市调度中心,配电子站部署于110kV/35kV变电站,子站负责与所辖区域DTU/FTU等电力终端设备通信,主站负责与各个子站之间通信。

如下是最小系统板框图:

1.jpg

考虑到系统的秒级响应要求、电网对自主可控的要求等因素,设计团队选用先楫半导体(HPMICRO)的高性能MCU HPM6750IVM。该MCU为BGA289封装,多达195个GPIO;2M的SRAM,灵活可选容量的外挂FLASH;内部DSP单元,支持SIMD和DSP指令;RISC-V双内核完全自主可控,主频816M,创下了高达9220CoreMark和高达4651DMIPS的MCU性能记录。芯片工作温度在-40℃~105℃,满足电力行业苛刻工作环境。

  • 双千兆以太网:根据标准要求,扩展了一路SPI转以太网接口

  • 双USB接口:支持扩展网口与外挂4G

  • 17路串口:满足串口通信需求

  • 4路高速SPI:支持外挂加密芯片、ADC芯片、SPI转以太网芯片

  • 4路IIC:支持外挂实时时钟、温湿度传感器等

  • 1个16bit ADC和3个12bit ADC:支持模拟量的采集

核心板配套的FTU/DTU示例程序包含rt-thread操作系统、Lwip网络协议栈、flash文件系统、本地数据库、相应外设驱动示例,能极大的帮助客户简化开发。

同时该方案还有硬件完全兼容的HPM6450IVM单核版本,可以灵活适应各种电力的高低端应用场景。支持FreeRTOS、RT-Thread,并适配了轻量级的鸿蒙系统。

国际形势风云莫测、贸易战愈演愈烈,电网安全和稳定至关重要,广大电力设备制造商对国产自主可控替代需求越来越强烈。先楫半导体高性能MCU HPM6000 系列产品,支持单核双核RISC-V架构,凭借其高算力、高可靠性、低功耗、高集成性等优势特点,可满足电网配变电终端新标准要求,可用于高压配电FTU/TTU/DTU三合一统一平台应用,进一步拓展电力能源领域市场。

目前,HPM6000系列高性能通用MCU的多款型号已应用于储能BMS、PCS、智能断路器、继电保护装置、数据采集终端、电力网关及充电桩等多个电力能源产品,并获得行业客户广泛认可。先楫半导体将再接再厉,携手合作伙伴继续开发更多的优质方案,并推出更多高性能MCU产品,为电力行业的国产化贡献自己的力量。

2.png

来源:先楫半导体HPMicro

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

围观 45

目前家电行业对MCU的需求处于稳定增长态势,据调研机构Statista的数据,预计全球智能家电的市场规模将从2022年的442.5亿美元成长到2026年的765.6亿美元,四年CAGR达15%。同期,全球家电的市场规模将从5871亿美元成长到7413亿美元,四年CAGR达6%,智能家电的复合增速远高于行业增速。 

随着人们生活水平的提升,对家电的需求不同以往,各类家电产品逐渐向智能化和变频化发展,智能化和变频化推动了家电MCU持续升级换代,对MCU的架构、性能和单机数量提出了更高的要求。原来小家电产品以8和16位为主的处理器,逐渐被以ARM Cortex-M0为代表的32位处理器替代。

由于家电产品对主控MCU高可靠、高安全以及高服务能力的要求,整体来讲,中美贸易战之后,芯片国产化进程明显加快,但实际上从市场份额来看,家电MCU国产化空间明显不足,主要被国外的一线品牌所垄断。

国产替代,“锐”不可挡

基于目前家电市场和家电MCU的发展趋势,继今年1月份,航顺芯片全新主流级HK32C030家族推出之后,又隆重推出另一重磅级HK32R78家族产品,HK32R78家族产品可以硬件兼容国外另一著名某品牌MCU,主要应用于家电产品市场。

1.png

HK32R78产品优势

  • 高性能:HK32R78家族采样ARM Cortex-M0内,最高主频支持64MHz,最大支持64KB Flash和10KB SRAM。带12位高精度ADC和电机控制高级定时器,可以满足家电MCU智能化和变频化需求。

  • 低功耗:HK32R78家族支持Sleep、Stop和Lowpower Stop三种低功耗模式,其中Lowpower Stop模式下功耗最低达2.8uA,可以满足家电产品低能耗、绿色化需求。

  • 高兼容性:HK32R78家族采用灵活的管脚复用功能映射技术,硬件可以P2P兼容国外某品牌系列产品,使国产替代更加方便快捷。

  • 高可靠性:HK32R78家族完全按照工业级要求设计,工作温度可以支持-40℃~ +105℃,ESD等级HBM模式高达6500V、CDM模式高达2000V,Latchup等级高达800mA。

  • 高性价比:采用12寸创新Flash工艺,优化内部电路设计,极大的降低成本和提高可靠性,整体性价比极具优势。

2.png

HK32R78家族功能框图

HK32R78功能特性

  • CPU内核:ARM® Cortex®-M0最高时钟频率64 MHz

  • 存储器: 

  • 64 Kbyte Flash(包括61Kbyte主Flash区,以及可配置为主Flash区的3Kbyte Bootloader区)。

  • 10 Kbyte SRAM。

  • 时钟

  • 外部高速时钟(HSE):支持4~32 MHz

  • 外部低速时钟(LSE):32.768 kHz

  • 片内高速时钟(HSI):8 MHz/16 MHz/64 MHz

  • 片内低速时钟(LSI):40 kHz

  • PLL时钟:64MHz(最大值)

  • 数据通信接口

  • 3路UART:可以通过自带的波特率发生器产生不同的波特率,并且还支持单线半双工通信、多处理器通信等功能。

  • 2路高速SPI:支持4至16位可编程数据帧,带复用的I2S接口。

  • 2路I2C:支持超快速模式(1 Mbit/s)、SMBus和PMBus。在Stop模式下,支持数据接收唤醒。

  • 定时器及PWM发生器

  • 1个16位高级定时器(TIM1共4路PWM输出,其中3路带死区互补输出和刹车功能)。

  • 5个16位和1个32位通用定时器(TIM2/TIM3/TIM14/TIM15/TIM16/TIM17)。

  • 1个16位基本定时器(TIM6)。

  • DMA控制器(带5个通道)

  • 定点数除法/开方运算单元

  • 片内模拟电路

  • 1个12位SAR ADC(多达21路模拟信号输入通道)

  • 内部参考电压

  • 温度传感器

  • 日历RTC: 带闹钟功能

  • 典型工作电流

  • 运行(Run)模式:1.46mA@8MHz;7.31mA@64MHz

  • 睡眠(Sleep)模式:1.05mA@8MHz;671μA@32kHz

  • 停机(Stop)模式:2.8μA@3.3V (LDO低功耗)

  • 工作电压范围:2.6 V~5.5 V

  • 工作温度范围:-40℃~+105℃

  • 可靠性:通过HBM6500V/CDM2000V/LU800mA测试

  • 封装:LQFP44、LQFP32、QFN32、TSSOP20

HK32R78家电产品典型应用

3.png

来源:航顺芯片

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

围观 28

2023年5月23日,Andes晶心科技在上海博雅酒店举办年度RISC-V CON研讨会,先楫半导体 HPMicro 作为其重要的生态系统合作伙伴参与了本次研讨会并在现场进行了主题为《高性能RISC-V MCU中国市场发展趋势》的演讲分享。

本次研讨会以“RISC-V 重塑世界・翻转AI、车用电子、Android芯布局”为主题,聚焦RISC-V前瞻趋势、市场发展及新兴领域应用,深入剖析RISC-V技术突破,帮助大家全面拓展商机并在市场上抢占一席之地。

1.jpg

会议开场,Andes 晶心科技董事长林志明先生介绍了《见证RISC-V成为产业主流》的行业发展历程。RISC-V架构不仅助力产品在性能上表现优异,同时,作为开源指令集也赋予开发者更多的自由和选择权。先楫半导体(HPMicro)作为国际RISC-V基金会的企业成员之一,其HPM6000系列高性能MCU都是基于RISC-V架构上做的研发,支持单核双核RISC-V架构,最高主频可达816 MHz,Coremark跑分遥遥领先于其他MCU产品。

2.jpg

(会场展出的用先楫高性能MCU芯片演示的方案)

“随着AI人工智能和物联网的急速发展, 市场各个应用对MCU的算力要求越来越高。除了具备高算力,还需要精准的控制能力、卓越的通讯能力和出色的多媒体能力——必须同时具备以上4个特质,才能称之为高性能MCU。而先楫MCU HPM系列正是满足了这些条件,领跑国内同品类的其他产品。”先楫半导体CEO曾劲涛先生,在大会上表示。

“先楫半导体高性能MCU有创纪录的CoreMark 跑分,集成强大的DSP和AI FPU,具备16位ADC、高精度PWM 和 PLA可编程逻辑能力。HPM6000系列产品线布局考虑到各个阶段的行业用户需求, 目前广泛应用于汽车、工业和物联网等领域。”

3.jpg

曾劲涛先生对企业做了简单的介绍并描述了两个具体的行业应用案例,最后,跟大家分享企业的未来发展方向和核心理念。让大家通过了解先楫半导体,更熟知高性能MCU产品特性,更清晰了解 RISC-V MCU在中国市场的发展趋势。

4.jpg

作为第五代精简指令集,RISC-V技术及其生态系统发展呈星火燎原之势,备受业界关注。先楫半导体作为国内领先的高性能通用MCU厂商,在国产自主化和高性能方面将全面拥抱RISC-V,顺应市场趋势推出更高算力、更丰富应用的MCU产品系列,推动产业发展,共创生态繁荣。

5.jpg

关于晶心科技Andes

Andes Technology 晶心科技股份有限公司于2005年成立于新竹科学园区,2017年于台湾证交所上市(TWSE: 6533; SIN: US03420C2089; ISIN: US03420C1099)。Andes是RISC-V国际协会的创始首席会员,也是第一家采用RISC-V作为其第五代架构AndeStar™基础的主流CPU供货商。为满足当今电子设备的严格要求,Andes提供可配置性高的32/64位高效CPU核,包含DSP、FPU、Vector、超纯量(Superscalar)及多核系列,可应用于各式SoC与应用场景。Andes并提供功能齐全的整合开发环境和全面的软/硬件解决方案,可帮助客户在短时间内创新其SoC设计。在2021年,Andes-Embedded™ SoC的年出货量突破30亿颗;而截至2021年底,嵌入AndesCore® 的SoC累计总出货量已超越100亿颗。

关于先楫半导体HPMicro

“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,总部位于上海,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市张江高科技园区,并在天津、深圳和苏州均设立分公司。核心团队来自世界知名半导体公司管理团队,具有15年以上,超过20个SoC的丰富的研发及管理经验。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产的高性能通用MCU产品系列HPM6700/6400、HPM6300及HPM6200,性能领先国际同类产品,并完成AEC-Q100认证和ISO 26262功能安全管理体系ASIL D认证,全力服务中国乃至全球的工业、汽车和能源市场。

获取更多信息,欢迎登录先楫半导体官网 http://www.hpmicro.com

来源:先楫半导体HPMicro

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

围观 56

就8051 MCU(单片机)而言,烧录器的种类繁多,兹此我们为您介绍烧录工具的”在线升级”。过去有普通烧写器,这个工具大多用并口烧录,使用引脚较多。以笙泉科技的8051 MCU为例:MPC82系列、MPC89系列几乎为20或20多个引脚。这些带来诸多不便,假如程序有BUG,软件需要升级等,就会很麻烦,得要先把IC从系统上卸下来,然后烧录新的程序,最后再焊回去,……於是痛苦就这么产生了。

基于解决上述的痛点,方便的ISP和ICP方式应运而生。

方式1: ISP(在系统编程)

所谓的ISP即在系统编程: In-System Programming, 缩写为ISP), 参见下图之范例:

1.png

这样,使用者可以在系统上预留3个点:VCC、DTA(P3.1)、GND,通过笙泉专利默认的应用程序软件重新配置在线升级,由于烧录接口减少,第一段所述之痛苦也可逐步减轻。

2.png

8051 ISP烧录器(TH079)特色:

  • USB即插即用

  • 支持联机及脱机二种烧录模式

  • 支持滚动码烧录,此滚动码可当序列号或唯一ID号使用

  • 可设置最大烧录次数限制

  • 自动软件在线更新

  • 3线传输模式,接口简单好连接

3.png

虽然以ISP方式,其使用的接口少(VCC, P3.1, GND) ,但它必须在IC内先植入ISP CODE,也就是说必须用掉部分程序空间,且只能修改部分硬件选项。

方式2: 专业再升级-ICP(在电路编程)

1)  ICP (在电路编程)为一种电路,具有5线烧录模式,完全可代替前述的ISP方式之在线烧录工具,这个在笙泉科技的对应规格书上都有强烈建议,常搭配采用的仿真、烧录工具包括有OCD_ICE和M-Link。

4.png

2) ICP (在电路编程)特色:

  • 无须在目标芯片上预编程一个引导程序

  • 专用串行接口: 不占用 IO口

  • 目标芯片无须在运行状态: 仅需电源

  • 便携、独立的工作,而无须主机的干预

采ICP方式的普通烧写器,其关键是只要用到5个接口,一般来讲4个就足够 ( OCD_SCL, VDD, OCD_SDA, GND )。亦即该烧写器通过ICP方式(电路)来实现在线升级/下载更新程序的功能。

最后归纳: 在您设计的系统中,一定要预留ICP的接口(4个点 OCD_SCL, VDD, OCD_SDA, GND ),为您的产品保驾护航,从此前述之”痛苦”将消失,轻松实现在线升级更新。

来源:megawin笙泉科技

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

围观 83

随着工业自动化,智能家居及汽车电子的发展普及,直流无刷电机(BLDC)和永磁同步电机(PMSM)在诸多领域有了广泛应用。电机作为机械装备上至关重要的组件之一,无论是产品的性能,或是消费者的使用感受,都关乎于电机驱动和控制技术的好坏。

雅特力致力于建立高效电机控制生态系统,不仅有适用于电机控制的MCU,硬件开发套件,还提供有免费且易于使用的电机控制软件算法。从方波驱动到弦波驱动,从霍尔感测器的回授到无感测器的回授,雅特力都有建立起相关资源,协助电机控制工程师快速实现高效的电机矢量控制方案。

低压电机控制开发板

雅特力电机开发板是一个泛用型的低压三相电机驱动器,应用AT32系列微控制器搭配雅特力电机函数库,可驱动直流无刷电机、交流同步电机,以及异步电机。具备一个微控制器转接插座,可使用不同的AT32系列微控制器,执行电机控制算法。雅特力目前已提供基于双ADC引擎AT32F413的低压电机开发板和基于高速比较器AT32F421的低压电机开发板。

1.png

电机开发板设有霍尔信号接口与编码器接口,可回馈转子位置,进行有位置传感器的FOC控制驱动或六步方波驱动。提供剎车电阻接口,可应用于高动态响应控制时的动态剎车功能。具备三相输出端电压检测连接至ADC,以及虚拟中性点电路和比较器电路,可实现多种直流无刷电机(BLDC)六步方波无位置传感器驱动应用。并具备3个相电流检测电阻与1个直流地端母线电流检测电阻,可应用三电阻、两电阻电流检测,以及单电阻电流检测等三种电流检测方式。可执行有位置传感器与无位置传感器等磁场导向(field-oriented)向量控制法则(vector control algorithm)驱动三相交流电机,实现家用、商用以及工业等产品的电机控制应用技术。

2.png

开发板系统架构图在命令输入接口部分,除具有USB转UART界面、UART界面以及I2C接口外,并提供一个电位器模拟输入接口,可改变电位器电阻分压,输出电压命令由ADC读取。此外,有两个指拨开关以及一个按钮开关,可提供程序做控制模式设定,并提供5个LED指示灯,其中包含一个错误指示灯。

AT32电机函数库

雅特力针对电机开发提供了方便易用的AT32F413与AT32F421电机库,包含矢量控制电机库函数(mc_foc_library.lib)和6-step方波控制电机库函数(mc_bldc_library.lib),用户可根据电机控制方式选择电机库,两类电机库皆包含有传感器的控制函数以及无传感器的控制函数,注意在使用电机库时皆须调用初始设定相关函数以进行软件的初始设定。

电机库函数、使用者自定义函数与UI函数均建构于BSP之上,而用户自行撰写的控制程序则植基于电机库函数、用户自定义函数与UI函数之上。因此用户可以很方便地调用电机控制函数控制MCU硬件外设,实现电机控制程序。并可同时经由UI控制函数与外部个人计算机UI软件工具链接,传输实时的电机控制状态或实时改变控制参数与命令。

以下为一个电机控制工程中电机库应用函数与其它MCU基础函数(BSP)、UI通讯程序,以及用户撰写的控制函数与自定义函数之间的关系图。

3.png

电机库控制程序架构图

以下为电机库文档结构说明图。头文件提供设定MCU外设、控制形式、电机参数、控制板参数、控制器参数,相关的设定参数于mc_xxx_globals.c中的函数设定变数初值,MCU外设规划则由mc_hwoio.c文件执行相关外设初使化设定。

4.png

电机库文档结构说明图

雅特力在电机成本、可靠性等方面不断做出突破与改进,AT32F421、AT32F4212、AT32F413三款电机MCU搭配Cortex-M4内核和雅特力电机库算法,具有快速高效的算法能力和高性价比的价格优势,可满足电机控制在系统复杂性、实时性和智能化等方面日益严苛的要求。

来源:AT32 MCU 雅特力科技

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

围观 83

简介

时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。

以下介绍时钟配置的方法主要分两种:

1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配置。

2、采用时钟工具来配置并生成相应的源码文件。

时钟树

在进行时钟配置之前,应充分了解对应芯片的时钟树结构,这样在进行时钟配置时才会游刃有余。对于系统时钟频率及路径的配置我们需要关注时钟源、倍频及系统时钟部分。类似如下图:

1.png

图1. 时钟框图

可由图中得到以下几个关键信息:

1) SCLKSEL:系统时钟可以由HEXT、PLLCLK、HICK三大时钟源提供。

2) HEXT:HEXT是外部高速时钟,其可以外接范围是4~25 MHz的晶振或时钟源。

3) HICK:HICK RC是内部高速振荡器,频率为48 MHz。HICK时钟由内部振荡器给出,但在初始情况下由HICKDIV控制并默认6分频后为8 MHz,亦可配置为不分频,保持48 MHz的频率。

4) PLLCLK:PLL时钟=PLL输入时钟*PLL倍频系数。

5) PLL输入时钟:PLL的输入时钟由PLLRCS及PLLHEXTDIV共同决定,其细分可分为三个来源:HICK 4MHz、HEXT和HEXTDIV,HEXTDIV由HEXT时钟2分频。

代码配置解析

以下将以库函数接口为核心来对时钟配置流程和方法进行说明。

函数接口

各系列产品对应提供的BSP中对硬件的时钟设置部分已封装好接口函数以供调用,以下罗列出时钟配置常用的函数接口,各函数的具体参数及返回值类型等请参考at32f413_crm.c/.h文件。

2.png

时钟配置流程

按常规应用来讲解时钟配置流程,其内容可大致分为如下步骤:

3.png

图2. 时钟配置流程图

复位(CRM Reset)

首先按规范流程应复位CRM配置参数,其主要是将系统时钟切换到HICK,其余的系统时钟配置寄存器写入默认值,待后续进行新配置参数的写入。函数调用的代码实现如下:

4.png时钟源配置(Clock Source Configuration)

与系统时钟相关的高速时钟源主要包括HEXT和HICK,PLL也是使用以上时钟源来进行倍频。需要在配置使能PLL前将所使用的PLL参考时钟源开启并等待其稳定。

  • HEXT

外部高速时钟如采用外接有源时钟的方式时,可开启旁路模式来进行使用,采用晶振时,不能开启旁路模式,旁路模式应在外部高速时钟源使能前进行设定,其默认情况为关闭。旁路模式使能代码实现如下:

5.png

使能HEXT时钟源并等待HEXT时钟稳定,代码实现如下:

6.png

  • HICK

内部高速时钟是由芯片内部振荡器提供,使能HICK时钟源并等待HICK时钟稳定,代码实现如下:

7.png

PLL配置(PLL Configuration)

PLL配置主要包括:PLL时钟源、PLL倍频系数、PLL倍频频率范围等的设置。倍频时钟公式为:PLLCLK=PLL输入时钟*PLL倍频系数。

  • PLL时钟源

PLL时钟源细分有三个来源:1、HICK(4 MHz),2、HEXT,3、HEXT分频时钟,PLL时钟源应在PLL配置使能前开启并等待稳定。以上PLL时钟源在crm_pll_config函数中对应的参数定义如下:

8.png

当选择PLL时钟源为CRM_PLL_SOURCE_HEXT_DIV时,HEXT的分频系数默认为2分频。

  • PLL倍频系数

倍频系数为2~64倍可选,但应该注意最高主频限制,以此按实际情况来合适选择倍频系数,如8倍频使用参数CRM_PLL_MULT_8。

  • PLL频率范围

频率范围主要以倍频后的PLLCLK频率来做设定,其范围参数以72 MHz为界限设定,如下:

9.png

当PLL参数设置完成后,即可开启PLL并等待PLL稳定。示例:外部时钟晶振8 MHz,采用HEXT 2分频时钟作为PLL时钟源,PLLCLK倍频到192 MHz的代码实现如下:

10.png

总线分频(Set Bus Frequency Division)

总线分频包含SCLK到AHBCLK分频、AHBCLK到APB1CLK分频、AHBCLK到APB2CLK分频。AHB总线1分频、APB1/APB2总线2分频的代码实现如下:

11.png

切换系统时钟(Switch System Clock)

系统时钟来源主要有三个:HICK、HEXT、PLLCLK。在切换系统时钟到如上时钟源时应提前确保对应时钟源已稳定。

  • 顺滑模式

时钟顺滑模式是为了确保整个系统时钟切换过程的稳定而设计,当即将切换为系统时钟的目标时钟频率大于108 MHz时应开启时钟顺滑模式,所以其主要应用对象为PLLCLK用作系统时钟时的场景。

通常使用方法是在系统时钟切换前开始,切换成功后关闭。代码实现如下:

12.png

  • HICK系统时钟

内部高速时钟在系统复位重新运行时默认作为系统时钟,后期代码进行设定时,可有两种频率值来进行设定(8 MHz和48 MHz)。如图1所述HICK默认情况下用的是8 MHz,可配置为48 MHz。

HICK 8 MHz用作系统时钟的代码实现如下:

13.png

HICK 48 MHz用作系统时钟的代码实现如下:

14.png

  • HEXT系统时钟

外部高速时钟用作系统时钟时,其系统时钟频率以实际使用的外部时钟频率为准,范围为 4~25 MHz。HEXT用作系统时钟的代码实现如下:

15.png

  • PLLCLK系统时钟

PLLCLK用作系统时钟时,其系统时钟频率以实际的PLL倍频结果为准。其最高频率应满足芯片规格为基础。PLLCLK用作系统时钟的代码实现如下:

16.png


更新核心频率(Update Core Frequency)

提供的BSP中,其代码框架内保留了一个表示系统核心频率的参数值system_core_clock,其保存的是CPU核心的运行频率值,应该在每次系统时钟配置完成后来进行更新。为的是在整个代码框架下,各外设驱动的频率配置能很快获取到当前核心运行频率值并使用。代码实现如下:

17.png

时钟配置示例

以下将以完整的时钟配置流程来进行说明,示例:由8 MHz外部时钟晶振作为时钟源,其2分频路径经PLL倍频到192 MHz并用做系统时钟,AHB不分频,APB1/APB2采用2分频。函数system_clock_config代码实现如下:

18.png

时钟工具

时钟配置工具是雅特力科技为方便对AT32系列MCU进行时钟配置而开发的一个图形化配置工具,其主旨是使用户清晰了解时钟路径和配置出期望的时钟频率并生成源码文件。

环境要求

  • 软件要求

需要Windows7及以上操作系统支持。

安装

  • 软件安装

本软件不需要安装,只需直接运行可执行程序AT32_New_Clock_Configuration.exe。

功能介绍

本章节将介绍此工具的基本操作,其主要的启动界面和配置界面如下所示

19.png

图3. 启动界面

20.png

图4. 配置界面

菜单栏

菜单栏内容如图所示:

21.png

图5. 菜单栏

  • “项目”(Project)菜单:

新建:新建时钟配置项目打开:打开已存在的配置项目保存:保存已打开的配置项目

  • “语言”(Language)菜单:

English:选择English作为显示语言简体中文:选择简体中文作为显示语言

  • “生成代码”(General code)菜单:

当在对应型号的操作配置界面将所期望的时钟路径和时钟频率配置完成之后,可点击“生成代码”菜单来选择源码文件的存储路径并生成相应的源码文件。

  • “帮助”(Help)菜单:

新版本下载:联网进行新版本下载版本:查看当前版本

新建配置项目

双击打开时钟配置工具,可看到图示的启动界面,可点击“项目”菜单-->“新建”,进行配置项目的新建,在新建配置项目的过程中需要对芯片的系列所属进行选择,操作方法如下图所示

22.png

图6. MCU选择界面

MCU系列的选择,可点击下拉框来进行选择,当选择好MCU后点击“确定”可进入到时钟配置界面。

配置界面的使用

配置界面主要用来进行时钟路径及参数的配置,以下的介绍将以AT32F413系列作为示例来展开进行,其余系列的配置方法与此类似。

整个配置界面主要可以分为四个大块,如下图所示

23.png

图7. 配置界面框架

  1. 标题部分:用于展示当前配置项目所选择的MCU系列。

  2. 配置部分:用于对时钟路径和时钟参数进行选择和配置,以达到期望的应用需求。

  3. 输出部分:用于时钟输出(CLKOUT)的配置。

  4. 在SCLK栏也可在选中PLL为系统时钟时作为输入框,可输入期望的系统时钟频率来反向自动配置出倍频参数。

  5. 结果部分:用于显示当前外设所使用的时钟频率及总线上的外设。

接下来就着重介绍一下配置部分的使用。配置部分的流程界面是对应着MCU时钟树来进行的,各系列MCU的此部分可能存在着差异,但使用方式大同小异。时钟路径的配置可按流程对各开关进行点选来进行选择,配置部分如下图所示,将逐个流程点的功能及其注意事项进行介绍。

24.png

图8. 时钟配置框

1. rtc使能:rtc时钟代码配置的使能下拉框。

2. rtcsel:点选框,rtc时钟源选择。当rtc使能开启后,此点选框可配置。

3. lext bypass:外部低速时钟的旁路使能。

4. hext:此为输入框,8 MHz为所采用外部时钟源的默认频率,用户可根据实际使用的外部时钟源频率进行修改。(注:此8 MHz被修改为其他频率值时,对应的BSP中demo目录下的inc/at32f413_conf.h文件内的HEXT_VALUE宏定义也应该一致修改,也可以采用工具生成的at32f413_conf.h文件来进行使用)。

5. hext bypass:高速外部时钟的旁路使能。

6. pllhextdiv:点选框,当HEXT作为PLL时钟源时,可配置输入频率为HEXT分频或HEXT不分频。

7. pllrcs:点选框,可配置PLL时钟源为HEXT或HICK。

8. 倍频系数:使用PLL_MULT参数进行倍频,计算公式为:PLLCLK=PLL输入时钟*PLL_MULT。为了用户的使用方便,在选定PLL输入时钟源后,结果部分的sclk框中输入目标时钟并按下键盘“Enter”键,会自动计算一组倍频参数以满足用户期望或相近的时钟频率。

9. sclk select:点选框,可配置HEXT、PLL或HICK作为系统时钟。

10. sclk频率:当采用正向配置时,此作为系统时钟频率的配置结果显示,当将其用作输入框时,输入期望的频率后点击回车键,会根据此输入值反向计算一组合适的或最接近期望值的PLL配置参数。

11. hick to sclk:点选框,当sclk select选择HICK作为系统时钟时,可配置HICK的8 MHz或48 MHz到系统时钟(注:当选择48 MHz HICK到系统时钟后,CLKOUT输出HICK时的频率也为48 MHz)。

12. usbdiv:下拉框。当PLL时钟被选作为USB的时钟来源时,此处配置PLL时钟到USB时钟的分频系数。13. hick to usb:点选框,可配置USB时钟由PLL时钟或HICK 48 MHz提供,USB时钟配置代码由下拉框to usb来进行选择控制。因USB时钟需要的是固定48 MHz,所以在usbdiv可分频参数为前提下,PLL倍频出来的频率可能不满足USB 48 MHz的时钟需求。

14. USB使能:USB时钟代码配置的使能下拉框。

15. USB时钟频率的显示。此显示栏会实时计算USB时钟的频率并显示,如果配置出来的USB时钟不等于48 MHz时,显示出来的USB时钟频率会标注为红色,而实际应用中没有用到USB时选择disable则不会显示。(注:此部分只针对USB时钟频率的配置,USB外设时钟使能需自行额外打开)

生成代码

当时钟配置完成后,可点击生成代码,然后选择代码生成的路径并确认,最后会在所选目录下生成两个文件夹inc和src,源文件存放在src文件夹下,头文件存放在inc文件夹下。这些文件可结合到BSP_V2.x.x内的工程来进行使用。可以采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换,在main函数中进行system_clock_config函数调用即可。

注意事项

外部时钟源(HEXT)修改

因本文档所示例的demo和配置工具都默认采用的8 MHz外部时钟频率,当实际硬件使用的外部时钟源是非8 MHz频率时需注意以下几点。

  • 代码修改

1、以实际的外部时钟频率按文中时钟配置流程章节所描述的时钟配置流程及方法来编写相应的代码,配置出期望的时钟配置及时钟路径。

2、修改对应demo工程中at32f4xx_conf.h文件的HEXT_VALUE值,以实际使用的外部时钟源频率值来进行修改。如实际外部高速时钟使用12.288 MHz的晶振或时钟源时,at32f4xx_conf.h文件应修改如下:

25.png

  • 工具修改

1、在时钟配置工具中的HEXT输入框内填入外部时钟源实际频率值并按“Enter”键确认。

2、配置好所需的时钟路径及时钟频率,生成代码。采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换或取其中函数内容进行替换,在main函数中进行system_clock_config函数调用即可。

工具使用

在使用本时钟配置工具时需注意:

1. 此工具生成的时钟配置源码文件需结合雅特力科技提供的BSP_V2.x.x进行使用。

2. 不同系列所生成的时钟配置源码文件不能型号混用,只能在相对应的工程项目中进行调用。3. 配置工具中各输入框参数修改后,请以“Enter”键结束。
PS. 案例介绍可点击此处查看

来源:AT32 MCU 雅特力科技

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

围观 142

2023年5月,云途半导体的车规级MCU产品——YTM32B1M系列通过了德国C&S的CAN总线(含CAN-FD)一致性测试(Conformance Tests)和鲁棒性测试(Robustness Tests),这意味着YTM32B1M系列MCU集成的CAN/FD控制器可以稳定可靠地与其它获取该认证的任意CAN节点实现互联互通,自由组网,保证整车网络通信的稳定性和可靠性。以往国产芯片应用调试中,比较大的痛点就是CAN总线对FD协议支持不全面,高负载断流等问题,通过C&S一致性和鲁棒性测试的云途YTM32B1M系列产品将极大地解决国产芯片这一技术痛点,助力国内智能汽车的前沿发展。

1.jpg

△ YTM32B1M的C&S CAN/FD总线一致性证书

C&S是德国Communication & System Group实验室的简称。C&S实验室成立于1995年,拥有超过25年的车用网络通信开发和测试经验,是业界公认的测试通信接口互联互通、一致性和兼容性的权威认证机构,与全球领先的各大知名车企均有合作,C&S出具的认证报告也获得行业的一致认可。

2.jpg

德国C&S实验室合作伙伴

References - C&S Group GmbH (cs-group.de)

一方面,随着汽车智能化和电动化技术的发展和普及,汽车电子电气系统变得越来越复杂。汽车各个电控功能系统相互之间、电控功能系统与汽车显示仪表之间、以及电控功能系统与汽车故障诊断系统之间都需要进行大量数据交换,CAN/FD总线节点变得越来越多。另一方面,与传统汽车不同,新能源智能汽车使用电驱系统驱动车辆,在车辆充电和放电的过程中,大功率器件的开关动作引起大的电压电流突变,将带来更严重的EMC(电磁兼容性Electromagnetic Compatibility)问题。因此,新能源智能网联汽车对控制类芯片MCU的CAN控制器的总线一致性、通信鲁棒性和EMC性能要求也更高。

此次云途通过C&S CAN/FD总线一致性性测试,意味着云途YTM32B1M系列车规MCU产品具备与整车CAN总线的上下游ECU互联互通的能力,可直接和其他通过C&S认证的CAN/FD节点无障碍通信,保障整车网络兼容性和稳定性。

此外,YTM32B1M是国内首个同时获C&S CAN/FD总线一致性认证和功能安全ISO 26262 ASIL-B产品认证以及通过AEC-Q100 Grade1测试的车规级MCU芯片产品系列,是真正意义上的“高可靠性”“高安全性”的车规MCU。未来,云途半导体将继续严格遵循车规级芯片的设计原则与生产工艺,实干造芯,持续助力国产汽车行业数字化、智能化、网联化的高速发展。

YTM32B1M系列MCU使用120MHz主频ARM Cortex-M33内核、拥有高达1.25MB嵌入式闪存(Flash)、集成多达6路CAN-FD控制器,提供LQFP-144/100/64多种封装、高速I/O 支持2.97V至5.5V供电、工作温度范围为-40℃至125℃(AEC-Q100 grade-1),性能达到国内领先、国际主流水平,可广泛满足智能汽车各个域的应用场景。YTM32B1M系列样品或订购请发送邮件至business@ytmicro.com咨询或联系授权代理商。

来源:云途半导体YTMicro

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

围观 45

 概述

冰箱制冷系统中最重要的部件是压缩机。它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为整个制冷循环提供源动力。这样就实现了压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循环。一般来说,压缩机由壳体、电动机、缸体、活塞、控制设备 ( 启动器和热保护器 ) 及冷却系统组成。

1.png

与普通冰箱相比,变频冰箱最显著的优点是提高制冷效率、节约电力、节约能源。另外,在能快速冷却的同时,还能保持温度波动范围较小,从而达到较好的冷藏保湿效果。压缩机转速的精准控制,压缩机无需频繁启停,噪音更小更安静。本文讨论了基于上海航芯ACM32G103的冰箱压缩机变频方案。

01、ACM32G103系列芯片规格介绍

• 采用M33内核,主频最高可达120MHz

• eFlash:320KB,加密存储,4KB I-Cache,4KB D-Cache,支持Flash加速0等待执行

• SRAM:64KB,其中后8KB在STOP2低功耗模式下可保持数据

• 2路12bits ADC,共19个外部通道,最高速率达3Msps,支持同步模式、加速采样、差分采样以及AUTO等功能

• 2个16位高级定时器,支持PWM输出/(6路)互补输出/死去插入/刹车/编码模式

• 通信接口丰富:4路UART、1路LPUART、3路SPI、2路I2C、2路I2S、2路CAN

• 封装类型丰富:

QFN32/QFN48/LQFP48/LQFP64(7X7)/LQFP64(10X10)/LQFP100

• ESD:4KV(HBM)

• 工作温度:-40°C~85°C

02、冰箱压缩机变频方案

2.png

注:ACM32G103系列支持OPA内部连接COMP和ADC

航芯冰箱压缩机变频方案以ACM32G103为主控,主要电力来源自电源转换,采用磁链观测器方式支持闭环全负载启动。

03、变频方案电机矢量控制

整个系统为闭环控制,内环为电流控制环路,外环为速度控制环路,电机本体方程如下:

3.png

4.png

04、FOC算法实现介绍

FOC算法基于磁链观测器

基于α-β坐标系下的PMSM数学模型如下:

5.png

α-β坐标系下电感表示如下:

6.png

对于SPM,数学模型可以简化为:

7.png

定义状态变量:

8.png

状态变量 y 实质就是反电势,对反电势积分可以得到磁链,那么对磁链的状态变量x微分则得到反电势。关系式如下:

9.png

为了构建非线性观测器,定义矢量函数:

10.png

矢量函数的模实质就是磁链幅值:

11.png

在对反电势进行积分获得磁链的过程中,最担心的就是直流偏置或积分漂移,常用高通滤波器、自适应补偿等方式来抑制这种负面因素。非线性模块的思路就是把估算的磁链的幅值与实际磁链幅值的差,作为估算的磁链分量的补偿项。关系式如下:

12.jpg

完成状态变量的观测器之后,就得到了磁链分量,改写如下:

13.jpg

通过观测的磁链分量就得到了观测的角度。

14.png

通过锁相环就可以得到速度和角度。

同时本算法为克服传统转速环系统跟随性差,动态响应场合差等问题,同时提出了自扰抗ADRC系统,如图所示。

15.png

传统转速环,在负载变化时或者调速时过冲严重,转速跟随性能差。ADRC系统转速跟随性能好,在动态负载场合好用。

结 语 

ACM32G103主频高,支持浮点运算和DSP,内置CORDIC,可以轻松实现上述的SVPWM产生器,Park/Clark变换,PI控制器,以及转子位置观测器。MCU内置的高速12位逼近型ADC和多级中断系统可以确保闭环控制的实时性。

冰箱压缩机变频技术,能避免无谓的能量消耗,省电节能;冰箱全天工作,采用变频技术后,压缩机始终处在低速运行状态,可以彻底消除因压缩机启动引起的噪声;变频技术控温精准、温度连续可调,变频冰箱对食材的保鲜效果更好。优势突出,变频冰箱市场普及率还远未达到行业预期,这片市场大有可为。

来源:上海航芯

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

围观 44

这一课我们将介绍CKS32F4XX系列产品的定时器使用,CKS32F4XX的定时器功能十分强大,包含2个高级控制定时器,8个普通定时器,2个基础定时器,以及两个看门狗定时器和一个系统定时器,总共15个定时器之多。关于定时器部分内容的讲解我们将分3个部分展开,本节将介绍定时器的基本特征和定时操作。

1.jpg

1、计数器分辨率:指定时器一个计数周期,例如同样是84Mhz的工作时钟,

对于TIM2,其分辨率的范围为:1*(1000ns/ 84)~(2^32)*(1000ns/84);

对于TIM3,其分辨率的范围为:1*(1000ns/84)~(2^16)*(1000ns/84)。

2、计数器类型:这个参数按照计数的方向来划分:

向上计数指的是从0开始到1,2...直到自己设置的计数上限值N,达到后再次从0开始计数,周而复始;

向下计数指的是从设置的计数上限值N开始到N-1,N-2,...直到0,达到后再次从N开始计数,周而复始;向上向下计数指的是从0,1,2...N,然后再从N,N-1,N-2...0,周而复始。

3、预分频系数:可以通过设置该系数来配置时基,如定时器工作在84Mhz下,配置不分频则一个计数时基为11.9ns,配置成2分频则一个计数时基为23.8ns。

4、产生DMA请求:定时器的更新会发出DMA请求,这是因为在DMA通道中为Timer预留了一个通道。

5、捕获比较通道:捕获就是定时器可以捕捉到通道的上升沿或者下降沿信号,比较就是定时器可以将计数器的值和装载值做比较,关于这部分将会在下后续章节展开。

6、互补输出:互补输出指的是输出的两个通道两个波形完全相反,通常运用在桥式电路中的互补PWM输出,这一部分将在后续章节展开。

7、最大接口时钟和最大工作时钟:定时器的时钟来源是APB,通过APB预分频器的配置,最大工作时钟可以是PCLKx的两倍。

CKS32F4XX定时器的定时操作

定时器的定时操作原理其实很简单,就像家里用的微波炉一样,需要加热食物时,先设定一个加热时间,然后按下开关,开始计时,当达到我们设置的定时时间以后,微波炉就会停止工作,并会有一个声音提示我们,定时时间到了。当然,在完成定时操作之前,必须要对Timer进行一些配置,下面我们以timer3为例,为大家演示。

1、Timer3时钟使能

TIM3时钟来自于APB1域,我们通过APB1总线下的时钟使能函数来使能TIM3的时钟。调用的函数是:

//>>使能 TIM3 时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);typedefstruct

2、定时器参数初始化

在库函数中定时器的初始化通过TIM_TimeBaseInit实现的:

void TIM_TimeBaseInit(TIM_TypeDef  *TIMx, 
TIM_TimeBaseInitTypeDef  * TIM_TimeBaseInitStruct);

参数结构体指针,结构体类型为TIM_TimeBaseInitTypeDef,下面是结构体的定义:

typedef struct
{ 
    uint16_t TIM_Prescaler; 
    uint16_t TIM_CounterMode; 
    uint16_t TIM_Period; 
    uint16_t TIM_ClockDivision; 
    uint8_t TIM_RepetitionCounter; 
} TIM_TimeBaseInitTypeDef;typedefstruct

这个结构体一共有5个成员变量,要说明的是,对于通用定时器只有前面四个参数有用,最后参数TIM_RepetitionCounter是高级定时器才有用的,后续章节会详解,在此不赘述。

第一个参数TIM_Prescaler是用来设置分频系数的,对应上表中的预分频系数。

第二个参数TIM_CounterMode是用来设置计数方式,如上表所述,可以设置为向上计数,向下计数方式还有向上\向下计数(中央对齐计数)方式,比较常用的是向上计数TIM_CounterMode_Up和向下计数 TIM_CounterMode_Down。

第三个参数是设置自动重载计数周期值,可以通俗的理解成要定时的次数,这个是根据定时时间和时基做除法换算得到的,比如定时器现在计数1次,时间经过了250ns,要定时100us,那自动重载计数周期值为400。

第四个参数是用来设置时钟分频因子,这个参数与定时器的其他功能有密切,本节操作先按照TIM_CKD_DIV1来配置(不分频)。

针对TIM3初始化范例代码格式:

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 
TIM_TimeBaseStructure.TIM_Period=5000; 
TIM_TimeBaseStructure.TIM_Prescaler=7199; 
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; 
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

3、设置TIM3_DIER允许更新中断

因为我们要达到定时时间到后有一个到时提醒的效果,这就需要用到TIM3的更新中断,在库函数里面定时器中断使能是通过TIM_ITConfig函数来实现的:

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

第一个参数是选择定时器号,取值为 TIM1~TIM17。

第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断TIM_IT_Update,触发中断TIM_IT_Trigger,以及输入捕获中断等等。

第三个参数就很简单了,就是失能还是使能。

例如我们要使能TIM3的更新中断,格式为:

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );

4、TIM3中断优先级设置

在定时器中断使能之后,因为要产生中断,必不可少的要设置NVIC(向量中断控制器)来设置中断优先级。关于NVIC_Init函数实现中断优先级的设置请到NVIC章节参考,这里就不重复讲解。

5、使能TIM3

配置好定时器后,不要忘记开启定时器,就像按下微波炉的开关一样,定时器才会进入工作状态,在固件库里面使能定时器的函数是通过TIM_Cmd函数来实现的:

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)

这个函数非常简单,比如我们要使能定时器3,方法为:

//>>使能 TIMx 外设 
TIM_Cmd(TIM3, ENABLE);

6、编写中断服务函数

最后,要编写定时器中断服务函数,类似于听到微波炉结束工作的声音后,我们需要进行把加热的食物取出或者继续加热等操作,通过该函数来处理定时器产生的相关中断。在中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,在处理完中断之后应,该向TIM3_SR的最低位写0,来清除该中断标志,在固件库函数里面,用来读取中断状态寄存器的值判断中断类型的函数是:ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)

该函数的作用是,判断定时器TIMx的中断类型 TIM_IT是否发生中断。比如,我们要判断定时器3 是否发生更新(溢出)中断,方法为:

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){} IT_Update) != RESET){}

固件库中清除中断标志位的函数是:

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)

该函数的作用是,清除定时器TIMx的中断TIM_IT 标志位。使用起来非常简单,比如我们在TIM3的溢出中断发生后,我们要清除中断标志位,方法是:

TIM_ClearITPendingBit(TIM3, TIM_IT_Update );

这里需要说明一下,固件库还提供了两个函数用来判断定时器状态以及清除定时器状态标

志位的函数TIM_GetFlagStatus 和TIM_ClearFlag,他们的作用和前面两个函数的作用类似。只 是在TIM_GetITStatus函数中会先判断这种中断是否使能,使能了才去判断中断标志位,而TIM_GetFlagStatus 直接用来判断状态标志位。通过以上几个步骤,我们就可以达到我们的目的了,使用通用定时器的更新中断,来实现定时并产生定时中断信号。

代码实例

/**通用定时器3中断初始化

>>arr:自动重装值。psc:时钟预分频数

>>定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.

>>Ft=定时器工作频率,单位:Mhz

这里使用的是定时器3**/

void TIM3_Int_Init(u16 arr,u16 psc) 
{ 
    TIM_TimeBaseInitTypeDef   TIM_TimeBaseInitStructure; 
    NVIC_InitTypeDef NVIC_InitStructure; 
    //>> ①使能 TIM3 时钟 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 
    //>>自动重装载值 
    TIM_TimeBaseInitStructure.TIM_Period = arr;
    //>>定时器分频 
    TIM_TimeBaseInitStructure.TIM_Prescaler=psc; 
    //>>向上计数模式
    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;  
    TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; 
    // ②初始化定时器 TIM3
    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
    //③允许定时器 3 更新中断 
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); 
    //定时器 3 中断  
    NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; 
    //抢占优先级 1
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;  
    //响应优先级 3 
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; 
    // ④初始化 NVIC 
    NVIC_Init(&NVIC_InitStructure);
    //⑤使能定时器 3
    TIM_Cmd(TIM3,ENABLE);  
    } 
    //⑥定时器 3 中断服务函数 
    void TIM3_IRQHandler(void) 
    { 
        //>>溢出中断 
        if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) 
        { 
        } 
        //>>清除中断标志位 
        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
    }

这里列出了一个中断服务函数和一个定时器3中断初始化函数,中断服务函数中,在每次中断后,判断 TIM3的中断类型,如果中断类型正确,则执行自己需要执行的操作并清除中断标志,TIM3_Int_Init 函数就是执行我们上面介绍的那5个步骤,使得 TIM3开始工作,并开启中断。这里我们分别用标号①~⑤来标注定时器初始化的五个步骤。该函数的2 个参数用来设置TIM3的溢出时间。假设系统初始化 SystemInit函数里面已经初始化APB1的时钟为 4分频,所以APB1的时钟为42M,这也是timer3的最大接口时钟,而从CKS32F4的内部时钟树图得知:当APB1的时钟分频数为1的时候,TIM2~7以及TIM12~14的时钟为APB1的时钟,而如果APB1的时钟分频数不为1,那么TIM2~7以及TIM12~14的时钟频率将为APB1时钟的两倍。因此,TIM3的时钟为84M,再根据我们设计的arr和psc的值,就可以计算中断时间了。计算公式如下:

Tout=((arr+1)*(psc+1))/Tclk;

其中:

Tclk:TIM3的输入时钟频率(单位为Mhz)。

Tout:TIM3溢出时间(单位为us)。

本节我们介绍了CKS32F4XX各定时器概况,以及如何设置最基础的定时功能,包括开启定时器的时钟,配置定时器的时基,定时次数以及计数的方向等,此外定时器其他的功能如输入捕获,比较输出和PWM输出等功能将会在后续章节展开。

来源:中科芯MCU

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

围观 36

页面

订阅 RSS - MCU