首先感谢面包板社区提供的评测机会,技术支持服务也非常到位,爆赞!
1. 摸一摸硬件资料
板子工整漂亮,用料足。上电真图:
原理图还是挺模块挺清晰的,但是这个开发板没有手册,没有个quickstart的上手教程,对小白就没那么友好了。
开发笔记里找到一个框图:
核心部分,也就是最小系统:
2. 熟悉下软件开发资料
datasheet和usermanual都还算齐备,文档有点类似STM32的文档样式,框架有了,但是内容还是不够详实,对于老手来说内容够了,可以直接看SDK了,但是对于新手来说,如果能有类似正点原子类似的开发教程,会更友好。
3. 上手SDK,搭建开发环境
3.1 blinker先来点个灯,熟悉下开发环境。
工程是KEIL环境,烧录直接用STLINK接SWD接口,熟悉的环境,熟悉的接口。
附件里有keil的pack文件,KEIL版本2.6以上肯定是OK的。
选对芯片型号后,可以正常编译,DEBUG也可以找到芯片。
SDK的examples和板子的对应有些曲折,要自己改一改。
以点灯的GPIO_TOGGLE来说, 看原理图:
fault这个红灯连接在PC15, 打开GPIO_TOGGLE工程
int main(void)
{
APM_MINI_Init();
GPIO_Init();
printf("This is an example of GPIO toggle \r\n");
while (1)
{
/* Turn LED2 on */
GPIO_ClearBit(LED2_GPIO_PORT, LED2_PIN);
/* Turn LED3 off */
// GPIO_SetBit(LED3_GPIO_PORT, LED3_PIN);
APM_MINI_DelayMs(200);
/* Turn LED2 off */
GPIO_SetBit(LED2_GPIO_PORT, LED2_PIN);
/* Turn LED3 on */
// GPIO_ClearBit(LED3_GPIO_PORT, LED3_PIN);
APM_MINI_DelayMs(200);
}
}
GPIO初始化:
void GPIO_Init(void)
{
GPIO_Config_T gpioConfig;
RCM_EnableAHBPeriphClock(LED2_GPIO_CLK | LED3_GPIO_CLK);
/* LED2 GPIO configuration */
gpioConfig.pin = LED2_PIN;
gpioConfig.mode = GPIO_MODE_OUT;
gpioConfig.outtype = GPIO_OUT_TYPE_PP;
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.pupd = GPIO_PUPD_NO;
GPIO_Config(LED2_GPIO_PORT, &gpioConfig);
}
3.2 跑下调试串口
从上面原理图看到,USB-UART的转接芯片是接到了芯片的UART2, 这里要稍微吐槽一下,2023年了,USB口还用miniUSB,找这条线在旧物料箱里扒了好久才找出一根“珍藏”。
查看系统初始化函数:
void APM_MINI_Init(void)
{
/* Init delay function */
APM_MINI_DelayInit();
APM_MINI_PBInit(BUTTON_KEY1, BUTTON_MODE_GPIO);
APM_MINI_COMInit(COM2); //调试打印口改为com2,对应USB接的USART2 APM_MINI_COMInit(COM1);
}
这里串口初始化改为USART2,对应的IO也要改为TX-PB11, RX-PB12
为了让printf能够切换到USART2(可以通过USB-UART和上位机串口调试工具通信) 除了上面初始化USART2 之外,还需要两个操作:
1)指定调试串口
2) 输出重定向:
3)板上的J4/J5要用跳线帽短接
试验现象:
FAULT灯快闪,同时串口打印debug信息:
4.正戏--体验电机应用
准备了好几个无刷电机:
用的无感FOC例程:
如上,修改了电机参数后,编译下载,可以通过板上的旋钮调速,还是挺方便上手的。
5. 非专业性小结
1)熟悉的开发环境,快速上手很方便
2)电机库易用性不错
3)特性和不同电机适配还需要花时间慢慢磨......