0
\ \ begingroup \美元

我想在项目中使用我的第一个STM32 MCU。该项目涉及一些外围设备(UART/SPI/I2C),需要在这里和那里做一些数学运算,主要是位移位和/或整数计算,因此我为自己找到了一个带有所需外围设备、内部振荡器、足够闪存程序空间和RAM的MCU,用于我的应用程序。

所以我找到了这个小男孩:STM32L051K8T6在LQFP-32,数据表

我浏览了数据表,一切似乎都很清楚,我没有问题来挑选新的东西,IDE和所有,然而,我有两个问题,我不能谷歌明确的答案,无论如何社区可以更有帮助:

  1. 我希望能够通过社署编程。这是两线通信,对吧?SWDIO SWCLK。所以,在理论上,如果我为MCU提供电源,我只需要2个引脚将自己连接到MCU(或者也可能重置?理由是连接,很明显)。我是说,我不需要大的10针连接器之类的?很像Atmegas通过UART(需要RX, TX和DTR脉冲到MCU复位)。google ST-Link v2 pinout只显示了这两个和一个我不知道的“SWIM”pin。(在数据表中从未提及;我实际上有一个ST-Link v2,甚至一个核板与板上的程序员,但,再次,它从来没有伤害问聪明的人)。

  2. SWDIO和SWCLK被标记为引脚的“Alternate functions”。因此,我假设,我将无法通过SWDIO/SWCLK编程,因为引脚没有配置为SWDIO/SWCLK默认。我需要使用BOOT0吗?从内部存储器的引导加载程序激活SWD引脚为我编程闪存?在这个特定的情况下,也没有BOOT1引脚(Ctrl+F“BOOT1”在整个数据表中没有产生有用的提及)。

  3. 我想有用户可更新的软件。通过USB。使用ATMega很容易做到,我刚刚加入了一个USB-UART CP2102N,它就像一个魔咒,可以整天更新软件。我想我可以为STM32编写我自己的UART引导程序,这只是一个决心和服用药片的问题,在这个过程中保持清醒。但如果有更简单的方法,我不想重新发明轮子(尽管nucleo上的编程部分看起来比CP2102N芯片大得多)。在使用UART时找到此文档:STM32引导装载程序UART看起来很有希望,我猜用CP2102N编程STM32似乎不太困难吧?

当然,我也在youtube上看了一些关于STM32的视频,但它们基本上是“闪烁的”与nucleo,而不是与独立的设备,所以没有太多的谈论数据表,替代功能,通过寄存器控制东西;无论如何,设置I2C或SPI都不是问题。基本上,我没有问题控制寄存器和东西,我只需要让它先运行。这就像我能开车,但我没有启动引擎的钥匙——或者我有钥匙,只是我没有意识到。为了不让汽车一点火就爆炸,我宁愿先问问题。

谢谢你!

\$\endgroup\$
2
  • 1
    \ \ begingroup \美元 你需要下载参考手册。你所有的问题都会得到解答。 \$\endgroup\$- - - - - -卡尔特曼 2月21日13:30
  • \ \ begingroup \美元 简单回答:根据参考手册,社署是开箱即用的。 \$\endgroup\$- - - - - -卡尔特曼 2月21日13:41
2
\ \ begingroup \美元
  1. 这是正确的。你只需要SWDIO和SWCLK。大多数时候NRST连接是不需要的。调试器可以使用数据和时钟引脚发送某种软复位序列。如果复位后SWDIO & SWCLK引脚被配置为GPIO引脚(与你的第二个问题有关),可能需要硬件复位引脚,从而阻止调试。我从来都不需要它,但如果PCB中有空间,在调试头中包含它仍然是明智的。还有SWO引脚,如果启用,它提供额外的调试输出。这不是必需的,而且中国的ST-Link克隆没有在连接器上击穿引脚,即使他们的固件支持它。
  2. 重置后,所有与调试相关的引脚都是可用的,除非您在您的固件中为其他目的配置它们。在一些型号中,这包括JTAG引脚。如果您只是在固件开始时将它们配置为GPIO引脚(或用于其他目的),调试器可能没有时间启动调试会话。在这种情况下,使用硬件NRST引脚可能是必要的。引导引脚与调试引脚配置无关。它们配置地址空间的映射。大多数情况下,您将BOOT0连接到GND以从flash启动。也可以从RAM或内部工厂引导加载程序引导。
  3. 正如我在回答2中所说的,STM32设备具有内部引导加载程序,可以使用BOOT0引脚激活它(闪存中有正确的选项字节)。也可以从用户代码跳转到这个工厂编程的引导加载程序。虽然有点复杂,但可以在web上找到示例。一些设备还提供USB DFU引导加载程序(例如STM32F042)。使用这些产品时,您甚至不需要使用USB串行转换器。工厂编程的引导加载程序可能还支持其他接口,如SPI或CAN,但我不确定,也记不起来了。您需要查看特定的设备文档。

顺便说一下,SWIM引脚用于编程和调试STM8部件(是的,ST-Link能够做到)。与STM32部件无关。

\$\endgroup\$
2
  • \ \ begingroup \美元 所以,在理论上,我甚至不需要引导到引导加载程序来编程的东西,它是通过SWD编程,即使是在运行flash程序。这种说法正确吗?如果我使用SWD,我不会将SWD引脚用于其他任何东西。我仍然需要连接到usb终端用户更新固件。我会为它写一个小程序,没有问题,所以没有USB-Serial是不可能的,如果它实际上可以通过UART编程闪存。除非我把程序放在microSD卡上,我有(然后是SPI) \$\endgroup\$- - - - - -伊利亚 2月21日14:01
  • 1
    \ \ begingroup \美元 正确,ST-Link可以停止并编程(或调试)一个从flash运行的STM32,假定SWD引脚处于默认状态,没有配置为其他目的。您的STM32L051K8T6似乎没有USB,因此终端用户可能需要一个USB到串行转换器来访问工厂编程的引导加载程序。请注意,有些型号,如STM32F103,有USB硬件,但它们缺乏出厂编程的USB引导加载程序。 \$\endgroup\$- - - - - -Tagli 2月21日14:40

你的答案

点击“发布你的答案”,即表示你同意我们的服务条款隐私政策饼干的政策

不是你想要的答案?浏览其他带标签的问题问你自己的问题