打印
[LKS32 硬件]

【LKS32MC081评测】从点灯开始认识凌鸥电机专用MCU

[复制链接]
4915|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yang377156216 于 2022-6-19 21:12 编辑

#申请原创#  @21小跑堂

缘起
我们公司主要承接一些低压水泵、高速风机等等消费电子方案,之前一直用的是 STM32F031 的通用芯片方案,电机算法库也是用的 ST 开源的,加上调机上位机工具,这样一整套开发流程沿用了很久也非常习惯。但是由于近一两年的缺货和涨价浪潮,给我们这样的小公司造成了极大的损伤,老板让我们务必切换为国产芯片。但是目前看起来 GD、灵动、中微、澎湃微等这几家替代 ST 的国产厂商中,电机应用生态与 ST 相比还是差得太远,都说有自己的算法库和 turnkey 方案,但使用起来非常难上手。之前一直有关注凌鸥,也知道凌鸥是像峰祒一样的以做电驱为核心的国产 MCU 公司,所以正好想趁此机会,拿到开发板后将它导入到我公司的风机项目中,顺便做个评测。 周末就已经收到了凌鸥寄来的开发板,由于躺平在家,没来得及拆包,今天花了几个小时做了个初步接触,下面做个记录。

拆箱初体验
就包装来说,达不到 GD 、国民等这几家的开发板礼盒标准,逼格上有些许减分了,看来凌鸥与这些老牌上市公司在 MCU 业务推广上还是有一定差距的。开启包装后可以看到一片气泡膜简单包起来的蓝色开发板:

这是一套字母板,子板包含了 LKS32MC081C8T8 LQFP-48 封装的主控芯片,小板子上有个最小系统,仔细看并未找到晶振电路,查看手册上的内部时钟特性——32k 4M RC 时钟均带有出厂校正,可在常温下实现 32K RC 时钟±5%的精度,4M RC 时钟±1%的精度。其中 4M RC 时钟还开放有用户校正寄存器,可进一步将精度校正到±0.5%范围。32K RC 钟在-40~105℃范围内的精度为±20%4M RC 时钟在该温度范围的精度为±1%”。看到这数据非常吃惊,难怪有底气去掉了外部晶振,全温全压下频偏这么小的国产 MCU 还真牛,加分。子板还包括了 2 排插针以及一个 SWD 烧录调试口,复位脚并未直接引到调试口上而是预留了 1 个跳帽排针位置,子板丝印比较齐全且清晰,还带了一个大大的凌欧标记 非常引人注目。对于烧录调试口的电源引脚的丝印标注为 “5V”,我表示强烈反对这种做法,难道只能供 5v 电?对于 2.2 ~ 5.5v  宽压供电范围的芯片而言,明显这会令人产生误解,而且更有甚者,如果通过该口让调试器给 MCU 供 5v 电,这样会使得调试很不顺畅,动不动就连不上芯片了,所以这点体验很不友好,减分!
拆了子板后,将其摆在模板前方,接杯水回来再看该系统,会发现上下插接并未做“防呆处理”,像我们这种年纪大了的一不小心就会颠倒了 180 度,所以只能拍个照做个人工标记了“这是正确的方向”!


再来单看底板,整个布局还是挺合理的,右边为启停按键、指示灯、ADC 调节旋钮以及外接通讯和传感器接线插座,左边以及上方为电源输入及U/V/W 三相输出端,端子的用料选得十分合理,要是送几个配套的线鼻子就更好了,自己再用铜柱垫高了板子,方便后面调试使用。

资料整理及初步查阅
在微信群中获取到了一个资料包,本以为包含了改板子及芯片的所有官方资源,然而并没有,很多都是一句话“请到官网下载”。好吧,移步到官网资料下载区:
https://www.linkosemi.com/LKS08Series/list.aspx
按部就班地将相关的所有资料全部下载好并且按照目录整理了一番:

在整理的时候脑海里想过一个问题:凌鸥是否能像国民一样将每个芯片及开发板的所有生态资料统一整理好放置到网站中分享给我们用户?这样极为节省我们的时间。这里官方既然没有做这步,那我就将自己整理好的放到网盘中分享给大家吧。
整理完后,我将每份相关资料大致打开阅览了一遍,有下面一些零散的“吐槽宣言”想要抒发一下,希望原厂人员看到后可以重视。

这是官网上下载到的底层驱动库,为什么叫 BSP 呢?这样板子有任何关系?这难道不是芯片本身所有外设的 “标准库” 吗?作为芯片的底层驱动库,难道不应该有个 changelist 来说明一下我拿到的版本信息情况?好吧,又从微信群里资料包中发现了一份带有版本号和 changelist 说明的软件包 “LKS32MC08x_BSP_v2.1.zip”,但是解压一打开,这里面还包括了所有外设的例程,那是不是应该叫 SDK 包会更加合适些了呢?另外,变更说明一般都以时间倒序为方向去做记录显得更为合理。

关于开发板的硬件设计资源,官方提供了 AD 源工程文件,但实际未考虑到用户还更想要一份 PDF 版本的原理图,查看时更加直接、方便,我就遇到这么个尴尬的情况“公司未装也不让装 AD ,难道只能回去拿自己电脑打开查看?”,看到论坛中有其他用户也遇到类似的痛点。另外更加令人迷惑的是,硬件版本到底以微信中提供的资料包为准?还是以官网版本为准?仔细对过后才敢确认是以前者为准!难道官网资料也不是最新的吗?

在 LKS081 开发板说明文档中,建议增加外设及接口使用情况表,让用户一目了然可以知道哪些外设对应到了哪些引脚上,哪些连接器又是映射到在了哪些外设上,可以直接抛开原理图就能用起该板子了。另外,还发现板子的框图描述遗漏了 LED 的说明:

接着查看了芯片的 DS 手册和 UM 手册,大致了解了芯片的外设资源情况以及一些性能参数数据,整体来看板载的这颗 MCU 属于系列中较为低端的一颗,不带 CAN ,不带预驱、MOS 以及内置 LDO ,就是一颗通用型的电机专用 MCU 。从引脚分布来看,与 STM32F103/030 派系相差巨大,不用考虑 PTP 兼容了,就想了解它与哪家大厂的 MCU 可以做到引脚兼容吗?还是自成一派?电源脚只有一组,那么内部的数字电源地与模拟电源地就是在一起的了,这会影响电气隔离性能吗?

从启动来看,并没有看到 boot 切换脚,所以应该是不支持 ISP 烧录了,而只能支持 SWD 接口的 ICP 方式以及其它通讯口的 IAP 方式了。发现一个描述疑问,一般 SWD 接口都是建议 SWD_DIO 上拉 10k 电阻,SWD_SCK 下拉 10K 电阻来保证信号的稳定性:

通过查看产品培训手册,发现凌鸥还提供了一个 Wiki 社区版块:https://linkosemi.wiki.zoho.com.cn/%E5%A4%8D%E5%88%B6-LKS08x-%E5%9C%A8%E7%BA%BF%E5%8D%87%E7%BA%A7-1.html  
大致浏览了一番,觉得有这个想法还是不错的,只是需要花费心思好好维护起来,提供更多原厂技术干货。顺便想问一下:官方 QQ 技术支持群 以及 git 仓库 有没有? 在浏览技术贴时发现了一个有趣的点,提到该 MCU 包含 VTOR 寄存器,可以用于 IAP 升级过程的中断向量表重定义,据了解,标准的 M0 内核是不带该寄存器的,即每个异常的入口地址是固定的。在线升级应用,将擦除 FLASH 部分内容,用户可能擦除/破坏中断向量表。因此,此种应用,一般推荐关闭中断。而 LKS32MC08x 芯片增加了该功能,实现了中断向量表的重定义功能。即在升级过程中,可开启中断,编程更灵活。具体查看 UM 手册 FLASH 章节--FLASH 在线升级(IAP)部分的描述,至此刷新了认知,之前一直认为所有 M0 都不支持呢!

此外,所有资源看起来是应有尽有的,但深入测评会发现还缺乏一个 J-Link 器件插件包,用到 J-Link 选择器件时只能通过选择 M0 来代替了。

从点灯工程开始
有了前面的准备,可以开始实际运行一个软件工程了,先从点灯开始吧。于是仔细看了一眼底板上的 3 盏用户 LED 灯,发现并未标注编号丝印,并不清楚从上到下哪盏才是 LED1 ?这个体验也非常不好,减分!先打开库例程中的 GPIO 点灯工程,发现只有 KEIL 环境下的工程,而 IAR / GCC 的都没有,好在本人更加习惯用 KEIL 5.3x 了,但还是想吐槽一句:原厂应该给得更多些。

该工程包中的 .bat 脚本并不是删除中间文件的,也并不知道它用来干嘛,看起来没啥作用,另外除了没有 IAR / GCC 工程文件,.vscode 文件夹也没有包含在内(BSP 包中的其它例程是有的)。打开 KEIL 工程,映入眼帘的是分布十分不合理的工程目录结构,竟然将 .s 启动文件与 main.c 文件放置在同一个文件夹目录下,表示从来没有见过如此分类的,在时钟配置上,也没有像 st 的system_init.c 一样开启不同宏定义即可选择不一样的时钟配置,这里 RCC 时钟配置过于简单且固定为 96M 了,用户想要自己改变配置极为不方便,只能对着 UM 手册自己改写。再来一点点看工程中的代码,发现格式十分混乱,一点都没有规范化、格式化,感觉是十分匆忙地提供出来的过渡版本:

除了格式混乱,更加不能容忍的是,竟然连互斥作用的头文件宏定义都写错了,导致报出警告:

此外,整个库以及例程还没有考虑 AC6 的兼容性以及 C++ 代码的兼容性,只能用默认 AC5 编译,也不能愉快地添加 Arduino C++ 库了:

用默认工程代码正常编译后,使用 J-Link 选择 ARM Cortex-M0 设备,添加好芯片的烧录算法,下载程序并自动复位运行,发现并不能按照注释说明的将 3 盏 LED 灯全部点亮,调试后确定了 LED 的序号,也发现了问题点在于程序中定义的 LED1 的引脚被无故改写为了 P0.15 而非 P0.6 ,注释是对的可宏定义和初始化的地方都是错误的:

到这里,我的心情是烦躁的,为什么会有这么不负责任的库例程编制者?这会给我们用户带来多少困扰呀?就不怕我们还没入门就放弃了吗? 看了一下作者,名叫 Howlet Li ,晕菜,这不是凌鸥 CEO 么?真会拿我们开玩笑呀,下次别了!

再来看 MCPWM 和 ADC 例程
为了熟悉 FOC 的 2 大关键外设驱动,我又运行了 MCPWM 和 ADC 例程,工程代码有同样的通病,不再赘述。增加一点发现记录:在初始化代码中,寄存器配置与库配置混合了,难道不能将所有底层用到的全部封装成库 API 吗?实际用迅速冷却剂喷射芯片以及用热风枪吹芯片做模拟高低温试验,发现芯片的内部时钟确实没有偏差超过 1% 的,这点非常赞,几乎可以在全部工作温度范围内节省掉外部晶振电路了,就是不知道一致性怎么样,另外会不会有跳频现象(之前用的一家国产 MCU 就遇到过)。我是通过用逻辑分析仪抓取任意一个 PWM 输出引脚的波形来查验的:

另外滑动变阻器分压情况是 20K : 20K ,调节电阻器到底按理应该是 3.321v / 2 = 1.66v ,但实际 debug 中为 1.88 了 ,为什么相差那么大?不确定是测试方式问题,还是 ADC 配置或者计算问题:

相信大家转电机时都会使用到示波器,加上虚拟示波器上位机,这里我使用 J-Scope 和 FreeMaster 将 ADC 采样的滑动变阻器分压值以波形的方式显示在上位机中,具体设置可以参照以下链接:

  • https://blog.csdn.net/feiyingzaishi/article/details/102575492
  • https://blog.csdn.net/bjxdbz/article/details/120799718
  • https://zhuanlan.zhihu.com/p/413285767
我选用不添加驱动代码的方式将数据通过 J-Link 的 SWD 口上传,这种方式十分方便:


从点灯开始接触凌鸥芯片和开发板,还是希望国产电机 MCU 生态能够更上一层楼,一起努力吧!
我整理的资料下载链接如下,按需索取:
链接:https://pan.baidu.com/s/1CA39wgDdAheahgXVfWZ1cg?pwd=LKSM
提取码:LKSM

使用特权

评论回复
评论
鸥芯电驱港港 2022-7-11 21:50 回复TA
4、对应GPIO的模块例程不是Howlet Li做的,是我这边之前学习做的,太久了忘记替换了,目前我们的模块例程以有更新,更为规范,也支持AC6。 5、现在更新的各模块例程格式更为规范,但还是存在寄存器和库函数配合使用,这是因为有特殊原因,所以见谅。我们哔哩哔哩教学视频讲解全部以库函数形式教学,如果需要可以参考视频教学的配置,自己调用库函数配置一下哈。 
鸥芯电驱港港 2022-7-11 21:40 回复TA
感谢您的测评分析和一些宝贵的建议。 1、每份相关资料大致打开阅览了一遍,有下面一些零散的“吐槽宣言”想要抒发一下。回答:我们后面会注意将其删除,这是我们版本更新后,没有删除的文件。 2、变更说明一般都以时间倒序为方向去做记录显得更为合理。回答:感谢您的建议。 3、硬件资料以官网为准,PDF板后面我们会提供,感谢您的宝贵建议。 
沙发
yangxiaor520| | 2022-6-14 08:21 | 只看该作者
这个电机专用IC有什么不同呢?

使用特权

评论回复
板凳
夜声| | 2022-6-14 20:40 | 只看该作者
分析到位,还有没有复位按键

使用特权

评论回复
评论
鸥芯电驱港港 2022-7-11 21:52 回复TA
复位按键demo不带的哦,一般很多应用上是不带复位按键哦。 
地板
huquanz711| | 2022-7-15 07:30 | 只看该作者
和普通MCU有什么区别呢?

使用特权

评论回复
5
wdy1488| | 2023-11-12 15:57 | 只看该作者
我公司也是做高速风筒,**也能得到这样的开发板。

使用特权

评论回复
6
小小蚂蚁举千斤| | 2023-11-16 13:49 | 只看该作者
点灯真的所有的开始

使用特权

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

本版积分规则

35

主题

204

帖子

10

粉丝