打印
[MM32软件]

【MM32 eMiniBoard测评报告】+驱动步进电机

[复制链接]
2912|56
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JMU2010|  楼主 | 2020-6-14 09:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 JMU2010 于 2020-6-14 09:09 编辑

1. 引言
先简单聊一下我与MM32的故事。 在去年,我开始做BLDC的项目,于是开始学习了解各家的mcu及其解决方案。有幸获得了灵动微电子的MM32 SPIN系列开发板,给我的感觉是开发板做工精良,开发配套资料很全,FAE支持也很及时,我想有机会也要去了解其他系列,这不,机会就来了嘛。



2. 关于开发板
学习使用一款新的mcu及其解决方案,要先把相关的软硬件资料准备好。推荐去灵动官网下载相关资料。 以下为链接地址:http://www.mm32mcu.com/download1.aspx
由于MM32系列很多,我们可以根据自己的需要下载对应的资料,如我们手中的 Mini board 搭载的是 MM32L073,下载相关资料即可。

2.1 硬件资料
这个链接里的文档附有原理图和操作手册,建议仔细查阅。

2.2 软件资料
这个链接里有库函数和相关的 Demo,建议仔细查阅。

2.3 开箱
点评:元器件都在正面,反面啥也没有。开发板摸上去手感很好。

2.4 硬件资源盘点
我手中这一款是MB-023,根据相关文档可知,其具备以下模块:
  • CN2, Power And Debug
  • CN3, Power,稳压输出3.3V
  • 4个LED灯
  • 4个按键
  • 支持 Arduino 接口
  • CN4, UART接口
  • CN5, CAN接口
  • 1个蜂鸣器模块
  • 8MHz晶振
  • SPI Flash模块
  • AT24C02, EEPROM存储模块
  • 板载仿真器
点评:板载资源非常丰富,有点超出期望了。之前玩过的STM32评估板资源很少,只有板载调试器+ mcu 最小系统。做原型样机开发时,连接很多外部模块时就显得不方便。相比较而言,MM32就考虑更周全了。嵌入式开发的最常用的模块都有,有了这款开发板,很方便做原型样机验证,这里,给灵动点个赞。

2.5 软件Demo演示
有了板载调试器,用一根 Micro USB 数据线连接好就可以进行开发调试了,很方便。
软件库支持最主流的两大编译器:Keil 和 IAR.
首次使用L073系列,需要安装 Pack 包。 下载解压后,双击安装即可。
点灯程序,号称嵌入式世界的 "Hello world".
#include "delay.h"
#include "sys.h"
#include "led.h"

int main(void)   
{
    delay_init();
    LED_Init();
    while(1)        
    {
        LED1_TOGGLE();
        LED2_TOGGLE();
        LED3_TOGGLE();
        LED4_TOGGLE();
        delay_ms(300);
    }
}

需要注意的是:仿真调试时需要手动选择一下仿真器型号。
效果:4个IO口间隔300ms翻转,可以看到4个LED灯在闪烁。



3. 项目实战3.1 项目描述
使用 MM32 驱动步进电机工作,步进电机有工作头,进而完成一些自动化的任务。

3.2 步进电机控制原理
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
简单来说,驱动器的四个 IO 口需要规则的脉冲信号,如间隔一小段时间的0b1000->0b0100->0b0010->0b0001,驱动信号一直循环下去电机就可以一直旋转。

3.3 主要代码
int main(void)    
{
        static uint8_t s_u8Step = 0;
        
    delay_init();
    LED_Init();
    while(1)            
    {
        switch(s_u8Step)
        {
                case 0:S1_OFF();S2_ON();S3_ON();S4_ON();break;
                case 1:S2_OFF();S1_ON();S3_ON();S4_ON();break;
                case 2:S3_OFF();S1_ON();S2_ON();S4_ON();break;
                case 3:S4_OFF();S1_ON();S2_ON();S3_ON();break;
                default:break;
        }
        s_u8Step++;
        if(s_u8Step >= 4)
        {
                s_u8Step = 0;
        }
        delay_ms(5);
    }
}
// 步进电机引脚控制
#define S1_ON()  GPIO_ResetBits(GPIOA,GPIO_Pin_4)        // PA4
#define S1_OFF()  GPIO_SetBits(GPIOA,GPIO_Pin_4)        // PA4
#define S1_TOGGLE()  (GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_4))?(GPIO_ResetBits(GPIOA,GPIO_Pin_4)):(GPIO_SetBits(GPIOA,GPIO_Pin_4))        // PA4

连线说明: 驱动器的电源来自开发板的 5V 和 GND 。 驱动器的 IO 信号来自开发板的 PA3~PA7,需全部设置为GPIO的输出引脚功能。
实测效果:步进电机旋转一周大约5s。



小结
最后,总结一下总体感受。
  • 开发板做工精良
  • 板载资源丰富,原型开发验证方便
  • 软件资源齐全,与主流开发工具无缝对接
  • 软件库与STM32相似度较高,便于开发人员快速上手。


使用特权

评论回复
沙发
B1lanche| | 2021-1-10 12:39 | 只看该作者
写的够细致的,这块开发板做的还是比较贴心的,IO基本都引出了,方便开发

使用特权

评论回复
板凳
wahahaheihei| | 2021-1-11 22:18 | 只看该作者
这程序真是棒

使用特权

评论回复
地板
lidi911| | 2021-1-15 08:37 | 只看该作者
没有电机演示效果

使用特权

评论回复
5
jcky001| | 2021-1-18 15:36 | 只看该作者
给楼主赞一个,很细致

使用特权

评论回复
6
liangshuang95| | 2021-1-19 18:38 | 只看该作者
赞一个,感谢楼主分享经验。

使用特权

评论回复
7
51xlf| | 2021-4-5 16:21 | 只看该作者
步进电机是一种将电脉冲信号转换为角位移的执行机构

使用特权

评论回复
8
i1mcu| | 2021-4-5 16:21 | 只看该作者
驱动有什么要求?

使用特权

评论回复
9
pmp| | 2021-4-5 16:22 | 只看该作者
如何用PWM驱动步进电机  

使用特权

评论回复
10
mmbs| | 2021-4-5 16:22 | 只看该作者

求两相四线步进电机驱动,C语言源码

使用特权

评论回复
11
1988020566| | 2021-4-5 16:22 | 只看该作者
步进电机的驱动方式?

使用特权

评论回复
12
lzbf| | 2021-4-5 16:23 | 只看该作者
可以驱动几个步进电机?  

使用特权

评论回复
13
youtome| | 2021-4-5 16:23 | 只看该作者
谢谢楼主的方案。   

使用特权

评论回复
14
cemaj| | 2021-4-5 16:23 | 只看该作者
驱动是只有最简单的正反转   

使用特权

评论回复
15
jimmhu| | 2021-4-5 16:24 | 只看该作者
怎样直接驱动步进电机  

使用特权

评论回复
16
uptown| | 2021-4-5 16:24 | 只看该作者
使用光耦了吗  

使用特权

评论回复
17
mmbs| | 2021-4-5 16:25 | 只看该作者
可以控制步数的。  

使用特权

评论回复
18
i1mcu| | 2021-4-5 16:25 | 只看该作者
步进电机怎么选择  

使用特权

评论回复
19
51xlf| | 2021-4-5 16:25 | 只看该作者
求c语言带步数为参数的步进电机驱动子函数

使用特权

评论回复
20
youtome| | 2021-4-5 16:25 | 只看该作者
      

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

24

帖子

0

粉丝