便宜的STM32开发板+ Arduino IDE UPD 08/17/2017

图片

要升级您的Arduino项目吗?使它们更快地工作,使测量和调整更加准确,并添加错误(在新设备中不可避免)。然后,本文适合您。

Arduino主题越来越吸引着人类的思想,但是迟早我们会面对这样一个事实,即我们缺少某些东西,例如预算/大小/ 端口引脚 /位容量/性能……正如一个明智的人所说:“无论谁想要,他都在寻找机会。谁不想找原因。”

好的人理解了这一点,并慢慢将STM32附加到arduino主题上,因为许多arduino板所基于的八位AVR微控制器不能总是应付任务。

视频格式的本文摘要:



好吧,更少的歌词,更接近主题。在本文中,我将考虑基于STM32F103C8T6微控制器的廉价调试板

图片

首先,让我们比较STM32板的主要参数及其价格类似物-Arduino Nano V3.0:

  • 工作频率为72 MHz,而arduino为16;
  • 闪存的容量为64 KB,而不是32 KB。
  • RAM,它是RAM(存储变量的地方),STM32多达20 KB,arduinka只有2;
  • 快速的12位ADC,而使用AVR微控制器(通常是大多数)的Arduino板则使用10位。这意味着在STM32的情况下,该函数为analogRead(*);将返回0..4095与0..1023,在第一种情况下将导致更准确的测量;
  • 16- , 8- Arduino , , analogWrite(*);pwmWrite(*); 0..65535, 0..255. , , ;
  • USB, Arduino 2 ;
  • — 2 3.6( 2 AA ), 2.7...5 ;
  • — 1.9 1.8().

显然,基于STM32的调试板在价格方面在所有方面都优于Arduino Nano,但同意10美分的价格对于出色的性能来说是个好价钱,但是对于STM32所塞满的外围设备,我完全不了解DMA的价值或集成在微控制器中的实时时钟。

图片

所有这些使该板除了一件事之外,在所有方面都极具吸引力-对于像我这样的初学者来说,STM32主题似乎太耗时,整个站点都专门为这些微控制器编程。但是,如果您使用Arduino IDE成为STM32的朋友,那么进入门槛将降至极低的水平。尽管正如他们所说,“每桶蜂蜜中都有药膏”,但下面的内容更多。

让我们开始准备用于Arduino IDE的开发板。首先需要做的是将特殊的引导加载程序上载到微控制器,这将使您可以通过硬件USB直接从开发环境中刷新板。为此,将上跳线(也称为“ BOOT0”)移动到位置“ 1”:

图片

BOOT0和BOOT1跳线有什么作用?
, STM32 , (system memory), , USB to UART , ST-Link V2.

image


接下来,我们需要一个从USB到UART的适配器。值得记住的是,STM32是3.3V逻辑,不能保证与5V兼容,因此建议使用USB转UART,它具有选择3.3 / 5V逻辑的工作模式的能力。我使用了基于CH340G的廉价适配器:

图片
*如您所见,制造商并未使用助焊剂冲洗,当然,它不会影响工作。

我按如下方式将开发板连接到USB转UART适配器:

G <-> GND;
5V <-> 5V;
PA10 <-> TXD;
PA9 <-> RXD。

图片
*板上的PA10 / PA9简单地标记为A10 / A9-这些端口是第一个USART硬件,板上有3个端口,也有2个硬件I2C和2个SPI。

为了方便起见,我使用5 V电压为该板供电,而使用3.3 V的电源则板上有一个引脚“ 3.3”。注意,5 V可能会轻易禁用微控制器,因此请注意连接。

下载,安装并运行Flash Loader演示程序(可在本文的归档文件中找到):

图片

选择适配器的COM端口号(在我的情况下为COM43),然后单击“下一步”:

图片

由于我有一个新的微控制器,所以仍然没有安装没有人向它写任何东西(当然,除了制造商本身),然后默认情况下有读取保护,程序警告我们,如果单击“删除保护”按钮,则将清除闪存,即是否存在某种固件-她会退休。就我而言,那里没有什么用处,所以我大胆按下。然后,我看到以下内容:

图片

单击“确定”:

图片

由于我的调试板基于STM32F103 C8微控制器-有64 KB的闪存,所以还有一个STM32F103 CB微控制器,其中闪存是后者的两倍。

然后单击“下一步”:

图片

再次单击“下一步” ,我们将看到以下窗口:

图片

选择“下载到设备”并单击“ ...”:

图片

将文件类型更改为* .bin并打开文件“ generic_boot20_pc13.bin”(也存在于存档中),该文件可以从STM32duino-bootloader项目中获取

然后,单击“下一步”按钮,在引导加载程序固件之后,我们将看到一个绿色指示灯:

图片

然后,对于Arduino IDE开发环境,我们需要下载一个特殊的STM32内核(也在本文的存档中)。这里有一个细微差别,在撰写本文时,内核无法在1.6.5以上的开发环境版本上运行,我在此处下载了 1.6.5-r5
该内核已经过测试,可以在Arduino IDE版本1.6.9上运行

接下来,将内容解压缩到“我的文档” \“ Arduino” \“硬件”:

图片

就我而言,完整路径如下所示:“ C:\ Users \ RSK \ Documents \ Arduino \ hardware”

当然,系统无法确定设备的系统,因此您仍然需要在板上安装驱动程序。我们转到文件夹“ My Documents \ Arduino \ hardware \ Arduino_STM32 \ drivers \ win”(或“ drivers \ win”,如果是本文的存档),并以管理员身份运行文件“ install_drivers.bat”:

图片

之后,顶部的跳线(即“ BOOT0”),将其置于“ 0”位置,然后通过microUSB电缆将开发板连接至计算机:

图片

应在设备管理器中将其定义为“ Maple DFU”或“ Maple Serial(COM *)”:

图片

不清楚第一次连接后的原因在不同的计算机上,板子的定义有所不同,但要紧的是,我们继续配置Arduino IDE。

我们启动开发环境,然后启动Tools->

图片

Board- > Boards Manager:在这里,您需要为Arduino Due开发板安装内核。选择最新版本,然后单击“安装”:

图片

然后依次单击“ 工具”->“板”->“通用STM32F103C”,变体:“ STM32F103C8(20kRAM。64kFlash)”,上传方法:“ STM32duino bootloader”,端口-板的COM端口号,总体而言,一切如屏幕截图所示:

图片

一切就绪,开发板已准备就绪,可以在Arduino IDE开发环境中进行固件和编程。让我们从“缝制”到内核的示例中缝制一些草图,转到文件->带有草图的文件夹->硬件-> Arduino_STM32-> STM32F1->库-> A_STM32_Examples->数字->闪烁:

图片

经典的“ Hello World”在微控制器领域。我们将PB1更改为PC13,因为板上的LED连接到此端口:

图片
*顺便说一句,它在PC13支脚上以低水平点亮。

我们按下“下载”按钮,固件完成后,开发环境将显示如下内容:

图片

“完成!
重置USB以将其切换回运行时模式
,下载后重置错误:usb_reset:无法重置设备,win错误:找不到指定的文件。

但是固件成功加载,尽管并非总是如此,有时Arduino IDE会给出其他消息。

找不到DFU设备
, :

image

«dfu-util — © 2007-2008 by OpenMoko Inc.
Couldn't find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY»

, .


正在搜索DFU设备[1EAF:0003] ...
:

image

«Searching for DFU device [1EAF:0003]…
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...»

, . Arduino Pro Mini.


现在,我在本文开始时就写了“美中不足”,由于某种原因,在开发环境中并非总是可以刷新电路板,甚至更多的是,它并不总是由计算机决定的。我自己决定如下,在下载固件之前(单击“下载”按钮之前),在板上单击“重置”,然后在固件之后,重新启动板。在这种情况下,缝制木板的可能性的百分比为99%。目前尚不清楚为什么它会那样工作,但这是事实。我认为早晚会纠正此问题,并且一切都会根据需要自动重新启动。为了更快地解决此问题,必须增加这个出色的STM32调试板的社区,因此请与朋友(尤其是程序员朋友)共享本文。

关于引脚:

可点击
, ( ):

image
() www.stm32duino.com/viewtopic.php?p=11137

, :

digitalWrite(PB0, LOW);
analogWrite(PA8, 65535);pwmWrite(PA8, 65535);
analogRead(PA0);
LiquidCrystal lcd(PB0, PA7, PA6, PA5, PA4, PA3);


docs.leaflabs.com/docs.leaflabs.com/index.html Arduino IDE, .

, :
Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c\board.cpp

, :
  • , analogWrite();pwmWrite(); — PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, , ;
  • , analogRead(); — PB0, PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.


. , 1.9 .

, PA12/PA11 D+/D- USB, , , 2- , .


电路板:



好吧,最后:

图片

嗨geektimes.ru
//https://github.com/mk90/LiquidCrystalRus

//STM32  !

#include <LiquidCrystalRus.h>

LiquidCrystalRus lcd(PB9, PB8, PB7, PB6, PB5, PB4);

void setup() {
  lcd.begin(16, 2);
  lcd.print("");
  lcd.setCursor(0, 1);
  lcd.print("geektimes.ru");
}

void loop() {
  lcd.setCursor(14, 1);
  lcd.print(millis() / 1000);
}



链接:
存档到文章
Roger Clark的一个朋友的门户网站,致力于移植STM32,问题/建议/谢谢,都在那里;
https://github.com/rogerclarkmelbourne/Arduino_STM32 ;
http://docs.leaflabs.com/docs.leaflabs.com/index.html-Roger以此项目为基础,所以有很多有用的东西,尽管是英文。
可以在这里下载Arduino IDE版本1.6.5-r5 ;
我的文章在某种程度上与“ STM32 vs Arduino ”朋友@RaJa相交STM32F103C8T6上的
数据表; 我在geektimes上的所有出版物UPD 07/15/2016



该内核经过测试可在Arduino IDE版本1.6.9上运行:
geektimes.ru/post/277928/#comment_9532576

PS
还有什么忘了
:

image

, .

, microUSB :

image

, , .

Source: https://habr.com/ru/post/zh-CN395577/


All Articles