目录
7. STM32CobeProgramer读取芯片hex程序
MG42630这款芯片哪个公司生产的就不说了,毕竟知道的都知道,不知道的知道了也没用。这里主要介绍一下该款芯片的一些特性,便于后期调试开发参考。
SGM42630是一款面向双极性步进电机驱动器。它不但通过小体积解决了发热不好处理的问题,还依靠自适应控制衰减模式省去了用户针对不同电机型号都要进行调试的麻烦。
双H桥式电机驱动;电源电压:8V到35V;输出电流:3.2A电流保护。
1. 引脚功能介绍
它的外围电路如下:
这里我们需要注意以下几个参数,知道这几个参数的属性,便于我们更好的使用这款芯片。
引脚 | 信号名称 | 信号描述 | 赋值区间 |
19 | STEP1 | 步进逻辑输入,上升沿使微步索引器移动一步,内部下拉。 | 0~MAX: 500kHz 0~自定义 |
3 | DIR | 0-正转,1-反转 | |
26 | ENABLEn | 启用输入。低电平使能逻辑输入,具有微弱的VCC内部上拉。低电平使输出有效。 | 0-PWM使能,1-PWM禁用 |
16 | SRn | 同步整流使能输入。如果nSR引脚拉低,则启用同步整流。悬空 nSR引脚进入同步整流的自动衰减模式。如果nSR为高,则不存在同步整流和体二极管传导反向电流。 | 0-使能,1-禁用,悬空-自动衰减模式 |
27 | SLEEP | 睡眠模式输入。具有弱内部下拉功能的主动低睡眠模式逻辑输入。应用高电平以启用 设备,低功耗进入低功耗睡眠模式。 | 0-使能休眠模式,1-休眠模式禁用 |
12/13 | USM0,USM1 | 模式选择 | 00:全速模式 01:1/2细分模式 10:1/4细分模式 11:1/8细分模式 |
5 | DECAY_B | 施加在该引脚上的电压设置三个衰减中的一个模式。可使用单片机DAC引脚模拟电压。 | 0~0.692V 快速衰减模式 0.693~1.981V 中速衰减模式 1.982~3.3V 慢速耍贱模式 |
8 | VREF_B | 当前设置参考输入。施加参考电压以设置满刻度绕组电流值。 | 0~3.3V 0~2.5A |
2 | HOME | 状态监控引脚 | 0-有驱动脉冲信号,1-处于其他状态 |
17 | nREST | 复位引脚 | 0-复位 1-正常工作 |
2. 逻辑驱动信号
时间类型 | 功能定义 | 最小值 | 最大值 | 时间单位 |
STEP | 步进频率 | - | 500 | kHz |
WH | 步进脉冲高持续时间 | 1 | - | μs |
WL | 步进脉冲低持续时间 | 1 | - | μs |
SU | 命令设置时间,在步进上升之前 | 250 | - | μs |
H | 阶跃上升后的命令保持时间 | 250 | - | μs |
WAKE | 唤醒时间,退出睡眠(nSLEEP上升)以接受阶跃输入 | - | 1 | ms |
SLEEP | 睡眠时间,输入睡眠(睡眠下降)以禁用输出 | - | 2.5 | μs |
ENABLE | 启用时间可维持,启用(可下降)至启用输出 | - | 20 | μs |
DISABLE | 禁用禁用时间,禁用(可上升)至禁用输出 | - | 20 | μs |
RESETR | 复位释放时间,(重新复位上升)至启用输出 | - | 5 | μs |
RESET | 将复位时间(复位下降)设置为禁用输出 | - | 5 | μs |
3. 程序实施
3.1 前期准备
根据上述介绍我们就可以接线编程了,在此之前我们先将H桥驱动方式的IO驱动管脚记录下来,以便于以后验证使用。
现在我们需要驱动这款芯片的SMG42630
根据上述介绍我们要想驱动这款芯片的所有功能需要以下几个引脚:
DECAY和VREF这两个需要模拟电压的输入我们交给开发板来设置,也就是这里。
除去了这两个设定引脚,剩下的几个引脚就需要接入单片机IO口了。
1. SRn自衰减模式——PF8
2. DIR引脚,控制正反转——PF7
3. USM0和USM1引脚配置步进细分模式。——PF6/PB8
4. RESTN复位引脚——PA6
5. ENABLE引脚控制PWM输出使能——PH12
6. HOME读取状态引脚——PH11
7. SLEEP休眠模式——PH10
8. STEP引脚,这个引脚产生脉冲,这里可以设置定时器比较输出PWM波形——PC7
4. 全速模式下实验
24V3A驱动57电机,全速模式下,最快转速脉冲波形如下 :
将波形放大看。
全速模式下最合适周期值,即777Hz频率的波形。
5. 八倍细分实验
6. 通信协议格式分析
上位机查询:55 55 AA
板子回复: 7A 55 CF
上位机回复:0C 08 00 01 90 01 D0 07 00 00 7D
板子回复: 7A 55 CF
上位机回复:
输出使能:0D 01 01 0F
休眠使能:03 01 01 05
复位:03 01 01 05
同步整流:05 01 00 06。。。。。
7. STM32CobeProgramer读取芯片hex程序
下载完毕后利用STLink以SW的方式连接下载口。
一个字节(Byte)= 8位,例如0xFF就是一个字节。
1B (byte) = 8 bit
1KB = 1024B
1MB=1024KB
0x80000 = 512KB
那么十六进制的0x4000表示多大内存呢?
换算到十进制0x4000为16384字节/1024字节=16k
8. 产生10KHZ的方波驱动步进电机
8.1 硬件资源分配
首先确定引脚,并定义相关功能。
底板:
小系统板:
根据上面的关系我们重新定义驱动引脚:
1. SRn自衰减模式——PA11
2. DIR引脚,控制正反转——PA9
3. USM0和USM1引脚配置步进细分模式。——PA8/PB13
4. RESET复位引脚——PB1
5. ENABLE引脚控制PWM输出使能——PB0
6. HOME读取状态引脚——PA7
7. SLEEP休眠模式——PA6
8. STEP引脚,这个引脚产生脉冲,这里可以设置定时器比较输出PWM波形——PA5
9. DECAY快速衰减(DAC)0.4V——PB9
10. VREF最大电流2.5A(DAC)1.6V——PB8
8.2 定时器配置
8.2.1 定时器比较输出PWM
STM32F051这款芯片的时钟频率是48MHz
采用向上计数模式,使用比较输出模式。这里有一点需要注意计数值尽量大一些。
PWM频率计算
例如:
频率 = 定时器时钟频率/定时器分频系数/自动重装载值(72MHz = 72 * 1^6)
f = 72*10^6 / 72 / 100 =10kHz
比如我们这里也要产生10kHz的PWM波形。
f = 48 000 000 / 48 / 100 = 10 000 = 10kHz
周期T = 1/f = 1 / 10kHz = 100us。
故:定时器分频系数为 48-1、自动重装在值为100-1。
Mode使用Toggele on match(即定时器ARR寄存器溢出就翻转电平)。
那如果我们要产生1.287ms周期的PWM波形该如何设置?
1/0.001287 = 777Hz 约 800 便于计算
48 000 000 / 800 = 60000
60000 = 6*10000
故分频值和计数值选择选择6和10000
8.2.2 PWM输出模式
不开定时器中断。程序只需要初始化以下函数:
一个是启用TIM2定时器,另一个是开启TIM2发送PWM。
HAL_TIM_Base_Start(&htim2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
TIM1每发送一次PWM就会进入一次定时器溢出中断,计算PWM脉冲的个数。就需要通过CNT寄存器。
具体定时器的几种用法我会在后期专门拿出来一期进行讲解,结合这款芯片实现不同的功能。