01 STM32F4x1开发板


STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython .下面测试一下这款基于STM32F401的模块是否可以下载MicroPython固件,并进行开发。

资料下载链接:https://pan.baidu.com/s/1-EVa3bFTcsqEJSJUCQ2IBQ

提取码:782h

▲ 资料下载在暖色

firmware_4m_flash_stm32f401ce_v3.dfu
firmware_4m_flash_stm32f401ce_v3.hex
firmware_internal_rom_stm32f401ce_v3.dfu
firmware_internal_rom_stm32f401ce_v3.hex

▲ 电路板上的芯片为STM32F401CCU6

1.加入PCB的USB

(1)出现Flash Disk

加入PC之后,出现量 mcudev SD Flash Disk USB device. Windows提示是否需要将它进行格式化。

▲ 格式化新出现的F硬盘

▲ 出现MCUDEV SDFlash Disk USB Disk

在电路板上具有 W25Q32 (32M-bit/4M-byte)Flash。

▲ 电路板上的Flash

(2)进入DFU模式

直接接入PCB之后,没有出现在 利用STM32F405RG制作pyBoard实验板 所对应的STM Device in DFU Mode设备。因此,也无法使用DfuSel 下载来自MicroPython 中的 Firmware for pyboard v1

需要将SWD接口中的BT0与3.3V短接,然后在按动RST,此时模块边进入了DFU模式,此时可以使用DfuSel进行编程。

▲ 将BT0与3.3V短接,按动RST进入 DFU模式

下图显示了利用DfuSe Demo(v3.0.5)下载STM32F401的固件:

▲ 使用DfuSe Demo(v3.0.5)下载固件

2.使用UART1进行REPL

下载完之后,重新RST,但是系统并没有出现对应的USB虚拟的串口,问题来了: 究竟该如何进行软件开发呢?

(1)REPL串口

答案来了:在 MicroPython WeAct Core Board 使用教程 | WeAct 工作室 中介绍UART的时候,特别之处,UART_REPL:UART1。

简易MAX3232接口定义:

PIN1 PIN2 PIN3 PIN4 PIN5
3.3V T1 R1 R2 GN

(2)连接REPL串口

▲ 建议MAX3232接口

STM32F401模块的UART对应的PA9(TX1)、PA10(RX1):

但是经过测量,在模块上电后,PA9(TX1),PA10(RX1)都是高阻状态。 这说明这个模块并没有对于UART1进行初始化成对应的REPL端口。

▲ 模块的接口定义

3.问题分析

最终确认电路板上的MCU为STM32F401CCU6,而不是F401CEU6,所以下载给定的MicroPython的版本(它们都是CEU6)无法工作,确认现在的电路板实际上没有能够工作起来。

02 STM32F401CEU6


1. STM32F401CEU6模块

为了验证STM401的MicroPython 开发功能,下面是刚刚购买到的STM401CEU6模块。

▲ 新购买到的STM32F401CEUT开发板

STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython 的资料下载:

  • 资料下载链接:https://pan.baidu.com/s/1-EVa3bFTcsqEJSJUCQ2IBQ
    提取码:782h

从资料网盘下载的资料存储在:

▲ STM32F401CEU6模块的原理图

2.下载UDF文件

(1)下载程序

D:\zhuoqing\DesignCenter\MicroPython\STM32F4x1\STM32F4x1核心板-2020 (F401版本)\F401-MicroPython(无技术支持)\F401-MicroPython\firmware_4m_flash_stm32f401ce_v3.dfu

D:\zhuoqing\DesignCenter\MicroPython\STM32F4x1\STM32F4x1核心板-2020 (F401版本)\F401-MicroPython(无技术支持)\F401-MicroPython\firmware_internal_rom_stm32f401ce_v3.dfu

a)下载带有4Mflash版本

首先选择firmware_4m_flash_stm32f401ce_v3.dfu下载。这主要是因为在目标板上具有4MFlash的模块。

▲ 使用DfuSe Demo(v3.0.5)下载UDF文件

结论: 这种下载带有Flash的版本,每次qids的时候,都会引起对于Flash重新进行格式化。这说明模块上的Flash可能不符合固件的要求;

b)下载Internal_ROM版本

下载之后,在对应的 WECTF401CE(F:)磁盘上会出现以下四个文件。

  • main.py

  • pybcdc.inf

  • README.txt

  • boot.py

README.txt中的内容:

This is a MicroPython boardYou can get started right away by writing your Python code in 'main.py'.For a serial prompt:- Windows: you need to go to 'Device manager', right click on the unknown device,then update the driver software, using the 'pybcdc.inf' file found on this drive.Then use a terminal program like Hyperterminal or putty.- Mac OS X: use the command: screen /dev/tty.usbmodem*- Linux: use the command: screen /dev/ttyACM0Please visit http://micropython.org/help/ for further help.

(2)重新RST

在计算机出现pyBoard USB Comm Port(COM34):


打开Thonny通过Configuration的Interpreter,设置MicroPython(Generic):Port:PyBoard USB Comm Port(CM34)来进行连接。

▲ 设置Thonny的Interpreter

▲ 使用Thonny连接STM32F401

MicroPython v1.12-540-gdd65eb920-dirty on 2020-06-16; WeAct_Core with STM32F401CEType "help()" for more information.
>>> help()
Welcome to MicroPython!For online help please visit http://micropython.org/help/.Quick overview of commands for the board:pyb.info()    -- print some general informationpyb.delay(n)  -- wait for n millisecondspyb.millis()  -- get number of milliseconds since hard resetpyb.Switch()  -- create a switch objectSwitch methods: (), callback(f)pyb.LED(n)    -- create an LED object for LED n (n=1,2,3,4)LED methods: on(), off(), toggle(), intensity(<n>)pyb.Pin(pin)  -- get a pin, eg pyb.Pin('X1')pyb.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode pPin methods: init(..), value([v]), high(), low()pyb.ExtInt(pin, m, p, callback) -- create an external interrupt objectpyb.ADC(pin)  -- make an analog object from a pinADC methods: read(), read_timed(buf, freq)pyb.DAC(port) -- make a DAC objectDAC methods: triangle(freq), write(n), write_timed(buf, freq)pyb.RTC()     -- make an RTC object; methods: datetime([val])pyb.rng()     -- get a 30-bit hardware random numberpyb.Servo(n)  -- create Servo object for servo n (n=1,2,3,4)Servo methods: calibration(..), angle([x, [t]]), speed([x, [t]])pyb.Accel()   -- create an Accelerometer objectAccelerometer methods: x(), y(), z(), tilt(), filtered_xyz()Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name
Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD
Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN
Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n)Control commands:CTRL-A        -- on a blank line, enter raw REPL modeCTRL-B        -- on a blank line, enter normal REPL modeCTRL-C        -- interrupt a running programCTRL-D        -- on a blank line, do a soft reset of the boardCTRL-E        -- on a blank line, enter paste modeFor further help on a specific object, type help(obj)
For a list of available modules, type help('modules')
>>>

▌调试结论


通过调试,证明了STM32F401模块使用MicroPython开发的可能性。请注意,STM32F401具有两个版本:

  • STM32F401CCU6: 不能够下载MicroPython开发
  • STM32F401CEU6:能够使用MicroPython下载开发。

3.基础实验

(1)测试LED

from pyb                    import LED,ADC,delay,Pin
led = LED(1)
while True:led.on()delay(100)led.off()delay(100)

▲ LED flash测试
对于LED的生命,也可以使用字符串。

from pyb                    import LED,ADC,delay,Pin
led = Pin('LED_BLUE', Pin.OUT)
while True:led.on()delay(500)led.off()delay(500)

(2)测量Pin

from pyb                    import LED,ADC,delay,Pin
led = Pin('C13', Pin.OUT)
while True:led.on()delay(5)led.off()delay(5)

▲ 测量Pin的波形

▲ Pin13输出的波形

(3)测试ADC

根据STM32F401CEu6的Datasheet,可以看到对应的ADC总共有16个,他们分别2位于PA,PB,PC的端口上。

▲ STM32F401CE端口配置

▌测试问题

在使用Thonny调试的时候,通常会出现运行不正常的情况,也就是反复下载程序的过程中,会出现程序不执行的情况。

上面情况,在下载“Internal_ROM”版本之后,情况消失。

经过测试之后,也会发现,出现这种延迟执行的情况。不知道为什么,只是在开始的几次执行的时候,程序响应比较快。

(1)测试ADC

信号从ADC0(PA0)输入到模块。

from pyb                    import LED,ADC,delay,Pin
adc = ADC(0)
led = LED(1)
while True:adcm = [adc.read() for _ in range(256)]print(sum(adcm) / len(adcm))delay(10)
print('Stop.')

▲ 读取ADC并进行显示

▌附件


1.MicroPython固件刷入说明

在F401-MicroPython中包括两个说明文件:

  • README.md:英文说明文件
  • README-zh.md:中文说明文件

下面的内容来自于中文说明文件。

  • English Version

(1)重要说明

如果板子背面没有WeAct版本号,芯片批次是537或旧的,插针和板子是装在一个袋子里,丝印印刷是错误的(3V3印成了V3V),肯定是盗版。可以issues我们或通过电子邮件(WeAct_TC@163.com)告知我们。

a. WeAct Studio STM32F401CEU6

板子没有焊接flash刷入名称含有internal的固件,焊接了flash,根据flash的大小选择对应的固件8M,4M

最新固件为:firmware_xxxxxxx_stm32f401_vxx_v1.12-540

4MB SPI Flash:

  • 硬件版本:版本号 V2.1,V2.2,V3.0对应固件为:firmware_4m_flash_stm32f401_v21+&&V13_v1.12-540.hex

  • 硬件版本:版本号V2.0对应固件为:firmware_4m_flash_stm32f401_v20_v1.12-35.hex

8MB SPI Flash:

  • 硬件版本:版本号 V2.1,V2.2,V3.0对应固件为:firmware_8m_flash_stm32f401_v21+&&V13_v1.12-540.hex

内置Flash Internal Rom:

  • firmware_internal_rom_stm32f401_v1.12-540.hex

遇到特殊问题需要擦除外置SPI Flash的:

刷入该固件可以擦除外挂的SPI Flash,LED 50ms快闪为识别Flash失败,长亮为擦除进行中,0.5s快闪为擦除成功,0.5s慢闪擦除失败

  • SPIFlash_Erase_Firmware.hex

micropython入门使用中文教程:https://www.weact-tc.cn/2020/01/01/micropython/

更多资料请访问:https://gitee.com/WeActTC/WeAct_F411CE.git

(2)如何编译micropython 需使用linux (ubuntu或Win10企业版linux子系统)

不建议自己编译固件,使用我们提供的固件即可,如确实需要编译,请自备linux基础使用知识,以下均为linux下的操作

git clone https://github.com/micropython/micropython.git
cd micropython
git submodule update --init
cd mpy-cross
make -j4
cd ../ports/stm32/boards

复制当前资料文件夹下的WeAct_F401CE到linux系统相应的文件下

复制 WeAct_F401CE 到 micropython/ports/stm32/boards

然后

cd YourPath/micropython/ports/stm32/make BOARD=WeAct_F401CE CROSS_COMPILE=/mnt/e/MCU/tools/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi- -j
# 或者
make BOARD=WeAct_F401CE -j

注意:CROSS_COMPILE 修改为自己的编译器路径

(3)mpconfigboard.h 相应修改

/* 板子版本为 V2.0 设置为 1 ,其他设置为 0 例如.V1.3,V2.1 V3.0 */
#define VERSION_V20 (1)/* 使用内置flash改1 使用外置flash改0 */
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)// Flash Size:
// 4MB Flash 32Mbit
// 8MB Flash 64Mbit
// 16MB Flash 128Mbit
#define MICROPY_HW_SPIFLASH_SIZE_BITS (32 * 1024 * 1024)

SPI FLASH:

#define MICROPY_HW_SPIFLASH_CS      (pin_A4)
#define MICROPY_HW_SPIFLASH_SCK     (pin_A5)
#if VERSION_V20#define MICROPY_HW_SPIFLASH_MISO    (pin_B4)
#else#define MICROPY_HW_SPIFLASH_MISO    (pin_A6)
#endif
#define MICROPY_HW_SPIFLASH_MOSI    (pin_A7)

DevEBox STM32F4x1开发板 设置MicroPython STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython相关推荐

  1. keil接收别人发的工程打不开_STM32工程模板建立之 KEIL 开发平台设置(一)

    根据前面的 KEIL 开发平台知识,根据自己的习惯,建立一个专门属于自己的工程模板.那么为什么要建立模板呢? 1. 你希望每次开发项目的时候都从头开始建立工程吗? 2. 你希望每次将常用的函数都重新编 ...

  2. python 开发板-MicroPython:STM32 上 的 Python 开发

    虽然Python在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学.而一个没有MCU编程经验的初学者,要想让芯片跑起来 ...

  3. 【嵌入式开发】开发板设置系统时间

    开发板设置系统时间 环境 查看系统时间 查看硬件时间 设置系统时间 设置RTC时间 其他问题 时钟包括硬件时钟和系统时钟,系统时钟就是linux系统显示的时间,用命令 date可以显示当前系统时间:硬 ...

  4. 开发板设置从nfs启动

    开发板设置从nfs启动 16年4月16日15:43:13 (一) 设置PC的ip地址: 我采用的方法是通过一根交叉网线连接开发板与PC机,这时候需要设置PC机的ip如下所示: 此时,电脑是没法上网的. ...

  5. micropython在stm32跑一跑_TPYBoard——能跑micropython的,基于STM32F405单片机的开发板...

    MicroPython基于ANSI C,语法跟Pyton 3基本一致,拥有自家的解析器.编译器.虚拟机和类库等.目前他支持基于32-bit的ARM处理器,比如说STM32F405.也就是说ARM处理器 ...

  6. 开发板linux设置ip,【书本节选】AC501-SoC 开发板出厂系统设置IP地址方法

    本文节选自小梅哥2019年出版的新书:<基于SoC FPGA的嵌入式设计和开发教程> 1.1.1 设置IP地址 Linux系统对于以太网传输有非常完善的支持,AC501-SoC开发板上设计 ...

  7. IMX6U开发板设置固定ip

    网上有很多设置固定ip的,有说修改/etc/init.d/rcS配置文件的,如下面的博主 开发板ip设置_weixin_34216196的博客-CSDN博客 也有说修改/etc/network/int ...

  8. 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全

    文章目录 一.单片机/嵌入式有无操作系统的区别 二.操作系统时的分层架构图 三.移植FreeRTOS到小熊派开发板(STM32L431RC) 1. 硬件准备 2. 下载FreeRTOS源码 2.1. ...

  9. micropython比c_选择C/C++还是选择MicroPython来开发?(第0章-第三节)

    在硬件开发领域里,C/C++是最传统的编程语言之一.ESP8266/NodeMCU开发板可以通过Arduino IDE利用C/C++语言进行开发.(假如您还不知道Arduino是什么,建议您看一下太极 ...

最新文章

  1. 研究之路的秘密花园-个人经验分享-台湾朝阳科技大学陈金铃教授
  2. php禁止国外访问,wordpress 禁止国外ip访问
  3. 深入理解Javascript之执行上下文(Execution Context)
  4. SpringBoot_web开发-webjars静态资源映射规则
  5. ASP.NET 连接MySql数据库
  6. tomcat java环境配置
  7. 推荐系统(3)-协同过滤2-矩阵分解算法
  8. 【Kafka】kafka 0.10.0 isr 不为空 但是不一致 导致获取消费组异常
  9. mysql 5.7和8.0区别_SpringBoot 2.0 教程实战 MySQL 读写分离
  10. LeetCode For SQL 184. 部门工资最高的员工 (分组 from嵌套)
  11. C#学习历程(四)[实际问题]
  12. nacos启动报错 db.num is null【已解决】
  13. imx8 uuu烧录
  14. 联想G480黑苹果试玩纪录
  15. 我们都是穷人甲乙丙丁
  16. 润乾报表v4-统计图中如何弹出超链接窗口
  17. c++画蛋糕_生日蛋糕--C++
  18. 芝士合集(以便查看)
  19. FairyGUI简单背包的制作
  20. 年终总结PPT 注意事项

热门文章

  1. mysql 常用操作
  2. 数据字典 加载到 web 项目的 application 全局
  3. 简单jQuery实现选项框中列表项的选择
  4. 设置oracle服务自动启动
  5. 网元查看一个无厘头的core dump问题定位
  6. 页面如何自动出现滚动条(overflow属性用法)
  7. 总结一下Page_Load和OnLoad
  8. C#/VB.NET 给Word文档添加/撤销书签
  9. IBM发布全新合作伙伴计划 共赢认知商业时代
  10. effective java读书笔记5:避免创建不必要的对象