7363|8

1万

帖子

25

TA的资源

版主

楼主
 

PYB Nano 开发板快速指南 [复制链接]

 
本帖最后由 dcexpert 于 2016-10-31 12:14 编辑

PYB Nano 开发板快速指南
这篇快速指南是为 MicroPython 和 PYB Nano 的初学者写的,通过这个文档,可以快速掌握 MicroPython 和 PYB Nano 的基本使用方法。

PYB Nano开发板简介
PYB Nano开发板是目前体积最小、成本最低的MicroPython开发板

PYB Nano的主要特点
  • STM32F401CEU6微控制器
  • 16M主时钟
  • 支持 macroUSB
  • 2路UART
  • 3路I2C
  • 3路SPI
  • 10路12位ADC
  • 支持RTC
  • 支持后备电池输入
  • 支持USB供电和VIN输入(最高12V)
  • 一个用户按键和一个复位键
  • 带有 4个支持亮度调节功能的 LED
  • 带有加速度传感器(MMA7660)
  • 支持USB升级功能
  • 低成本、高性能
  • 开源

应用范围
  • 教育、学习
  • 电子竞赛
  • 机器人
  • 智能硬件
  • 物联网开发
  • 快速原型设计
  • 创客、DIYer

PYB Nano非常适合作为MicroPython的入门开发板,它支持绝大部分MicroPython的功能和函数,成本却只有官方 PyBoard 的几分之一,是学习MicroPython的首选开发板之一,也是从Arduino进阶到其它应用的最好选择。


系统需求

在开始使用 PYB Nano 前,需要做一点准备工作:
  • 一台计算机,安装了不低于Win7,或者Linux、MacOS操作系统,32位/64位都可以
  • 串口终端软件,如超级终端、putty、MobaXterm、SecureCRT等
  • macroUSB数据线(可以使用安卓手机的数据线)

因为Windows的用户最多,所以下面的介绍也以Windwos为主,但其它操作系统下的用法也是类似的,甚至更简单。

另外,为了顺利使用 MicroPython,大家还需要对 Python 语言有基本了解,因为MicroPython 是基于 python3 的。

安装驱动

在Windows系统中,第一次连接开发板时,会出现一个PYBFLASH磁盘,同时提示需要安装新的设备。这个新的设备就是虚拟串口,它的驱动程序就在新出现的PYBFLASH磁盘上,浏览到这个磁盘安装驱动,安装后就可以使用。
在大部分的Linux、MacOS下无需安装任何驱动程序。

终端软件设置

在调试时,通常都使用串口终端软件。在使用前,需要对终端软件的串口参数进行设置。

先用数据线连接开发板,然后运行任一串口终端软件,并设置串口为 PYB Nano 对应的虚拟串口,在将串口参数设置如下:

波特率
115200
数据位
8
奇偶校验

停止位
1
流量控制


个别软件还需要设置字符集才能正常显示。

REPL 的用法

通常调试程序时,都是在 MicroPython 的 REPL (read–eval–print loop,循环交互解释器)环境下运行。在REPL下可以直接输入命令,有内置的解释器执行。如果命令输入正常
MicroPython支持几个常用的快捷键,如果你熟悉串口终端,会发现它们的习惯是一样的。
  • Ctrl-C,停止正在的程序或终止当前的命令行
  • Ctrl-D,软复位(soft reset)
  • Ctrl-B,显示系统提示
  • Ctrl-E,进入粘贴模式。可以按下Ctrl-C退出粘贴模式,Ctrl-D完成粘贴
  • Tab,键盘上的Tab键,可以补全命令

除了Ctrl-C,其它快捷键需要在空命令行下(没有输入任何字符)才能生效。此外,还可以使用上下左右光标键
  • 上下键,调出以前输入的命令。MicroPython可以保存最后输入的6条命令
  • 左右键,在当前命令行中移动,编辑命令

基本用法

LED
无论在哪个开发板中,LED都是最常用的的例程,我们也从这里开始。

PYB Nano上有4个LED,分别是红、绿、黄、蓝色。我们可以通过 pyb.LED(n) [n = 1-4]去使用它们。如:
  1. pyb.LED(1).on()  # LED1亮
  2. pyb.LED(2).off() # LED2灭
  3. pyb.LED(3).toggle() #翻转LED3
  4. pyb.LED(4).intensity(20) # 设置LED4亮度20 [范围是0-255]
复制代码

呼吸灯,下面程序将LED3设置为呼吸灯
  1. from pyb import Timer

  2. ia = 1
  3. da = 1
  4. def fa(t):
  5.     global ia, da
  6.     if (ia==0)or(ia==255):
  7.         da=256-da
  8.     ia=(ia+da)%256
  9.     pyb.LED(3).intensity(ia)

  10. tm=Timer(1, freq=200, callback=fa)
复制代码


在其它MicroPython开发板上,LED的数量可能是1-4个,但用法是一样的。此外不是每种 MicroPyhon 开发板的 LED 都支持亮度调整功能(intensity())。
按键
在MicroPython的Pyboard中,预定义了按键开关对象,它的使用方法如下:
  1. sw = pyb.Switch()
  2. sw()
复制代码


如果按键按下,返回True,否则返回False。

GPIO
使用GPIO,需要导入pyb库的Pin对象。
  1. from pyb import Pin

  2. p_out = Pin('X1', Pin.OUT_PP) # 定义 X1 引脚为输出
  3. p_out.high()     # 输出高电平
  4. p_out.low()      # 输出低电平
  5. p_out.value(1)   # 等同于 p_out.high()

  6. p_in = Pin('X2', Pin.IN, Pin.PULL_UP) # 定义 X2 为输入  
  7. p_in.value() # get value, 0 or 1
复制代码

外中断
下面代码将按键(PC13)定义为外中断输入,上升沿触发模式。每当按下一次按键,LED1就会翻转一次。
  1. from pyb import Pin, ExtInt

  2. callback = lambda e: pyb.LED(1).toggle()
  3. ext = ExtInt(Pin('C13'), ExtInt.IRQ_RISING, Pin.PULL_UP, callback)
复制代码


定时器
定时器需要使用到pyb库的Timer对象。下面程序中,先设置定时器1的频率为1000Hz,然后读取计数器的值,再设置定时器的频率为0.5Hz,并在定时器回调函数(中断)里翻转LED2。
  1. from pyb import Timer

  2. tim = Timer(1, freq=1000)
  3. tim.counter() # get counter value
  4. tim.freq(0.5) # 0.5 Hz
  5. tim.callback(lambda t: pyb.LED(2).toggle())
复制代码


PWM
PWM是定时器模块的一个子功能,可以将定时器的某一通道设置为PWM输出。下面代码将 PA3 设置为定时器2的CH4输出,最后设置占空比是10%。注意占空比参数可以是浮点数。
  1. from pyb import Pin, Timer

  2. p = Pin('A3') # X1 has TIM2, CH4
  3. tim = Timer(2, freq=1000)
  4. ch = tim.channel(4, Timer.PWM, pin=p)
  5. ch.pulse_width_percent(10)
复制代码

ADC
PYB Nano带有10路12位ADC输入,可以非常容易读取ADC的参数。下面的代码读取引脚 X8 (PB0)的输入
  1. from pyb import Pin, ADC

  2. adc = ADC(Pin('X8'))
  3. adc.read() # read value, 0-4095
复制代码


另外一种读取ADC的方法是
  1. from pyb import Pin, ADC

  2. a=pyb.ADCAll(12)    # 设置ADC为12位模式
  3. a.read_channel(8)   # 读取ADC8
  4. a.read_core_temp()  # 读取内部温度传感器
复制代码


UART
  1. from pyb import UART

  2. uart = UART(1, 9600)
  3. uart.write('hello')
  4. uart.read(5) # read up to 5 bytes
复制代码


I2C
  1. from pyb import I2C

  2. i2c = I2C(1, I2C.MASTER, baudrate=100000)
  3. i2c.scan() # returns list of slave addresses
  4. i2c.send('hello', 0x42) # send 5 bytes to slave with address 0x42
  5. i2c.recv(5, 0x42) # receive 5 bytes from slave
  6. i2c.mem_read(2, 0x42, 0x10) # read 2 bytes from slave 0x42, slave memory 0x10
  7. i2c.mem_write('xy', 0x42, 0x10) # write 2 bytes to slave 0x42, slave memory 0x10
复制代码


SPI
  1. from pyb import SPI

  2. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
  3. spi.send('hello')
  4. spi.recv(5) # receive 5 bytes on the bus
  5. spi.send_recv('hello') # send a receive 5 bytes
复制代码


加速度传感器
PYB Nano内置了加速度传感器MMA7660,可以直接读取传感器的参数(数值范围是[-32..32])。
  1. acc = pyb.Accel()
  2. while True:
  3.     print(acc.x(), acc.y(), acc.z())
  4.     pyb.delay(500)
复制代码



其它常用功能
  1. pyb.delay(500)    # 延时500ms
  2. pyb.udelay(20)    # 延时20us
  3. pyb.unique_id()   # 读取芯片的唯一序列号
  4. pyb.millis()      # 复位后的运行时间(ms)
  5. pyb.hard_reset()  # 复位,和按下复位键的效果相同
  6. pyb.bootloader()  # 直接进入 bootloader 模式升级
  7. pyb.disable_irq() # 禁止中断
  8. pyb.enable_irq()  # 恢复中断
  9. pyb.freq()        # 读取系统时钟
  10. pyb.wfi()         # 等待内部或外部中断
  11. pyb.stop()        # 休眠模式,需要外部中断或者实时时钟唤醒
复制代码



MocroPython的启动模式

在启动后,MicroPython会先运行 boot.py 文件,加载用户驱动,然后在运行main.py,执行用户程序。可以将用户程序放在main.py中,也可以在main.py中再加载其它的文件。

常见故障

在使用过程中,我们需要注意下面问题,避免造成文件系统破坏、数据丢失。
  • 取下数据线前,需要先U盘那样安全删除硬件,弹出PYBFLASH磁盘,否则可能会造成文件系统破坏,特别在修改了文件或复制新文件到PYBFLASH磁盘后。
  • 不要轻易按复位键,这样会造成当前的USB通讯中断。一般的问题,可以通过按下Ctrl-D软复位接近。

出厂模式

使用时间长了,因为各种原因可能会出现故障,造成无法正常启动,不能进入REPL,文件系统破坏等现象,这时就需要通过出厂模式进行恢复。

进入出厂模式的方法是:
  • 按下复位键(RESET)的同时,按住用户按键SW。
  • 然后保持用户按键不放,释放复位键。
  • 这时LED将循环显示:绿-》黄-》绿+黄-》灭
  • 等黄绿灯同时亮时,松开用户键,这时黄绿灯会同时快速闪4次
  • 然后红灯亮起(这时红绿黄三个灯同时亮)
  • 红灯灭,开始进行恢复到出厂状态
  • 所有灯都灭,恢复出厂设置完成。

恢复出厂设置后,PYBFLASH中的内容会丢失,变为默认文件。

升级固件

MicroPython的更新速度很快,每次更新都会带来一些新的功能,修正错误。所以掌握 MicroPython 的固件升级方法是有必要的。

PYB Nano支持下面几种升级方法:
  • 通过DFU模式升级
  • 通过SWD方式升级

使用DFU模式,需要安装ST的DfuSe_demo软件(Windows)或者dfu-util(Linux)。使用SWD需要将开发板的SWD接口(PA13/PA14)连接到编程器,通过编程软件下载。

参考资料

以上是 MicroPython 和 PYB Nano 的最基础知识,掌握后大家就可以逐步深入了。下面是一些参考网站和论坛,供大家参考。











最新回复

dcexpert,  原版中系统,管理器中没有设备,必须重新烧录固件,才可以,真诡异;   详情 回复 发表于 2019-6-15 09:45
点赞 关注(2)
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
PYB Nano 开发板快速指南.pdf (174.75 KB, 下载次数: 28)
 
 
 

回复

1453

帖子

18

TA的资源

纯净的硅(高级)

板凳
 
资料越来越完善了
个人签名http://weibo.com/u/1391449055
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

4
 
           加油
 
 
 

回复

1702

帖子

4

TA的资源

纯净的硅(初级)

5
 

大侠问下,重新上电后有问题如下:

重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示;

 

image.png (14.53 KB, 下载次数: 0)

image.png

点评

dcexpert,  原版中系统,管理器中没有设备,必须重新烧录固件,才可以,真诡异;  详情 回复 发表于 2019-6-15 09:45
还有在看看操作系统或者杀毒软件,一般情况下linux是不会有类似问题,windows下,特别是精简版或ghost版问题最多,尽量别用。  详情 回复 发表于 2019-6-14 09:12
此外USB接口或者USB线接触不好也可能是原因之一  详情 回复 发表于 2019-6-14 09:10
先检查设备管理器中,是否有对应的设备,在查看驱动是否有冲突的。   一般情况可能是驱动引起的。  详情 回复 发表于 2019-6-14 09:10
 
 
 

回复

1万

帖子

25

TA的资源

版主

6
 
DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

先检查设备管理器中,是否有对应的设备,在查看驱动是否有冲突的。

 

一般情况可能是驱动引起的。

 
 
 

回复

1万

帖子

25

TA的资源

版主

7
 
DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

此外USB接口或者USB线接触不好也可能是原因之一

 
 
 

回复

1万

帖子

25

TA的资源

版主

8
 
DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

还有在看看操作系统或者杀毒软件,一般情况下linux是不会有类似问题,windows下,特别是精简版或ghost版问题最多,尽量别用。

 
 
 

回复

1702

帖子

4

TA的资源

纯净的硅(初级)

9
 
DavidZH 发表于 2019-6-14 00:06 大侠问下,重新上电后有问题如下: 重新上电后,PYFLASH 不见了; 必须重新烧固件才可以显示; ...

dcexpert,  原版中系统,管理器中没有设备,必须重新烧录固件,才可以,真诡异;

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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