工欲善其事,必先利其器。调试和开发MM32F0140这种小巧的芯片,还是需要小巧的板子去适配,搞起来才巴适。
我曾经定义过POKT
(口袋)系列和NANO
(微小型)系列作为低成本微控制器的开发板套件,但POKT
系列的开发板受定义限制,需要把引脚按照编号整整齐齐地引出来,对走线的面积要求较高;而NANO
系列还需要配套扩展板才能引出方便易用的2.54mm间距的排针,这两套板子在某些情况下,实际应用起来的成本并不低。
今年半导体市场的整体行情不大好,大家做板子用料都比较抠门,为了进一步降低对这种小封装芯片开发板的成本,我又定义了更轻量级的FTRH
(羽毛)系列开发板。FTHR-F0140
是FTHR
系列的第一块板子,这个板子上连USB转UART的CH340E芯片和Type-C的USB插座都省掉了,整块开发板的尺寸兼容DIP40封装的8051单片机。如果不是因为F0140微控制器要用到CAN总线接口,可能连这个SOP-8引脚封装的PHY芯片也省掉。FTHR-F0140
电路板的外观如图x所示。当然,这里也要点名感谢我的同事Hao,熟练使用KiCAD帮助我完成了PCB的设计工作。
figure-fthr-f0140-a
图x FTHR-F0140电路板实物效果图
到目前为止,主打抠门省钱的FTHR
系列开发板,已经有了3个成员,按照创建的时间顺序,分别是FTHR-F0140
、FTHR-F0160
、FTHR-G0140
。如图x所示。
figure-fthr-boards-a
图x FTHR系列开发板全家福
其中,FTHR-F0160
(左1)在FTHR-F0140
(右1)基础上增加了硬件支持的USB Device以及对应的Type-C插座,FTHR-G0140
(左2)在FTHR-F0140
基础上移除了CAN接口电路,成为了目前FTHR
系列中最抠门的电路板。
使用FTHR-F0140
进行开发,还需要配合调试器(J-Link)、USB转UART(CH340G模块)。这个电路系统连起来,如图x所示。
figure-fthr-f0140-runtime
图x FTHR-F0140开发板开发场景实物图
这里使用了标准的JLink,以及转换成miniJTAG插座的套件。如果开发者手头上只有各种开源版本的Link调试器,也可以通过2.54mm间距规格的杜邦线从FTHR-F0140开发板的扩展引脚直连至SWD引脚。
FTHR-F0140
开发板使用MM32F0144C4P
微控制器,使用Arm Cortex-M0处理器内核,最高可运行在72MHz主频,片上集成64KB Flash和8KB RAM,LQFP32封装,以及众多的通信类外设、模拟类外设和定时器等。图x中的表格列出了MM32F0140微控制器的所有选型。
figure-mm32f0140-ps
图x MM32F0140选型
图x中展现了MM32F0140微控制器的最小系统,其中包含了复位按键的复位阻容电路、晶体振荡器,以及最简的电源连线。
figure-sch-mcu-core
图x MM32F0140最小系统
这里要注意的是,FTHR-F0140
微控制器使用了12Mhz的晶振。因为MM32F0140
微控制器上没有集成USB外设,所以不强制开发者在设计自己的最小系统时使用 12MHz频率的晶振(例如,也可以使用8MHz晶振),这里只是选了比较容易备货的物料而已。
FTHR-F0140板子上设计了一个产生3.3V电压的LDO,可以从外部接收5V的供电,经过LDO转换成3.3V供给MM32F0140微控制器芯片。但LDO转换产生的3.3V供电默认是不对板外供电的(在扩展插座上设计了3V3
的引脚),需要短接J3
插座方可。
这个设计的意义在于,考虑到一种特殊的基于CAN总线的应用场景,当需要将微控制器本身的电源域同CAN总线上的电源域进行隔离时(电源干扰相关),可拆掉板子上的LDO,再短接J3
插座,此时微控制器使用的3.3V供电可以通过扩展插座上的3V3
引脚供电,而CAN总线使用自己的5V供电,两个供电域没有直接耦合。此时,也可以验证MM32F0140微控制器在宽电压供电情况下的工作状态(不限定是3.3V)。
FTHR-F0140
板子上使用了1.27mm间距的miniJTAG插座,以节约PCB面积,也更精致,这借鉴了一些国际大厂设计开发板常用的做法。但为了适配miniJTAG插座,还需要配套1.27间距的软排线和对应的转接电路板,对于非专业开发者来说,也可能是一笔开销。本着抠门的原则,这里将调试端口需要使用的SWCLK
、SWDIO
、RESET
等信号线引出到扩展插座上。如图x所示。
figure-sch-debug-swd
图x FTHR-F0140开发板的调试器接口
FTHR-F0140
开发板上集成了2个LED灯:
MM32F0140
的PA15
引脚。FTHR-F0140
开发板上集成了1个复位按键SW1,对应MM32F0140
的硬件复位信号线。无可编程按键。
FTHR-F0140
开发板上集成了CAN通信PHY芯片的电路,并可通过J2
插座选择是否由本开发板向CAN总线接入120ohm的电阻。如图x所示。
figure-sch-can-if
图x FTHR-F0140开发板上的CAN接口电路
关于CAN接口电路,这里还留了一个巧妙的设计,如果不想焊接PHY芯片(进一步节约成本),但仍想试用CAN总线接口,可以将PHY芯片焊接位上的标记的两个引脚用焊锡或者0ohm电阻短接起来,此时仍可使用J1插座对外连线。但要注意,此时J1插座上的CANH和CANL已经不是CAN差分信号了,而是CAN_TX
和CAN_RX
,分别对应于MM32F0140的PA10
和PA9
引脚。如图x所示。
figure-pcb-can-if
图x FTHR-F0140开发板上CAN接口的直连应用
灵动官方的MindSDK(https://mindsdk.mindmotion.com.cn)已经支持了MM32F0140微控制器,但目前仅有MINI-F0140
这块板子在官方的支持清单中对应MM32F0140
微控制器。但可以使用MINI-F0140
板子的样例工程运行在FTHR-F0140
开发板上,因为MINI-F0140
开发板使用的是8MHz的晶振,而FTHR-F0140
开发板使用的是12MHz的晶振,此处需要调整一下clock_init.c
文件中CLOCK_BootToHSE48MHz()
函数中关于配置使用发生器PLL的代码,指定RCC_PLLCFGR_PLLDN
的值为7
,从而基于12MHz的晶振信号源产生48MHz的主频。
void CLOCK_BootToHSE48MHz(void)
{
//RCC- >APB1ENR |= (1u < < 28u); /* enable PWR/DBG. */
//PWR- >CR1 = (PWR- >CR1 & ~PWR_CR1_VOS_MASK) | PWR_CR1_VOS(1u); /* 1.65V. */
/* enable HSE. */
RCC- >CR |= RCC_CR_HSEON_MASK;
while ( RCC_CR_HSERDY_MASK != (RCC- >CR & RCC_CR_HSERDY_MASK) )
{
}
/* F_clko = F_refin * N/(M*P), F_refin = 12M. */
RCC- >PLLCFGR = RCC_PLLCFGR_PLLSRC(1) /* (pllsrc == 1) ? HSE : HSI. */
| RCC_PLLCFGR_PLLDN(7) /* N = DN+1. */
| RCC_PLLCFGR_PLLDM(1) /* M = DM+1. */
| RCC_PLLCFGR_PLLDP(0) /* P = DP+1. */
| RCC_PLLCFGR_PLLLDS(1)
| RCC_PLLCFGR_PLLICTRL(3) /* 10uA. */
;
...
}
之后,就可以使用MindSDK中为MM32F0140
微控制器提供的芯片头文件、启动代码、驱动程序,以及海量的样例工程和多操作系统平台多工具链的支持。
figure-mindsdk-examples
图x MindSDK中支持MM32F0140微控制器的海量样例工程
全部0条评论
快来发表一下你的评论吧 !