国产MCU之光 第25期:高阶玩家!公开GD32 定时器 & 电机测速 的花样用法
*阅读说明:详细过程及源码资料等请戳原链接查看。
前言 在有感电机控制中,获取电机转速是非常重要的步骤,转速获取越准确,控制电机时越方便,抛开霍尔不谈,这里讨论电机编码器。
一、测频率法(M法) 二、测周期法(T法) 三、M/T法测速 四、如何在GD32单片机上实现上述过程 这里本人从M法测速开始,发现低转速速度误差太大,于是升级了M/T法测速,这里仅介绍这两种的实现,T法就不做实现,其实M/T能实现,T法就一定不会出问题啦。下文将逐步讲解我的开发历程。
1. 试验资料 a.GD32E230C8T6 b. LME2500FE 2500线四倍频磁编码器 c. 纸飞机串口助手 d. 伺服电机+驱动器 2. M法测速实现及试验结果
3. M/T法测速实现及试验结果 GD32E230之正交译码器的M/T法测速。 介于本篇文章篇幅已经很长了, 就不介绍定时器的正交译码器功能了,该功能网络上资料很多,这里不赘述,我们从代码入手……
总结 M/T法测速在增量型编码器中还是很常用的测速方式,再结合相应的滤波算法,可以得到非常精准的速度信息,同时MCU的译码器模式可同时获取到点击的旋转方向,可自行探索
前言: 本文主要着重于定时器的应用侧,在原理方面不会进行详细介绍,如果在简介原理时出现错误,还望各位见谅指正。硬件平台:GD32E230C8T6
SysTick 定时器 TIMER定时器
一个简单的PWM输出便完成了,但是当我们想平滑的控制一个灯的亮灭,总不能一直通过函数来进行不停地改变占空比,于是这里可以启用TIMER的DMA功能。
主从定时器(定时器互联) 三个相互级联的PWM输出
需求:一路固定以250HZ的频率输出PWM,二路以62.5Hz频率输出,三路以15.625Hz频率输出。 我们用代码实现效果 首先通过宏定义设置TIMER0的通道外设地址 定义DMA发送的数组 DMA初始化 初始化定时器0,开启通道和DMA 试验效果
由于开发板并未随机配带显示屏,为此利用其所配置的LCD接口,添加了一个SPI接口的显示屏,从而可以免去接线的麻烦。 由于GD32F303所配置的程序空间只有512K,故在需要较大存储空间时,就只能依赖板载的FLASH存储芯片和SD卡。 受程序空间的限制,当进行图片的显示,即使以FLASH芯片来存储数据是一件麻烦的事,需要执行多次才能将程序中的图片数据分批地转存到FLASH芯片中。 因此较合理的使用方式是将图片文件存放到SD卡中,以供数据读取来再现图片内容。 由于在例程资源中,只提供了SD卡的读写,因此要进行文件的读写,需要自行移植文件系统。 在完成文件系统的移植后,即可提供串口来显示SD卡的存储容量。
在此基础上,该如何读写文件呢? 1.读取函数及使用 2.写入函数及使用 3.图片文件显示
认识芯片特性GD32E230/232系列 * 全系列采用嵌入式Flash * 16K~64K Flash * 4K~8K SRAM * 1.8~3.6V供电,I/O口可承受5V电平 * -40℃~105 ℃工业级温度范围 *全系列硬件管脚及软件兼容
GD32F303/305/307系列 * GD32F303为Cortex®-M4增强型 * GD32F305/GD32F307均为Cortex®-M4互联型 * 128K~3072K Flash * 32K~96K SRAM * 2.6~3.6V供电,5V容忍I/O * -40℃~85 ℃工业级温度范围 *全系列硬件管脚及软件兼容 与GD32F103/105/107系列相比: GD32F303向下Pin-to-Pin兼容GD32F103 GD32F305/307向下Pin-to-Pin兼容GD32F105/107 主频由108MHz提高到120MHz,且采用M4内核
|