非常感谢DigiKey和EEPW举办的这次活动,可以让我在边玩边学中提高动手能力和解决问题的能力。
本次的主角有3个
ADI TMC2209步进电机驱动模块——步进电机驱动——¥122.90
TI LaunchPad LP-MSPM0C1104——低功耗MCU——¥61.94
英飞凌XMC4700 Relax Lite Kit——高性能MCU——¥161.51
先说TMC2209步进电机驱动模块,非常小巧精致


再说TI LaunchPad LP-MSPM0C1104
之所以选择这款MCU,主要是为了重温校园记忆。
毕竟我入门MCU是从德州仪器的MSP430开始的,如下图

如今TI似乎已经把重心转向MSPM0,而作为M0中的入门型号MSPM0C1104,可谓极具性价比
毕竟带仿真调试器才61元人民币


内核:Arm Cortex‑M0+,24MHz德州仪器
存储:16KB Flash、1KB SRAM德州仪器
封装:8 球 WCSP(1.38mm²,号称全球最小 MCU 之一);另有 16 引脚 DSBGA 等
供电:1.62V~3.6V德州仪器
温度:−40℃~125℃德州仪器
价格:千片约 **$0.216**Texas Instruments
12 位 ADC:3 通道,最高1.5Msps;内置1.4V/2.5V基准、温度传感器、电源监测德州仪器
DMA:ADC 专用单通道 DMA德州仪器
定时器:3 个 16 位定时器,最多14 路 PWM(含死区控制)德州仪器
通信:UART(支持 LIN)、I²C(FM+)、SPI德州仪器
GPIO:6 个(WCSP)/14/18 个;5V 容忍Texas Instruments
时钟:内置高精度 RC 振荡器(−2%~+1.2%),无需外部晶振
Run:87μA/MHz
Stop:609μA@4MHz;311μA@32kHz
Standby:5μA(SRAM 保持)
Shutdown:200nA
再说回英飞凌XMC4700 Relax Lite Kit
提到英飞凌,在工业控制领域可是大名鼎鼎的存在,本次正想体验其高性能及稳定性。


内核:ARM Cortex‑M4 @ 144MHz,硬件FPU+DSP+MPUInfineon Technologies
Flash:2048KB(2MB),带数据 / IP 保护Infineon Technologies
RAM:352KB(带 ECC)Infineon Technologies
封装:LQFP‑100、LQFP‑144、LFBBGA‑196Infineon Technologies
供电:3.13V~3.63V(工业 3.3V)Infineon Technologies
温度:−40℃~+85℃ / +125℃Infineon Technologies
6×CAN 2.0B(带 256 字节 Mailbox,支持 CAN FD)Infineon Technologies
10/100Mbps 以太网 MAC(IEEE 1588 PTP)Infineon Technologies
USB 2.0 OTG(主机 / 从机)Infineon Technologies
SD/MMC、6×USIC(可配 SPI/UART/I²C/I²S/LIN)Infineon Technologies
外部总线 EBU(可扩 SRAM/Flash)Infineon Technologies
4×12 位 ADC:共18 通道,4 路同步采样,3.6MspsInfineon Technologies
2×12 位 DACInfineon Technologies
4×ΔΣ 解调器(适合电流 / 电压采样)Infineon Technologies
定时器:24×16 位通用定时器;2×CCU8(16–64 位 PWM,带死区);2× 位置接口(编码器)Infineon Technologies
另外,还有本次的主角之一:2相4线步进电机。

介绍完以上3个主角,先用Arduino(ESP32S3)驱动步进电机转起来试试吧。

最简接线方法如下:
只占用MCU 2个IO口
| TMC2209 | XIAO ESP32S3 | |
| VIO | 3.3V | 逻辑电 |
| GND | GND | 共地 |
| STEP | GPIO2(D1) | 脉冲 |
| DIR | GPIO3(D2) | 方向 |
| EN | 接地 | 默认使能 |
| UART/RX/TX | 悬空 | 不用 |
| MS1、MS2 | 悬空 | 不用 |
| 1A/1B、2A/2B | 步进电机 | 绕组 |
| VMOT+ | 12V | 电机电源 |
| VMOT GND | 12V 负极 + 主板 GND | 必需共地 |

程序及其简单:
DIR控制正反转
STEP控制转速(脉冲)
#define STEP_PIN 2
#define DIR_PIN 3
void setup() {
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
}
void loop() {
digitalWrite(DIR_PIN, HIGH);
for(int i = 0; i < 400; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(6);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(6);
}
delay(20);
}运行结果如图:

我要赚赏金
