查看: 460|回复: 4
打印 上一主题 下一主题

【STM32L476 Nucleo】移植MicroPython到NUCLEO_L476RG开发板

[复制链接] qrcode

29

主题

30

帖子

91

积分

注册会员

Rank: 2

积分
91
楼主
跳转到指定楼层
发表于 2016-5-11 04:07 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shaoziyang 于 2016-5-15 00:32 编辑

在最新的 MicroPython 源码中,已经加入了STM32L476DISC开发板,但是还没有NUCLEO-L476RG开发板。而我只有NUCLEO-L476RG开发板,要在NUCLEO-L476RG开发板上跑MicroPython,只有自己移植一下了。好在两个开发板使用的MCU是一样的,所以移植起来并不困难,主要就是修改一些参数配置,将LED、按键、串口等指定为开发板使用的GPIO。

  • 首先下载MicroPython源码,使用zip方式或者git方式都可以。推荐使用git方式,它更适合深入学习研究。
  • 此外还需要安装gcc-arm-none-eabi编译器,MicroPython的STM32需要使用这个编译器才能进行编译。
  • 进入源码的stmhal目录,用记事本或者其他编辑器修改makefile文件,将下面一行中编译器的路径改为实际的目录。注意一定要使用右斜杠。
CROSS_COMPILE = e:/gcc-arm/bin/arm-none-eabi-

  • 在进入stmhal/board目录,新建一个NUCLEO_L476RG目录,然后将STM32L476DISC目录下的所以文件复制过来。
  • 打开mpconfigboard.h文件,修改下面的内容:

  1. #define MICROPY_HW_BOARD_NAME       "NUCLEO-L476RG"
  2. #define MICROPY_HW_MCU_NAME         "STM32L476"

  3. #define MICROPY_HW_HAS_SWITCH       (1)
  4. #define MICROPY_HW_HAS_FLASH        (1)
  5. #define MICROPY_HW_HAS_SDCARD       (0)
  6. #define MICROPY_HW_HAS_MMA7660      (0)
  7. #define MICROPY_HW_HAS_LIS3DSH      (0)
  8. #define MICROPY_HW_HAS_LCD          (0)
  9. #define MICROPY_HW_ENABLE_RNG       (1)
  10. #define MICROPY_HW_ENABLE_RTC       (1)
  11. #define MICROPY_HW_ENABLE_TIMER     (1)
  12. #define MICROPY_HW_ENABLE_SERVO     (0)
  13. #define MICROPY_HW_ENABLE_DAC       (0)
  14. #define MICROPY_HW_ENABLE_CAN       (0)

  15. // HSI is 4MHz
  16. #define MICROPY_HW_CLK_PLLM (1)
  17. #define MICROPY_HW_CLK_PLLN (40)
  18. #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV7)
  19. #define MICROPY_HW_CLK_PLLR (RCC_PLLR_DIV2)
  20. #define MICROPY_HW_CLK_PLLQ (RCC_PLLQ_DIV2)

  21. #define MICROPY_HW_FLASH_LATENCY    FLASH_LATENCY_4

  22. // USART config
  23. #define MICROPY_HW_UART2_PORT (GPIOA)
  24. #define MICROPY_HW_UART2_PINS (GPIO_PIN_2 | GPIO_PIN_3)

  25. // I2C busses
  26. #define MICROPY_HW_I2C1_SCL (pin_B8)
  27. #define MICROPY_HW_I2C1_SDA (pin_B9)
  28. // We use an array of baudrates and corresponding TIMINGR values.
  29. //
  30. // The value 0x90112626 was obtained from the DISCOVERY_I2C1_TIMING constant
  31. // defined in the STM32L4Cube file Drivers/BSP/STM32L476G-Discovery/stm32l476g_discovery.h
  32. #define MICROPY_HW_I2C_BAUDRATE_TIMING  {{100000, 0x90112626}}
  33. #define MICROPY_HW_I2C_BAUDRATE_DEFAULT 100000
  34. #define MICROPY_HW_I2C_BAUDRATE_MAX     100000

  35. // SPI busses
  36. #define MICROPY_HW_SPI1_NSS     (pin_A15)
  37. #define MICROPY_HW_SPI1_SCK     (pin_A5)
  38. #define MICROPY_HW_SPI1_MISO    (pin_A6)
  39. #define MICROPY_HW_SPI1_MOSI    (pin_A7)

  40. // USRSW is pulled low. Pressing the button makes the input go high.
  41. #define MICROPY_HW_USRSW_PIN        (pin_C13)
  42. #define MICROPY_HW_USRSW_PULL       (GPIO_NOPULL)
  43. #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)
  44. #define MICROPY_HW_USRSW_PRESSED    (0)

  45. // LEDs
  46. #define MICROPY_HW_LED1             (pin_A5) // red
  47. #define MICROPY_HW_LED_OTYPE        (GPIO_MODE_OUTPUT_PP)         
  48. #define MICROPY_HW_LED_ON(pin)      (pin->gpio->BSRR = pin->pin_mask
  49. #define MICROPY_HW_LED_OFF(pin)     (pin->gpio->BSRR = pin->pin_mask<<16)

  50. // USB config
  51. // #define MICROPY_HW_USB_OTG_ID_PIN (pin_C12) // This is not the official ID Pin which should be PA10>
复制代码


  • 修改后,在stmhal目录中输入命令编译源码
make BOARD=NUCLEO_L476RG
  • 编译后就得到了需要的hex文件,将文件下载到开发板就可以玩MicroPython了。

        因为STM32L476的Micropython版本还在修改中,现在还存在一些问题,目前已知问题有:
  • STLink的串口无法发送控制命令
  • 串口设置波特率时会提示超出误差范围,但实际已经设置成功。
  • DAC和ADC功能暂时不能使用


其他
  • 最好使用macroUSB转接板将USBOTG引出来,因为只有这样才能使用内置的PYFLASH磁盘。具体方法见《【STM32L476 Nucleo】测试USB功能》
  • 关于源码编译,我将另外开帖详细介绍。
  • 为了方便那些只想体验又不想编译的网友,提供编译后hex文件,可以直接下载到开发板体验。
build-NUCLEO_L476RG.zip (478.92 KB, 下载次数: 2, 售价: 5 IC币)
回复

使用道具 举报

31

主题

227

帖子

339

积分

中级会员

Rank: 3Rank: 3

积分
339
沙发
发表于 2016-5-11 04:21 PM | 只看该作者
预备在做一个NUCLEO的扩展板,增加USBOTG、SD卡等功能,这样就可以方便的用NUCLEO开发板玩Micropython了。有需要的网友可以先留言,如果需要的人多就多做一些。
回复 支持 反对

使用道具 举报

1

主题

82

帖子

29

积分

新手上路

Rank: 1

积分
29
板凳
发表于 2016-5-27 08:22 AM | 只看该作者
学习了,感谢。
回复 支持 反对

使用道具 举报

2

主题

85

帖子

10

积分

新手上路

Rank: 1

积分
10
地板
发表于 2016-5-30 08:57 AM | 只看该作者
shaoziyang 发表于 2016-5-11 16:21
预备在做一个NUCLEO的扩展板,增加USBOTG、SD卡等功能,这样就可以方便的用NUCLEO开发板玩Micropython了。 ...

这个绝对可以有,举个爪子
回复 支持 反对

使用道具 举报

0

主题

101

帖子

26

积分

新手上路

Rank: 1

积分
26
5#
发表于 2016-6-24 09:11 PM | 只看该作者
这个真不错!回头我也试试…………
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表