[MM32软件] 【MM32 eMiniBoard测评报告】+驱动步进电机

[复制链接]
4568|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 硬件资料
硬件资料.jpg
这个链接里的文档附有原理图和操作手册,建议仔细查阅。

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

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

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 包。 下载解压后,双击安装即可。
Pack安装包.jpg
点灯程序,号称嵌入式世界的 "Hello world".
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "led.h"

  4. int main(void)   
  5. {
  6.     delay_init();
  7.     LED_Init();
  8.     while(1)        
  9.     {
  10.         LED1_TOGGLE();
  11.         LED2_TOGGLE();
  12.         LED3_TOGGLE();
  13.         LED4_TOGGLE();
  14.         delay_ms(300);
  15.     }
  16. }

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



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

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

3.3 主要代码
  1. int main(void)   
  2. {
  3.         static uint8_t s_u8Step = 0;
  4.         
  5.     delay_init();
  6.     LED_Init();
  7.     while(1)            
  8.     {
  9.         switch(s_u8Step)
  10.         {
  11.                 case 0:S1_OFF();S2_ON();S3_ON();S4_ON();break;
  12.                 case 1:S2_OFF();S1_ON();S3_ON();S4_ON();break;
  13.                 case 2:S3_OFF();S1_ON();S2_ON();S4_ON();break;
  14.                 case 3:S4_OFF();S1_ON();S2_ON();S3_ON();break;
  15.                 default:break;
  16.         }
  17.         s_u8Step++;
  18.         if(s_u8Step >= 4)
  19.         {
  20.                 s_u8Step = 0;
  21.         }
  22.         delay_ms(5);
  23.     }
  24. }
  25. // 步进电机引脚控制
  26. #define S1_ON()  GPIO_ResetBits(GPIOA,GPIO_Pin_4)        // PA4
  27. #define S1_OFF()  GPIO_SetBits(GPIOA,GPIO_Pin_4)        // PA4
  28. #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的输出引脚功能。
项目实战.jpg
实测效果:步进电机旋转一周大约5s。



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


B1lanche 发表于 2021-1-10 12:39 | 显示全部楼层
写的够细致的,这块开发板做的还是比较贴心的,IO基本都引出了,方便开发
wahahaheihei 发表于 2021-1-11 22:18 | 显示全部楼层
这程序真是棒
lidi911 发表于 2021-1-15 08:37 来自手机 | 显示全部楼层
没有电机演示效果
jcky001 发表于 2021-1-18 15:36 | 显示全部楼层
给楼主赞一个,很细致
liangshuang95 发表于 2021-1-19 18:38 来自手机 | 显示全部楼层
赞一个,感谢楼主分享经验。
51xlf 发表于 2021-4-5 16:21 | 显示全部楼层
步进电机是一种将电脉冲信号转换为角位移的执行机构
i1mcu 发表于 2021-4-5 16:21 | 显示全部楼层
驱动有什么要求?
pmp 发表于 2021-4-5 16:22 | 显示全部楼层
如何用PWM驱动步进电机  
mmbs 发表于 2021-4-5 16:22 | 显示全部楼层

求两相四线步进电机驱动,C语言源码
1988020566 发表于 2021-4-5 16:22 | 显示全部楼层
步进电机的驱动方式?
lzbf 发表于 2021-4-5 16:23 | 显示全部楼层
可以驱动几个步进电机?  
youtome 发表于 2021-4-5 16:23 | 显示全部楼层
谢谢楼主的方案。   
cemaj 发表于 2021-4-5 16:23 | 显示全部楼层
驱动是只有最简单的正反转   
jimmhu 发表于 2021-4-5 16:24 | 显示全部楼层
怎样直接驱动步进电机  
uptown 发表于 2021-4-5 16:24 | 显示全部楼层
使用光耦了吗  
mmbs 发表于 2021-4-5 16:25 | 显示全部楼层
可以控制步数的。  
i1mcu 发表于 2021-4-5 16:25 | 显示全部楼层
步进电机怎么选择  
51xlf 发表于 2021-4-5 16:25 | 显示全部楼层
求c语言带步数为参数的步进电机驱动子函数
youtome 发表于 2021-4-5 16:25 | 显示全部楼层
      
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

24

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部