制作自己的Micropython开发板

作为一个偏硬件的绘图员,赶上部门测试一款产品备用芯片STM32F405RG,恰巧这款芯片支持MicroPython,于是就萌生了画一款方便做硬件测试的Micropython开发板。话不多说,接下来就说说开发板的功能和移植过程。

实物图:

MPY_CCL
时间仓促画的不好多包涵

 

板级功能表:

USB调试,下载程序,固件和调试用
UART1做串口调试用(PA9,PA10)
UART2AIR202E虚拟卡GPRS模块(AT指令)暂时未焊接,实现移动联网
UART3板载485功能接口,主要使用MODBUS读取外部从机数据
UART4板载WIFI模块控制实现联网(AT开发)
Switch板载用户按键一个
SPI1Lora和W25Q128存储
SPI2ST7735驱动LCD接口(兼容SSD1306驱动OLED模块)
LED灯4只保留官方定义功能,方便观察程序运行状态
Buzz板载蜂鸣器
IIC板载24C256和RX8025T
IRD板载红外接收
ADC2个ADC采集接口,上拉10K1%电阻,主要外接NTC温度探头采集温度(B3950)

NTC

板载NTC测温
DHT11DHT11温湿度模块接口(兼容DS18B20)

源码移植,编译合适自己开发板的固件:

准备工具:树莓派3B+,MPY_CCL开发板(自己起的名字),Windos下安装ST的DfuSe软件(不再说明方法),MicroPython的源码,USB线一根。

1、首先在树莓派下载并安装gcc编译器。

sudo apt-get install gcc
sudo apt-get install gcc-arm-none-eabi

2、下载MicroPython源码(https://github.com/micropython/micropython)解压到/home/pi/micropython-master。

3、下载stm32的hal库文件(https://github.com/micropython/stm32lib/tree/668d7a9e54aea98f8fe8a858eac1d3daa80fa824),复制解压后的库文件到/home/pi/micropython-master/lib/stm32lib。

4、打开/home/pi/micropython-master/ports/stm32/boards文件夹,新建MPY_CCL文件夹,复制PYBV11下全部文件到MPY_CCL。

cd /home/pi/micropython-master/ports/stm32/boards
sudo mkdir MPY_CCL
sudo cp PYBV11/* MPY_CCL/

5、进入/home/pi/micropython-master/mpy-cross文件夹,执行编译make.

cd /home/pi/micropython-master/mpy-cross
make

6、进入/home/pi/micropython-master/ports/stm32文件夹,执行编译sudo make BOARD=MPY_CCL。

cd /home/pi/micropython-master/ports/stm32
sudo make BOARD=MPY_CCL

经过上面的操作基本编译通过产生dfu和hex文件,验证了源码文件健全无误。接下来修改MPY_CCL板子参数一些配置(这修改部分也可以在上面第4步之后进行,不过建议验证源码编译无误后在进行修改)。

1、修改stm32/boards/MPY_CCL目录下stm32f4xx_hal_conf.h文件。

主要是修改晶体,MPY_CCL使用的是8M的外部晶振。
修改:
#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

#if !defined  (HSE_STARTUP_TIMEOUT)
  #define HSE_STARTUP_TIMEOUT    ((uint32_t)100U)   /*!< Time out for HSE start up, in ms */
#endif /* HSE_STARTUP_TIMEOUT */
为
#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

#if !defined  (HSE_STARTUP_TIMEOUT)
  #define HSE_STARTUP_TIMEOUT    ((uint32_t)100U)   /*!< Time out for HSE start up, in ms */
#endif /* HSE_STARTUP_TIMEOUT */

2、修改stm32/boards/MPY_CCL目录下mpconfigboard.h文件

这里仅贴出晶体的修改,其余按开发板实际功能进行修改用不到的尽量删除,减小固件体积。
修改
#define MICROPY_HW_CLK_PLLM (12)
为
#define MICROPY_HW_CLK_PLLM (8)

3、修改stm32/boards/MPY_CCL目录下pins.csv文件(文本编辑器下修改的)修改GPIO的预定义名。

PA0,PA0
PA1,PA1
PA2,PA2
PA3,PA3
PA4,PA4
PA5,PA5
PA6,PA6
PA7,PA7
PA8,PA8
PA9,PA9
PA10,PA10
PA11,PA11
PA12,PA12
PA13,PA13
PA14,PA14
PA15,PA15
PB0,PB0
PB1,PB1
PB2,PB2
PB3,PB3
PB4,PB4
PB5,PB5
PB6,PB6
PB7,PB7
PB8,PB8
PB9,PB9
PB10,PB10
PB11,PB11
PB12,PB12
PB13,PB13
PB14,PB14
PB15,PB15
PC0,PC0
PC1,PC1
PC2,PC2
PC3,PC3
PC4,PC4
PC5,PC5
PC6,PC6
PC7,PC7
PC8,PC8
PC9,PC9
PC10,PC10
PC11,PC11
PC12,PC12
PC13,PC13
PC14,PC14
PC15,PC15
PD2,PD2
SW,PA8
LED_RED,PC11
LED_GREEN,PA14
LED_YELLOW,PA15
LED_BLUE,PC10
USB_DM,PA11
USB_DP,PA12

可依据个人使用习惯修改,个人感觉上面的修改更符合我的使用习惯。

适配开发板参数修改完毕,再次进入/home/pi/micropython-master/ports/stm32文件夹,执行编译sudo make BOARD=MPY_CCL。

cd /home/pi/micropython-master/ports/stm32
sudo make BOARD=MPY_CCL

最后,复制出/home/pi/micropython-master/ports/stm32/build-MPY_CCL目录下的firmware.dfu文件在Windows下使用DfuSe软件烧录即可(DfuSe软件的下载安装及使用不在详述)。

推荐使用uPyCraft工具做开发,简单实用。

 

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值