製作自己的Micropython開發板

作爲一個偏硬件的繪圖員,趕上部門測試一款產品備用芯片STM32F405RG,恰巧這款芯片支持MicroPython,於是就萌生了畫一款方便做硬件測試的Micropython開發板。話不多說,接下來就說說開發板的功能和移植過程。

實物圖:

MPY_CCL
時間倉促畫的不好多包涵

 

板級功能表:

USB 調試,下載程序,固件和調試用
UART1 做串口調試用(PA9,PA10)
UART2 AIR202E虛擬卡GPRS模塊(AT指令)暫時未焊接,實現移動聯網
UART3 板載485功能接口,主要使用MODBUS讀取外部從機數據
UART4 板載WIFI模塊控制實現聯網(AT開發)
Switch 板載用戶按鍵一個
SPI1 Lora和W25Q128存儲
SPI2 ST7735驅動LCD接口(兼容SSD1306驅動OLED模塊)
LED燈4只 保留官方定義功能,方便觀察程序運行狀態
Buzz 板載蜂鳴器
IIC 板載24C256和RX8025T
IRD 板載紅外接收
ADC 2個ADC採集接口,上拉10K1%電阻,主要外接NTC溫度探頭採集溫度(B3950)

NTC

板載NTC測溫
DHT11 DHT11溫溼度模塊接口(兼容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工具做開發,簡單實用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章