对于所有对意法半导体(STMicroelectronics)的微控制器感兴趣或感兴趣的人,我想介绍一下我的小型业余爱好项目。
Habré和geektimes都已经有很多关于STM32F系列微控制器的文章,例如: 便宜的STM32开发板+ Arduino IDE , 试图与STM32交朋友,以及如何与STM32交朋友 。 总体而言,它们很好地涵盖了该主题,但有一点是……在所有这些文章中,都考虑了现成的电路板和该电路板上的一个特定控制器。 对于那些想与不同控制器甚至是面包板一起玩的人呢? 例如,我所知道的许多带有STM32F4控制器的板(相同的STM32F4-Discovery)都无法插入面包板。 但是我个人想要这样的东西(注意,所有图片都是可点击的):
同时,正如我已经写过的,我不想连接到特定的控制器,但是我希望能够轻松地替换它。 那些对我如何认识这些不太普通的收藏夹感兴趣的人,我要猫。
简介(受文章评论的启发,因此在阅读前请略过)讨论是否要使用带有连接器的面包板是有争议的。 当然,从一定数量的组件开始,它们变得不舒服。 但是,尽管组成部分不是很大,并且原型设计初期的实验数量仍然很大,但我认为面包板还是很方便的。 在这里,如果您想使用STM32,伏击就在等待我们-与Atmega不同,它们根本不在DIP封装中。 您可以购买现成的演示板,但这里又有一个埋伏-这些带有较旧控制器的板大多数都不能用双梳子卡在面包板上。 也就是说,使用现成的演示板,我们被迫与该系列的年轻控制器一起工作(请参阅DIP版本或Blue Pill中的同一Nucleo )。 第二种方法是制作专用适配器。 本文讨论了第二条路径。
立即显示最终结果。 这些是针对不同情况的小型双面围巾,可以在中东王国订购印刷(中国人丝毫不反对用面板设计印刷双面板):

一组(右侧)只是用于LQFP32 / 48/64外壳的面包板普通适配器,而第二组(左侧)也是适配器,但带有JTAG连接器,电源,低频和高频石英以及一个复位按钮。 所有其他控制器引脚都在梳子上。 一般来说,最低限度。 不幸的是,JTAG连接器不是标准的,因此还包括从JTAG-20到同一JTAG-10的适配器板。
这些板子很容易在家里用吹风机焊接,因此,如果您有多个控制器,多个板子和大小为0805的无源组件,则可以在合理的时间内获得以下信息:

在我看来,这赋予了创造力的良好自由。 如果有人似乎已经用尽了话题,那么这里是github仓库的链接。
但我想进一步一步一步地告诉您如何过上这样的生活。 吸引注意的图片(问题的图形说明):

分散有控制器(L0,F3,F4系列),电源,USART-USB转换器,面包板。 我想使指示灯闪烁。 此步骤非常简单。 我们从第一套中取出任何控制器和适配器卡,然后用吹风机焊接。 接下来,您需要有关连接电源,编程器和石英的文档。 ST的命令已经完成,所有内容都在页面上,其中包含所选控制器的文档。 例如,对于STM32F303K8,我们只需要一个文件即可: AN4206:STM32F3系列硬件开发入门 ,其中有电源电路,振荡器和编程器,您可以基于它们建立这样的模型:
该控制器没有外部低频石英,因此我仅连接了16 MHz的高频。 为了进行编程,使用了标准的JTAG-20连接器,该连接器配备了ST
ST-LINK / V2的标准编程器。
如果您使用的是Linux内核中已经有驱动程序,但是您需要手动向/etc/udev/rules.d文件中添加一些规则,例如,请参见此处
由于本文主要针对硬件部分,因此我仅简要提及软件部分。 操作系统:Fedora25。开发环境: STM32的System Workbench是基于OpenSTM32社区的Eclipse的完全免费的系统。 唯一的下载时间-必须在http://www.openstm32.org上注册。 使用图形实用程序STM32CubeMX进行建模,记录和生成示例非常方便。 例如,上图中的控制器配置如下所示:

具有这些方案的文件也位于存储库中。 例如,对于STM32F303K8,请参见此处
STM32的System Workbench具有一个内置的,相当高级的项目向导,该向导可生成初始项目结构,并且可以选择在项目中包括:低层控制器驱动程序(CMSIS),HAL(硬件抽象层)库,FatFS,FreeRTOS。 我本人使用在HAL之上运行的面向对象的驱动程序库。 谁在乎,请看这里 。
这是使用该库的代码示例,该代码使计时器上的LED指示灯闪烁(在中断过程中),并记录(通过USART-USB转换器到工作站控制台)连接到实时时钟的计数器的状态。 所有这些都与Arduino的思想有点相似,但是我只是想自己编写这类东西。
这是使用功能强大的STM32F410RB控制器的示例:
同样,主要文档为AN4488:STM32F4xxxx MCU硬件开发入门 ,其中包含所有必需的连接方案。 第二个重要文件是AN2867:STM8AF / AL / S和STM32微控制器的振荡器设计指南 ,其中详细介绍了高频振荡器的连接图。
自然,不断地对这些方案进行防护非常耗时,因此我决定制作下一个可能的通用围巾,以实现这些方案。 由于具有不同系列的控制器,但在相同情况下(例如,在LQFP64情况下均为STM32F303RB和STM32F410RB)具有相同的结论(电源电路中的微小差异除外),因此实现了多功能性。 这些差异导致:

所有带符号面额的元素对于不同的控制器都是相同的,但是必须根据具体型号选择P30,P31,P47等元素(其中数字表示引脚号)。 结果,面包板将如下所示:

这是一个很小的改进。
→ github上的项目
许可证:GNU通用公共许可证,版本3
Eagle Cad准备的电路和电路板。 备受推崇的DiHalt 在该系统上有一系列精彩的文章。 可以从官方网站上下载免费版本的Eagle Cad家用版。
我邀请所有人参加该项目。