查看原文
其他

STM32中有脚位少又带USB或CAN的芯片吗?

MilerShao 茶话MCU 2022-09-11

             【 温馨提示:手机微信阅读时,文中图片可点击放大观看。】

    STM32家族中有脚位少又带USB或CAN功能的芯片吗?答案是肯定的。

    目前STM32家族9大系列中的STM32F0系列中就有20脚并带USB和CAN外设模块的芯片,他们是STM32F042Fx或STM32F070Fx [x识具体料号而定]。 


    刚好最近有人询问希望从STM32芯片中挑一款脚位少且带USB设备功能的芯片,为其推荐了STM32F042F6P6。 当使用STM32CUBEMx去尝试对STM32F042F6P6做管脚配置定义时,突然发现有点不对劲!左边的外设管脚配置栏里的USB灰灰如也,呈无效状态。数据手册有误还是STM32CUBEMX配置工具不健全?这种情况下,优先研读数据手册为准。打开其数据手册,手册上赫然写着各类片上资源,USB模块就是其中之一。


          数据手册里的管脚图如下:

    从管脚图上不难看出第17、18脚的PA9/PA10与PA11/PA12的管脚安排定义的颇为别具一格。结合管脚图下方的那句说明与管脚描述,我们可以知晓,对于20脚的SMT32F042来讲,第17、18脚的默认就是PA9/PA10,可以复用为表格中标明的相关外设功能脚,但不能作为其它额外功能脚,比方USB端口。如果通过SYSCFG控制器进行相关配置,可以将第17、18脚的功能重映射为PA11、PA12,并可复用为表格中标明的其它外设功能脚,也可以作为USB的端口的额外功能脚。

    看到这里我们基本明白了刚才在STM32CUBEMX配置那里看不到有效的USB外设的原因,很可能是缺少SYSCFG控制器的相关配置。回到STM32CUBEMX再看看。在PIN CONFIG栏的SYS位置,点开即可看到关于PA11/12代替PA9/10的选项,勾选后立即看道另外一番情景。USB外设也由灰色无效状态转为有效状态,然后可以继续做USB相关配置的勾选。


    显然,这颗小小20脚芯片是支持USB FS设备功能的,注意它支持DEVICE功能,只做从机,不能做主机。

    前面还提到STM32F042F6P6也支持CAN功能,在配置时我们不难发现,开启了USB就没法同时开启CAN,反之亦然。这不难理解,毕竟有时鱼和熊掌很难兼得。

    如果要配置CAN功能,同样也得在SYSCFG外设那里要先做上面提过的第17、18脚的重映射操作,否则没法做CAN的配置。

    STM32的管脚复用是其一大特色,灵活可调的特性给工程应用带来极大方便的同时,往往也会给初次使用者带来些许难度或困惑。幸好ST官方出品了STM32CUBEMX图形配置工具,可以解放很多研究手册的工作量。不过在使用CUBEMX配置遇到疑惑时,还请回头看看数据手册找原因或做确认。

‍最后顺便提下基于STM32F0系列MCU开发的三个参考软件代码库:

STM32Snippets:基于寄存器访问级的STM32芯片外设应用的示例代码集合。对于希望兼顾程序容量和性能最优化的用户来说是最佳选择。对于那些之前从事8位 MCU开发而想过渡到32位MCU应用的用户来说,也是个不错的选择。STM32F0 MCU参考手册中书写了许多STM32Snippets F0示例代码,可以帮助理解文字描述,非常值得一读。

 Standard Peripheral Library:即标准外设库,估计很多人都不陌生了。基于各STM32系列的外设操作的通用函数集合,尤其在STM32系列内部可以非常方便地实现移植。

 STM32Cube嵌入式软件库:拓展和强化了STM32产品各系列间实现可移植的通用性。除了标准库具有的外设操作函数库外,还集成了大量中间件函数库与参考工程例程,比如FATFS,RTOS,USB,EMWIN等应用的软件应用套件。

    当然了,上面三种参考代码库可以认为是属于不同风格、不同量级的产品,最终选择哪一款结合你自己的工程项目需求和个人偏好即可。

    长按上方精灵鸟可识别二维码并可关注本公众号

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存