Maix Dock(M1/M1W) 开发板 maixpy-v1 k210 maix-i系列m1开发板使用与环境配置

文章来源;第一个程序: 使用屏幕和摄像头 - Sipeed Wiki

e0f252c45b6c4860b2483fcccc5a3f21.jpg

 上图就是最原始的m1开发版也就是maixy很早的一个版本,他使用的芯片是m1芯片,或是m1w芯片2409e2fa6f3e4084a457b9a2e7ce1f70.jpg

4a541855836245fc8ad5989f43606339.jpg

 这个板子因为现在的版本太老了,固件也很老了停止更新,所以现在很难找到资源并开发了,

下面是他的固件下载

更新 MaixPy 固件

编辑本页

一、准备#

硬件:

  • USB Type-C 数据线
  • MaixPy 开发板
  • PC(电脑)

软件:

  • MaixPy 开发板 USB 驱动程序
  • kflash_gui

二、确认驱动已经正确安装#

按照前面的说明安装好驱动,并且在电脑中能看到串口设备, Linux 和 Mac OS 执行 ls /dev/ 即可看到设备号,比如名字是ttyUSB0ttyUSB1Windows在设备管理器中查看

三、获得升级工具#

kflash_gui 是跨平台的,可以在多个系统下工作(包括 Windows、Linux、MacOS、甚至树莓派)
使用勘智(Kendryte)的Windows版本可能部分开发版无法下载成功,请使用 kflash_gui 这个软件来下载

  • 解压到一个文件夹,双击 kflash_gui.exe(/kflsh_gui) 即可运行, Windows下建议右键固定到开始页面 或者固定到任务栏Linux 下可以自己新建一个kflash_gui.desktop, 修改文件地址, 使用管理员身份复制到/usr/share/application目录,然后在系统菜单界面就可以看到kflash_gui这款应用了

  • 另外也可以使用命令行版本下载

pip3 install kflash
kflash --help
kflash -p /dev/ttyUSB0 -b 1500000 -B goE maixpy.bin

Copy

四、获得固件#

  • 发布版本的固件从 github 页面下载
  • 在Sipeed官方下载站获取:下载站

固件为 .bin 结尾或者 .kfpkg 的文件

.kfpkg其实就是多个.bin文件的打包版本, 可以使用kflash_gui打包或者[手动打包](http://blog.sipeed.com/p/390.html)

MaixPy Firmware Type

五、固件命名说明#

文件名说明备注
maixpy_vx.y.z_x_xxx*.bin默认版本的 MaixPy 固件,包含了大多数功能, 支持连接 MaixPy IDE,-
maixpy_vx.y.z_x_xxx*_m5stickv.bin针对 M5Stickv 定制的固件, 支持连接 MaixPy IDE
maixpy_vx.y.z_x_xxx*_with_lvgl.binMaixPy 固件, 支持连接 MaixPy IDE, 带 LVGL 版本.(LVGL是嵌入式 GUI 框架, 写界面的时候需要用到)
maixpy_vx.y.z_x_xxx*_minimum.binMaixPy 固件最小集合,不支持 MaixPy IDE, 不包含OpenMV的相关算法和各种外设模块
maixpy_vx.y.z_x_xxx*_minimum_with_ide_support.binMaixPy 固件最小集合, 支持连接 MaixPy IDE, 不包含OpenMV的相关算法和各种外设模块运行各种模型,建议使用这个
elf_maixpy_vx.y.z_x_xxx*.7zelf 文件,普通用户不用关心,用于死机调试
face_model_at_0x300000.kfpkg人脸模型,放置在地址位 0x300000, 可以和.bin分开多次下载,不冲突

出厂的固件是不一样的,不同的开发板,固件不一样,所以出现无法链接ide和屏幕白屏的时候,需要替换固件

六、下载固件到开发板#

  • 打开 kflash_gui 应用

  • 然后选择固件、设置选项, 点击下载即可, 更多特性介绍、使用说明见 kflash_gui 项目主页

使用时注意串口不能被其它软件占用,选择正确的开发板和串口号,可以适当降低波特率和使用低速模式来提高下载成功率

对于最早期的 Maix Go, 如果确认选项是对的,仍然无法下载, 可以尝试将三相拨轮按键拨向 Down 的位置并保持再下载

6.1. Sipeed RV JATG 调试器#

Sipeed USB-JTAG/TTL RISC-V调试器 STLINK V2 STM8/STM32模拟器

烧录常见问题FAQ

如果在使用 kflash_gui 烧录出现以下等问题

Upgrade Error

可以按照以下顺序进行排查

  • 检查PC是否有权限打开端口,对于 win10,需要以管理员身份运行 kflash_gui 。
  • 检查端口是否选择正确(如果出现两个设备端口,通常选择端口号小的那一个)。
  • 检查端口是否被其他应用占用(如Maixpy IDEputty等),应当关闭其他程序占用。
  • 检查设备是否选择正确,对于 Maix Bit2.0(包括M1n模块),应该选择 Maix Bit ( with Mic )

补充说明:对于Maix Bit 2.0两个串口端口的问题

  • 只有其中一个串口端口有效,用于串口通信与ISP下载程序。
  • Maix Bit与PC采用串口通信,通过CH552T芯片实现USB虚拟串口功能,而该芯片可以虚拟出两个串口,在Maix Bit(M1n模块底板)中,我们只用到了一个串口,不过有些k210产品两个串口都使用了。

七、最新标准固件下载#

2021/6/18更新:标准固件下载

八、固件更新信息#

日期版本号备注
2021/7/27固件版本 0.6.2_57加入了安装教程视频中的测试模式,可以开机检测sd卡是否挂载

MaixPy IDE 安装与使用

编辑本页

maixpy_ide_start

一、关于 MaixPy IDE#

MaixPy IDE

首先需要弄清: MaixPy 使用 Micropython 脚本语法,所以不像 C 语言 一样需要编译,其实不用 IDE 也能愉快使用: 使用串口终端工具,前面已经安装了

使用 IDE 则会方便在电脑上实时编辑脚本并上传到开发板以及直接在开发板上执行脚本,以及在电脑上实时查看摄像头图像、保存文件到开发板等

当然, 使用 IDE 因为压缩、传输需要耗费一部分资源,所以性能会有所降低,而且如果MaixPy宕机也没有串口终端好发现问题

二、MaixPy 固件#

要使用 MaixPy IDE , 固件必须是 v0.3.1 版本以上, 否则MaixPyIDE 上会连接不上, 使用前尽量检查固件版本和 IDE 版本,都更新到最新版以保障能正常使用

三、下载安装包#

dl.sipeed.com

文件列表等说明 请看 最新版本文件夹下的 readme.txt 文件, 如果下载速度慢请使用 cdn 链接下载

四、安装#

4.0.1. 如果是安装程序(推荐,简单方便)#

Windows直接双击exe文件运行安装程序; Linux命令行给运行权限然后执行

chmod +x maixpy-ide-linux-x86_64-0.2.2.run
./maixpy-ide-linux-x86_64-0.2.2.run

Copy

4.0.2. 如果是压缩包(7z)#

则解压到文件夹

如果系统不支持 7z, 则需要 下载 7z解压缩工具,然后用 7z

Linux下也可以双击压缩包进行解压!

如果需要使用终端解压, 可以参考以下命令:

sudo apt install p7zip-full
7z x maixpy-ide-linux-x86_64-0.2.2-installer-archive.7z -r -omaixpy-ide
# `-o` 后面直接跟解压缩的路径, 中间没有空格.

Copy

  • 解压后, 执行
    • 如果是 Windows: 直接双击maixpyide来执行,可以右键固定到开始页面或者固定到任务栏方便后面使用
    • Linux: 执行
chmod +x setup.sh
./setup.sh
./bin/maipyide.sh

Copy

五、测试运行#

打开 MaixPy IDE, 上方工具栏里面选择开发板的型号。amigo,cube 开发板请选择 Maixduino 进行连接

Tool-> Select Board (工具->选择开发板)

点击 connect 连接 MaixPy IDE

connect-icon.png

连接成功之后,链接按钮会由绿变红.

connect-success.png

连接按钮下方是运行按钮,会执行当前编辑区的py文件.

helloworld-run.png

再次点击运行按钮(红色), 停止运行当前代码.

六、上传文件#

在 Tool/工具 菜单中可以选择发送文件

七、注意#

  • 点击连接后,不用和终端工具同时使用,否则会出现串口占用无法打开
  • 如果一直无法成功连接成功, 检查:
    • 请检查是否开发板型号选择错误;
    • 观察开发板屏幕是否有变化,如果没有反应可能是串口选择错误;
    • 尝试升级到最新的 master 分支固件, 以及最新的 MaixPy IDE 软件
  • 运行代码后获取不到图像
    • 请换个USB口,比较老旧的电脑会出现这个问题

八、根据错误提示寻找原因#

程序运行出错时会弹框提示错误,但是错误信息不一定完整,请在终端输出里面查找更详细的错误信息

如有必要,请断开 IDE, 仅使用串口终端运行程序(也许你需要先把程序保存到文件,然后运行文件)查看打印以排错

如果提交问题(bbs、群、github issue等),为了使问题快速得到解决,请务必带上上面所述完整信息

下面是他的开发版资源配置

一、教程&快速上手#

MaixPy

二、描述#

MAIX Dock开发板是SiPEED公司MAIX产品线的一员,基于嘉楠堪智科技的边缘智能计算芯片K210(RISC-V架构 64位双核)设计的一款AIOT开发板。化繁为简的设计,整洁小巧,板载Type-C接口和USB-UART电路,用户可以直接通过USB Type-C线连接电脑进行开发,配置128Mbit Flash、LCD、DVP、Micro SD卡等接口并把所有IO引出,方便用户扩展。

上电即可开机,不需要开机操作

11

三、外观#

11

11

四、特性#

MaixDock 开发是以M1W AI模块作为核心单元,功能非常强大。模块内置64位双核处理器芯片,拥有8M的片上SRAM,在AI机器视觉、听觉性能方面表现突出,内置多种硬件加速单元(KPU、FPU、FFT等),总算力最高可达1TOPS,可以方便地实现各类应用场景的机器视觉/听觉算法,也可以进行语言方向扫描和语言数据输出的前置处理工作。

五、应用#

智能家居,机器人清洁器,智能扬声器,电子门锁,家庭监控等;
医学行业应用,如辅助诊断,医学图像识别;
智能工业应用,如工业机械,智能分拣,电气设备监控等;
教育机器人,智能互动平台,教育效率检查等教育应用;
农业应用,如农业监测,病虫害监测,自动控制等

六、参数#

K210 芯片基本参数
内核RISC-V Dual Core 64bit, with FPU
主频400MHz (可超频至600MHz)
SRAM内置8M Byte
图像识别QVGA@60fps/VGA@30fps
语音识别麦克风阵列(8mics)
网络模型
  • 支持YOLOv3
  • Mobilenetv2
  • TinyYOLOv2
  • 人脸识别等
深度学习框架支持TensorFlow \ Keras \ Darknet \ Caffe 等主流框架
外设FPIOA、 UART、 GPIO、 SPI、 I2C、I2S、 TIMER
视频处理
  • 神经网络处理器(KPU)
  • FPU满足IEEE754-2008标准
  • 音频处理器(APU)
  • 快速傅里叶变换加速器(FFT)
开发板参数
板载资源
  • 按键*2
  • RGB灯*1
  • MEMS Microphone*1
  • USB to UART
  • 128Mbit Flash*1
板载接口
  • USB Type-C接口
  • 24PIN DVP摄像头接口
  • 24PIN LCD接口
  • MicroSD卡槽
  • 音频接口(支持外接2x3W扬声器)
  • 所有IO排针引脚引出
尺寸52.3*37.3mm
供电电压5.0V @ 300mA(供电电流需大于300mA)
工作温度-30℃ ~85C
软件开发
芯片操作系统FreeRTOS、RT-Thread等
开发环境MaixPy IDE、PlatformlO IDE、Arduino IDE等
编程语言C,C++,MicroPython

七、资料#

Sipeed-Maix-Dock 资料下载:Sipeed-Maix-Dock

Sipeed-Maix-Dock 规格书下载:Sipeed-Maix-Dock

Sipeed-Maix-Dock 原理图下载:开发版Sipeed-Maix-Dock

下面是他的芯片参数与介绍

一、M1/M1W#

M1/M1W模块是基于嘉楠堪智科技的边缘智能计算芯片 K210 (RISC-V架构) 设计的一款AIOT模块。主控芯片内置64位双核高性能低功耗处理器,每个核都有浮点运算单元(FPU) ,具备卷积人工神经网络硬件加速器(KPU)和快速傅里叶变换加速器(FFT)、搭载现场可编程IO阵列(FPIOA),支持多种主流Al编程框架。M1W模块内置标准802.11 b/g/n协议的ESP8285 WiFi芯片,可让模块轻松联网。

M1/M1W

二、应用#

智能家居,机器人清洁器,智能扬声器,电子门锁,家庭监控等;
医学行业应用,如辅助诊断,医学图像识别;
智能工业应用,如工业机械,智能分拣,电气设备监控等;
教育机器人,智能互动平台,教育效率检查等教育应用;
农业应用,如农业监测,病虫害监测,自动控制等

三、M1/M1W 参数#

M1/M1W Al模块系统主要由电源(3 Channel DC-DC)、Flash芯片(16M)电路、K210芯片和WiFi芯片四部分组成。K210作为核心单元,功能非常很强大,芯片内置64位双核处理器,拥有8M的片上SRAM。模块在Al机器视觉、听觉性能方便表现突出,芯片总算力可达1TOPS,芯片内置多种硬件加速单元(KPU、FPU,FFT等),可以方便地实现各类应用场景的机器视觉/听觉算法,也可以进行语音方向扫描和语音数据输出的前置处理工作。M1W模块嵌入无线WiFi功能,可轻松实现联网控制。

K210 芯片基本参数
内核RISC-V Dual Core 64bit, with FPU
主频400MHz (可超频至600MHz)
SRAM内置8M Byte
图像识别QVGA@60fps/VGA@30fps
语音识别麦克风阵列(8mics)
神经网络模型
  • 支持YOLOv3
  • Mobilenetv2
  • TinyYOLOv2
深度学习框架支持TensorFlow \ Keras \ Darknet \ Caffe 等主流框架
外设FPIOA、 UART、 GPIO、 SPI、 I2C、I2S、 TIMER
视频处理
  • 神经网络处理器(KPU)
  • FPU满足IEEE754-2008标准
  • 音频处理器(APU)
  • 快速傅里叶变换加速器(FFT)
模块软件
操作系统FreeRtos and Standrad development ki
编程语言MicroPython
机器视觉支持卷积神经网络
机器听觉高性能音频处理器(APU)
开发环境串口终端、MaixPy IDE
模块硬件
尺寸25.4*25.4*3.3mm
引脚72 PIN全引脚引出
供电电压5.0V @ 300mA(供电电流需大于300mA)
工作温度-30°C ~85°C
Wi-Fi功能参数
主控ESP8285
无线标准802.11 b/g/n
频率范围2400Mhz - 2483.5Mhz
天线标准IPEX接口天线
Wi-Fi模式支持Station / SoftAP /SoftAP+Station

为了让Al模块能应用于更多场合,Sipeed团队还推出了无WiFi功能版本的M1模块,如果用户无需使用无线联网的功能,可以选择我们的M1模块。M1模块和M1W模块的AI功能一致,使用方法基本相同,主要区别就是M1W模块比M1模块多了WiFi功能。

四、资料下载#

芯片 K210 Datasheet: Kendryte 官网
M1W 资料下载: dl.sipeed.com

五、软件开发#

  1. MaixPy:MicroPython 语言开发
  2. C 语言 SDK: kendryte-standalone-sdk

更新板载 ESP32 固件

编辑本页

一、简介:#

MaixPy 系列的开发板中 MaixDuino 板载了一块 ESP32 WIFI SOC,一般情况下不推荐更新板载的 ESP32 模块。
但是但我们发现使用过程中存在 bug 并修复了之后我们就需要更新修复的固件。

二、更新 ESP32 固件步骤#

2.1. 准备#

  • 硬件: MaixDuino, USB Type-C 数据线

  • 软件: ESPFLASH

  • ESP32 固件更新工具:ESP32 flash_download_tools

  • ESP32 MaixDuino 固件:

  • 下载烧录固件前先擦除一遍原有固件!!!!

2.2. 更新流程:#

  1. 下载 flash_download_tools

    flash_download_tools

    flash_download_tools

  2. 下载 MaixDuino ESP32 固件

    update esp32

  3. 连接 MaixDuino, 选择 ESP32 串口(一般都是串口号比较大的)

  4. 设置下载选项:

    1. 如图配置相应选项, 注意波特率一定要设置为 115200

    b6474ddd5340cc9b7cf6006f75974a7b.png

    acf618a24b4cb8c5f8c2e98acc6cf11b.png

  5. 点击 Start 更新固件,并等待完成更新

  6. 验证更新是否完成

    1. 使用 XCOM, 打开 ESP32 串口,点击 RST 复位 ESP32,如图即刷入成功

    96e955badd7450e7b5ba58230ae12c48.png

更新板载 ESP8285 固件

编辑本页

一、简介:#

目前 MaixPy 系列采用 M1W 模块的作为核心模块的开发板有: MaixDock(M1W), MaixGo

通常情况下我们不需要更新模块内部 WIFI SOC ESP8285 的固件,但是如果使用过程中存在 bug,以及有新版本的固件发布时我们就可以更新固件

MaixDock、MaixGo 使用的 M1W 模块中的 ESP8285 默认烧录的是 AT 固件

二、验证 ESP8285 是否能够正常工作#

  • MaixPy 验证 ESP8285 是否正常工作例程

查看文本末尾例程

  • 外接 USB 转串口模块测试

    使用 USB 转串口模块,按照下表连接之后上电

M1WUSB 模块说明
M1W GNDGND共地
K210 (IO6)/ESP8285 TXRX-
K210 (IO7)/ESP8285 RXTX-
k210 RST(上电之前接地,全过程拉低 RST)GND-

上电之后板子会在串口输出(这里使用 XCOM, 波特率 115200) 来验证 ESP8285 是否正常启动

image-20200805175207487

三、AT 指令集#

ESP8285 和 ESP8266 为同一系列产品,使用同一套 AT 指令集
ESP8285/ESP8266/ESP32 最新 AT指令集 esp-at/docs/ESP_AT_Commands_Set.md at v2.0.0.0_esp8266 · espressif/esp-at · GitHub

四、更新 ESP8285 固件步骤#

在烧录 ESP8285 固件之前,先了解下 ESP8285 烧录原理:

4.1. ESP8285 固件烧录原理#

ESP8285 在上电时,会判断 boot stapping 管脚的状态,并决定启动(boot)模式, 如:

ets Jan 8 2013,rst cause:1, boot mode:(3,2)

其中打印的 boot mode 的第一位数字(3)代表当前的 boot 模式。
Boot 模式由 strapping 管脚的 3 位值 [GPIO15, GPIO0, GPIO2] 共同决定。如下表所
示:

Strapping 管脚的 3 位值/[GPIO15, GPIO0, GPIO2]Boot 模式
7 / [1, 1, 1]SDIO HighSpeed V2 IO
6 / [1, 1, 0]SDIO LowSpeed V1 IO
5 / [1, 0, 1]SDIO HighSpeed V1 IO
4 / [1, 0, 0]SDIO LowSpeed V2 IO
3 / [0, 1, 1]Flash Boot
2 / [0, 1, 0]Jump Boot
1 / [0, 0, 1]UART Boot
0 / [0, 0, 0]Remapping

ESP8285 进入不同模式的 IO 电平请看如下表:

模式CH_PD(EN)RSTGPIO15GPIO0GPIO2TXD0
UART 下载模式
Flash 运行模式
Chip 测试模式-----

即 ESP8285 进入 UART 下载模式,启动信息 mode 第一位应该为 mode:(1, X),如下:

ets Jan 8 2013,rst cause:1, boot mode:(1,1)

而以 MaixDock 为例,可以看到 MaixDock 原理图如下:

4.2. 准备#

这里以 MaixDock(M1W), Windows 10 系统为例

  • 硬件: MaixDock, USB Type-C 数据线

  • 软件:

  • ESP 固件更新工具:ESP8285 flash_download_tools

  • ESP8285 AT 固件:

  • 乐鑫官方下载链接: espressif_esp8266-at

4.3. Windows 使用 flash_download_tools 更新 ES8285(这里以 MaixDock 为例):#

  1. 按照下面配置,连接 MaixDock,

    将 USB 转串口模块和ESP8285连接,连接方式前面已经介绍
    上电前 需要将 GPIO0 拉低,即将天线旁左上角的触点接地,进入 UART 下载模式。

  1. 打开 flash_download_tools

  2. 下载 MaixDock ESP8285 固件

  3. 选择 ESP8285 串口(一般都是串口号比较大的)

  4. 设置下载选项:

    如图配置相应选项, 注意波特率一定要设置为 115200

  5. 点击 Start 更新固件,并等待完成更新

  6. 验证更新是否完成

    • 使用 XCOM 波特率 115200, 打开 ESP8285 串口,输出 AT\r\n,如图提示 OK 即刷入成功

    esp8285_at.png

4.4. LINUX 使用 esp_tool 更新 ES8285(这里以 MaixDock 为例):#

  1. 按照下面配置,连接 MaixDock,

  2. 安装 esptool

    pip3 install esptool
    

    Copy

  3. 下载 MaixDock ESP8285 固件

    ls /dev/ttyUSB* # 查看 USB 串口
    esptool --port /dev/ttyUSB0 write_flash 0x0 ESP8285-AT-V1.7.4_8Mbit_40Mhz.bin # 烧录固件
    

    Copy

  4. 验证更新是否完成

    使用串口工具, 波特率 115200, 打开 ESP8285 串口,输出 AT\r\n,如图提示 OK 即刷入成功

    esp8285_at.png

4.5. MaixPy 例程测试:#

import network, time
from machine import UART
from Maix import GPIO
from fpioa_manager import fm

# En SEP8285 rst
#fm.register(8, fm.fpioa.GPIOHS0, force=True)
#wifi_en=GPIO(GPIO.GPIOHS0, GPIO.OUT)
#wifi_en.value(1)
# En SEP8285 rst
fm.register(0, fm.fpioa.GPIOHS0, force=True)
wifi_io15=GPIO(GPIO.GPIOHS0, GPIO.OUT)
wifi_io15.value(0)

fm.register(8, fm.fpioa.GPIOHS1, force=True)
wifi_en=GPIO(GPIO.GPIOHS1, GPIO.OUT)
wifi_en.value(1)

# for new MaixGO board, if not, remove it
#fm.register(0, fm.fpioa.GPIOHS1, force=True)
#wifi_io15_en=GPIO(GPIO.GPIOHS1, GPIO.OUT)
#wifi_io15_en.value(0)

fm.register(6, fm.fpioa.UART2_RX, force=True)
fm.register(7, fm.fpioa.UART2_TX, force=True)

uart = UART(UART.UART2,115200,timeout=1000, read_buf_len=4096)

def wifi_enable(en):
    global wifi_en
    wifi_en.value(en)

def wifi_deal_ap_info(info):
    res = []
    for ap_str in info:
        ap_str = ap_str.split(",")
        info_one = []
        for node in ap_str:
            if node.startswith('"'):
                info_one.append(node[1:-1])
            else:
                info_one.append(int(node))
        res.append(info_one)
    return res


#wifi_enable(0)
time.sleep(2)
nic = network.ESP8285(uart)

ap_info = nic.scan()
ap_info = wifi_deal_ap_info(ap_info)

ap_info.sort(key=lambda x:x[2], reverse=True) # sort by rssi
for ap in ap_info:
    print("SSID:{:^20}, RSSI:{:>5} , MAC:{:^20}".format(ap[1], ap[2], ap[3]) )

点亮 LED

编辑本页

点灯程序作为学习所有开发板的第一个程序,就像学所有编程语言都是先学 hello world 一样,具有着神圣的意义

一、电路#

众所周知, 点亮一个 LED 需要一个电源, 一个电阻, 一个 LED 灯泡,
在 Maix Dock 开发板上, 有三个 LED, 线路如下:

比如我们希望红灯点亮, 即 LED_R 连接的这个 LED, 图中可以看到 LED 的正极已经连接了 3.3V 电源, 所以我们只要让 LED_R 为低电平 LED 即可点亮。

注意, 这里 LED_R 是给这个引脚取的一个别名, 实际上是连接到芯片的一个引脚,比如 Pin13或者说IO13

二、外设到引脚的映射: FPIOA(现场可编程 IO 阵列, Field Programmable Input and Output Array)#

可能你曾经用过一些单片机,在手册上都规定了引脚和片上外设功能(就是芯片内部集成的外设,比如 GPIOI2CSPI 等)的绑定,或者重映射。比如规定了 I2C 只能用 Pin9 和 Pin10,启动了重映射功能后,只能用Pin11Pin12

但是 MaixPy 所使用的硬件 K210 的片上外设对应的引脚(硬件引脚)是可以任意映射的,相比之下 K210 硬件设计和软件设计的自由度更大。 比如 I2C 可以使用 Pin11 和 Pin12,也可以改成其它任意引脚

注意要区分 GPIO 和 IO的区别, IO也可以叫Pin 也就是引脚,是芯片引出来的硬件引脚, 而GPIO是一种外设,可以控制这些Pin/IO 的外设

因为有了这个强大的映射功能, 所以在使用引脚时,需要增加一步映射的步骤:

from fpioa_manager import fm    # 导入库
fm.register(28, fm.fpioa.GPIO0)

Copy

这里我们将引脚 28 映射为了 GPIO0 的功能, 执行了这句命令后,引脚28GPIO0就映射(绑定)好了,要取消映射(解绑),则需要调用fm.unregister函数,具体看API文档,这里不介绍

另外,Pin 和 外设只能唯一对应, 不能一对多,需要对同一个外设或者引脚重复映射,否则程序可能产生难以发现的错误(BUG

三、代码#

我们控制 LED 需要使用到 GPIO

board_info 与板卡相关,不同板卡配置不同,使用前需要手动配置

程序如下:

from fpioa_manager import fm
from Maix import GPIO

io_led_red = 13
fm.register(io_led_red, fm.fpioa.GPIO0)

led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)

Copy

按照前面运行代码的方法在终端里面运行代码, 会发现 LED 灯被点亮了!

接下来我们分析代码:

  • 从 fpioa_manager 包导入fm 对象,主要用于引脚和外设的映射

  • 从包 Maix 导入了 GPIO 这个类, GPIO 外设相关操作

  • 定义一个变量io_led_red,值为13,即Pin13/IO13, 具体 LED 的引脚连接到了芯片的哪个引脚,请在前面的开发板介绍中看原理图

  • 使用fm(fpioa manager 的缩写)这个内置的对象来注册芯片的外设和引脚的对应关系, 这里 fm.fpioa.GPIO0 是 K210 的一个 GPIO 外设(注意区分 GPIO(外设) 和引脚(实实在在的硬件引脚)的区别 ), 所以把 fm.fpioa.GPIO0 注册到了 引脚 IO13

  • 然后定义一个 GPIO 对象led_r, 具体参数看 GPIO API 文档, 在左边侧边栏查找。

  • 使用 led_r.value(1) 或者 led_r.value(0) 来设置高低电平即可, 因为这里设置了低电平, 根据上面的原理图可知低电平导通,LED 灯亮

到这里已经可以点灯了, 现在可以自己尝试用 for 循环来实现 LED 闪烁或者流水灯~做出不同的变换效果

第一个程序: 使用屏幕和摄像头

编辑本页

开发板有配套的摄像头和屏幕,请在上电前检查硬件连接是否正确(按照排线标有的一号引脚对齐

然后上电,打开串口终端, 按键盘Ctrl+E,然后粘贴以下代码:

import sensor, lcd

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()

lcd.init(freq=15000000)

while(True):
    lcd.display(sensor.snapshot())

Copy

按键盘Ctrl+D来开始运行代码

会发现屏幕被点亮了,而且显示出了摄像头拍到的画面

如果显示reset fail, 则是摄像头没有连接好,或者摄像头已经损坏,或者检查是不是使用了不支持的摄像头

上面的程序都可以在 API 手册中查到含义, 在左边目录中可以找到, 也可以使用左上角的搜索框进行搜索。
现在解释上面的程序:

  • import sensor, lcd: 首先导入内置的sensor(摄像头)库和lcd(屏幕)库
  • sensor.reset(): 初始化摄像头,这里失败需要检查硬件
  • sensor.set_pixformat(sensor.RGB565): 设置摄像头为RGB565格式,默认都是用RGB565即可
  • sensor.set_framesize(sensor.QVGA): 分辨率为QVGA,即320x240
  • sensor.run(1): 开始运行,在现在的版本中也可以不调用,在上面设置完成后,摄像头会自动开始运行
  • sensor.skip_frames(): 摄像头刚启动时,图像质量还没稳定,所以跳过一些图像
  • lcd.init(freq=15000000): 初始化 LCD, 这里传了一个参数叫freq即频率, 是指定驱动 LCD 的时钟频率,这里是15MHz,可以根据硬件性能调整
  • while(True): 这是一个循环,循环里面的代码会被不停地运行
  • sensor.snapshot():从摄像头取一帧图像数据,返回值是一张图像的对象
  • lcd.display(): 显示图像到 LCD
  • lcd.display(sensor.snapshot()): 这里就是先执行括号里的获取图像,返回值直接作为参数给 LCD 进行显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广药门徒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值