17408|63

1万

帖子

25

TA的资源

版主

楼主
 

【MicroPython】移植到小钢炮开发板 [复制链接]

 
 
本帖最后由 dcexpert 于 2016-4-13 15:10 编辑
小钢炮(CANNON)开发板是最近比较热门的一个蓝牙开发板,它是XXXXX(为了避免广告,此处省略XX字)。这里介绍小钢炮开发板,主要因为它使用了STM32F401RE这个MCU,而这个MCU是MicroPython支持的型号,它还板载了磁力传感器、陀螺仪、温度传感器、湿度传感器、气压传感器。而且这个开发板比较容易获取,从去年年底开始做活动,到现在也还有不少地方可以申请。下面就介绍在小钢炮开发板上移植MicroPython的方法。

  • 首先要下载并安装GNU Tools for ARM Embedded Processors。
    https://launchpad.net/gcc-arm-embedded
  • 下载并安装ST的DfuSe软件,http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF257916
  • 下载MicroPython的源码,micropython-master.zip
  • 展开MicroPython源码,打开 stmhal\boards\ 目录
  • 新建一个CANNON目录,将NUCLEO_F401RE下的文件复制到CANNON目录下
  • 如果GNU Tools for ARM已经添加到系统路径,就可以跳到步骤8,直接编译
  • 打开 stmhal 下的 makefile 文件,修改 CROSS_COMPILE = arm-none-eabi- 这一行,在 arm-none-eabi- 前添加编译器的实际路径,注意路径需要使用右斜杠
  • 在 stmhal 目录下,输入 make BOARD=CANNON,就可以编译了。不过这时编译出的代码是不能运行的,因为两个板子的参数不同。
  • 打开 stmhal\boards\CANNON目录,先修改文件stm32f4xx_hal_conf.h
    • 找到#define HSI_VALUE    ((uint32_t)8000000)
      将数字8000000改为16000000,因为小钢炮使用了16M的外部时钟
  • 打开文件 mpconfigboard.h
    • 找到#define MICROPY_HW_CLK_PLLM (8)
      将数字8改为16
    • 修改#define MICROPY_HW_HAS_SWITCH  (1)
      将1改为0,因为小钢炮上没有用户按键
    • 修改#define MICROPY_HW_LED1             (pin_A5) // Green LD2 LED on Nucleo
      将pin_A5改为pin_B3,因为两个板子的LED使用不同的GPIO
    • 修改#define MICROPY_HW_LED_ON(pin)      (pin->gpio->BSRRL         = pin->pin_mask)
      将BSRRL改为BSRRH
    • 修改#define MICROPY_HW_LED_OFF(pin)     (pin->gpio->BSRRH         = pin->pin_mask)
      将BSRRH改为BSRRL,这是因为两个板子的LED驱动方式不同
    • 添加下面RTC的定义
      // The pyboard has a 32kHz crystal for the RTC
      #define MICROPY_HW_RTC_USE_LSE      (1)
      #define MICROPY_HW_RTC_USE_US       (0)
      #define MICROPY_HW_RTC_USE_CALOUT   (1)
    • 添加sdcard的定义 ,因为小钢炮支持TF(macroSD)卡。如果不想改线,或者不需要使用TF卡,可以忽略这一步和下面一步。
      #define MICROPY_HW_HAS_SDCARD       (1)
      // SD card detect switch
      #define MICROPY_HW_SDCARD_DETECT_PIN        (pin_A15)
      #define MICROPY_HW_SDCARD_DETECT_PULL       (GPIO_PULLUP)
      #define MICROPY_HW_SDCARD_DETECT_PRESENT    (GPIO_PIN_RESET)
    • 小钢炮开发板没有做TF卡的插入检测,所以需要自己飞一根线。开发板上A15(50)和B4(56)是空脚,我选择了A15,因为它更容易焊接一些。如果不想改线,可以修改sdcard.c中的sdcard_is_present函数,让它总是返回true,但是这样就不能检测卡是否插入了。
    • 打开文件pins.cvs,这里预定义了GPIO的名称
      • 修改LED的GPIO为PB3
      • 修改SW的GPIO为PC13
      • 如果还有时间和精力,可以适当修改其他GPIO
  • 现在可以再次编译源文件了。编译时建议在Linux下编译,因为速度快很多,在windows下编译速度很慢,需要等数分钟。
  • 准备3个短路块,连接P1,将BOOT0连接到VCC,BOOT1连接到GND。
  • 将开发板用macroUSB线连接到计算机,因为设置了BOOT0/BOOT1,所以上电后会进入DFU模式。在Windows下如果是第一次使用,会提示安装驱动,驱动程序就在DfuSe软件的安装目录下。使用DfuSe打开编译后的dfu文件,并下载到开发板。
    file:///F:/szy/F%E8%AE%BA%E5%9D%9B/micropython/%E5%9C%A8%E5%B0%8F%E9%92%A2%E7%82%AE%E5%BC%80%E5%8F%91%E6%9D%BF%E4%B8%8A%E8%BF%90%E8%A1%8CMicroPython/2.jpg
  • 将BOOT0连接到GND,开发板重新上电。这时会自动安装USB磁盘,出现PYBFLASH驱动器。在windows下还会安装虚拟串口,如果找不到驱动程序,可以到新出现的PYBFLASH驱动器上查找。
  • 打开一个串口终端软件,如kitty、xshell、超级终端等,设置波特率为115200,就可以开始玩micropython了。


先试试直接控制LED
  1. import pyb
  2. pyb.LED(1).on()
  3. pyb.LED(1).off()
复制代码

在试试用GPIO控制LED。
  1. from pyb import Pin
  2. led=Pin.cpu.B3
  3. led.init(Pin.OUT_PP)
  4. led.value(1)
  5. led.value(0)
复制代码

用PWM控制LED的亮度
  1. from pyb import Pin, Timer
  2.             
  3. tm2=Timer(2, freq=100)
  4. led=tm2.channel(2, Timer.PWM, pin=Pin.cpu.B3, pulse_width=100)
  5. led.pulse_width_percent(100)
  6. led.pulse_width_percent(1)
复制代码

呼吸灯
  1. # main.py -- put your code here!

  2. from pyb import Timer, Pin

  3. tm2=Timer(2, freq=200)
  4. led=tm2.channel(2, Timer.PWM, pin=Pin.cpu.B3)

  5. # LED breathing lamp
  6. ia = 1
  7. da = 1
  8. def fa(t):
  9.     global ia, da
  10.     if (ia==0)or(ia==100):
  11.         da=100-da
  12.     ia=(ia+da)%100
  13.     led.pulse_width_percent(ia)

  14. tm1=Timer(1, freq=100, callback=fa)
复制代码


更多使用方法可以参考MicroPython网站的文档,以及【MicroPython】教程。

  • 编译后的固件文件(dfu格式), firmware.zip (459.3 KB, 下载次数: 21, 售价: 20 分芯积分)
  • CANNON开发板说明文件,展开后复制到micropython的stmhal\boards目录下, CANNON.ZIP (5.83 KB, 下载次数: 5, 售价: 20 分芯积分)




最新回复

怎样攒芯币呀,我想要资料,要学   详情 回复 发表于 2020-7-9 01:35

赞赏

3

查看全部赞赏

点赞 关注(2)
 
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
下载附件后烧写后就可以了吗?我直接烧写进去后 发现没有出现PYBFLASH驱动器,出现一个未知设备
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
现在有了
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

4
 
修改SW的GPIO为PC13 是按键吗?

点评

这里写错了。小钢炮没有按键,可以不管它,或者删除这一行。  详情 回复 发表于 2016-4-13 20:12
 
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
windworld 发表于 2016-4-13 17:42
修改SW的GPIO为PC13 是按键吗?

这里写错了。小钢炮没有按键,可以不管它,或者删除这一行。

点评

[attachimg]236890[/attachimg] [attachimg]236889[/attachimg] [attachimg]236888[/attachimg] 本人小白,对这种编译器一窍不通,请楼主指点一下。  详情 回复 发表于 2016-4-14 14:12
请教一下,如何在WINDOWS系统下进行编译呢?  详情 回复 发表于 2016-4-14 13:54
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

6
 
不错!顶一下!有几个小伙伴申请的小钢炮
个人签名相信自己,力争最佳状态的自己
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

7
 
这个是不是还不可以直接用其上面的传感器?如果要用还要先修改 mpconfigboard.h相关定义吧?

点评

有待进一步研究。应该是通过SPI、I2C读取传感器  详情 回复 发表于 2016-4-13 21:22
 
 
 

回复

1万

帖子

25

TA的资源

版主

8
 
windworld 发表于 2016-4-13 20:56
这个是不是还不可以直接用其上面的传感器?如果要用还要先修改 mpconfigboard.h相关定义吧?

有待进一步研究。应该是通过SPI、I2C读取传感器
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

9
 
好赞,研究了几个晚上没有搞定的事情,楼主一下就解决了
 
 
 

回复

674

帖子

5

TA的资源

纯净的硅(初级)

10
 
强!!!!!!!!!!
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(初级)

11
 
围观···························
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

12
 
楼主高能,在下拜服
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
您好,在吗,可否将您的文章在聚码的开源论坛里也发布一下。我们会送上小礼品一份。论坛地址www#52cannon#com/bbs(将#换为.)

点评

好的,有开发板就更好了。  详情 回复 发表于 2016-4-14 15:32
 
 
 

回复

1301

帖子

0

TA的资源

纯净的硅(中级)

14
 
关注一下,这个很不错的。蓝牙芯片用的啥型号啊?哪个厂家的?谢谢分享。

点评

蓝牙型号是BlueNRGK-MS。 [*] [*]  详情 回复 发表于 2016-4-14 14:55
个人签名

 

 

 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

15
 
dcexpert 发表于 2016-4-13 20:12
这里写错了。小钢炮没有按键,可以不管它,或者删除这一行。

请教一下,如何在WINDOWS系统下进行编译呢?
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

16
 
dcexpert 发表于 2016-4-13 20:12
这里写错了。小钢炮没有按键,可以不管它,或者删除这一行。




本人小白,对这种编译器一窍不通,请楼主指点一下。

点评

建议可以这样做,安装一个虚拟机,VM或者VB都可以,VB还是免费的。然后在虚拟机中安装一个ubuntu或者debian,然后在安装GNU Tools for ARM 编译器。因为linux原生就集成了很多工具,不用自己在折腾了,windows下搞要  详情 回复 发表于 2016-4-14 15:26
make是一些工具链中通用的工具,它根据makefile中的描述,调用编译器进行编译。make这样的工具,在linux上用的多,windows下大家更习惯IDE。 很多软件中都包括了make工具,我使用的是AS6/AS7中带有的make。 可  详情 回复 发表于 2016-4-14 15:23
 
 
 

回复

1万

帖子

25

TA的资源

版主

17
 
大秦正声 发表于 2016-4-14 13:09
关注一下,这个很不错的。蓝牙芯片用的啥型号啊?哪个厂家的?谢谢分享。

蓝牙型号是BlueNRGK-MS。

  • BlueNRG.pdf (1.66 MB, 下载次数: 7)
  • 开发板手册v2.pdf (6.43 MB, 下载次数: 11)

 
 
 

回复

1万

帖子

25

TA的资源

版主

18
 
wgsxsm 发表于 2016-4-14 14:12
本人小白,对这种编译器一窍不通,请楼主指点一下。

make是一些工具链中通用的工具,它根据makefile中的描述,调用编译器进行编译。make这样的工具,在linux上用的多,windows下大家更习惯IDE。

很多软件中都包括了make工具,我使用的是AS6/AS7中带有的make。

可以打开makefile文件,看看里面的内容。里面包含的内容很多,也很复杂,需要找专门的教程看看。
 
 
 

回复

1万

帖子

25

TA的资源

版主

19
 
wgsxsm 发表于 2016-4-14 14:12
本人小白,对这种编译器一窍不通,请楼主指点一下。

建议可以这样做,安装一个虚拟机,VM或者VB都可以,VB还是免费的。然后在虚拟机中安装一个ubuntu或者debian,然后在安装GNU Tools for ARM 编译器。因为linux原生就集成了很多工具,不用自己在折腾了,windows下搞要麻烦多了。

如果觉得虚拟机比较慢,可以安装双系统,也可以用移动硬盘安装linux。我在一个1.8寸的30G移动硬盘上安装了,效果不错,使用方便。

点评

[attachimg]236981[/attachimg] 按照你说的一步步做,终于成功了。 非常感谢  详情 回复 发表于 2016-4-15 11:04
OK 虚拟机早前已经安装过,按你说的试试看 谢谢  详情 回复 发表于 2016-4-14 15:39
 
 
 

回复

1万

帖子

25

TA的资源

版主

20
 
nigelyao 发表于 2016-4-14 13:06
您好,在吗,可否将您的文章在聚码的开源论坛里也发布一下。我们会送上小礼品一份。论坛地址www#52cannon#c ...

好的,有开发板就更好了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表