文章来源;第一个程序: 使用屏幕和摄像头 - Sipeed Wiki
上图就是最原始的m1开发版也就是maixy很早的一个版本,他使用的芯片是m1芯片,或是m1w芯片
这个板子因为现在的版本太老了,固件也很老了停止更新,所以现在很难找到资源并开发了,
下面是他的固件下载
更新 MaixPy 固件
编辑本页
一、准备#
硬件:
- USB Type-C 数据线
- MaixPy 开发板
- PC(电脑)
软件:
- MaixPy 开发板 USB 驱动程序
- kflash_gui
二、确认驱动已经正确安装#
按照前面的说明安装好驱动,并且在电脑中能看到串口设备, Linux
和 Mac OS
执行 ls /dev/
即可看到设备号,比如名字是ttyUSB0
和ttyUSB1
; Windows
在设备管理器中查看
三、获得升级工具#
- 下载 kflash_gui, 会得到一个压缩包
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
四、获得固件#
固件为 .bin
结尾或者 .kfpkg
的文件
.kfpkg
其实就是多个.bin
文件的打包版本, 可以使用kflash_gui
打包或者[手动打包](http://blog.sipeed.com/p/390.html)
五、固件命名说明#
文件名 | 说明 | 备注 |
---|---|---|
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.bin | MaixPy 固件, 支持连接 MaixPy IDE , 带 LVGL 版本.(LVGL是嵌入式 GUI 框架, 写界面的时候需要用到) | — |
maixpy_vx.y.z_x_xxx*_minimum.bin | MaixPy 固件最小集合,不支持 MaixPy IDE , 不包含OpenMV 的相关算法和各种外设模块 | — |
maixpy_vx.y.z_x_xxx*_minimum_with_ide_support.bin | MaixPy 固件最小集合, 支持连接 MaixPy IDE , 不包含OpenMV 的相关算法和各种外设模块 | 运行各种模型,建议使用这个 |
elf_maixpy_vx.y.z_x_xxx*.7z | elf 文件,普通用户不用关心,用于死机调试 | — |
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
烧录出现以下等问题
可以按照以下顺序进行排查
- 检查
PC
是否有权限打开端口,对于win10
,需要以管理员身份运行kflash_gui
。 - 检查端口是否选择正确(如果出现两个设备端口,通常选择端口号小的那一个)。
- 检查端口是否被其他应用占用(如
Maixpy IDE
,putty
等),应当关闭其他程序占用。 - 检查设备是否选择正确,对于
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#
首先需要弄清: MaixPy 使用 Micropython
脚本语法,所以不像 C
语言 一样需要编译,其实不用 IDE
也能愉快使用: 使用串口终端工具,前面已经安装了
使用 IDE
则会方便在电脑上实时编辑脚本并上传到开发板以及直接在开发板上执行脚本,以及在电脑上实时查看摄像头图像、保存文件到开发板等
当然, 使用 IDE
因为压缩、传输需要耗费一部分资源,所以性能会有所降低,而且如果MaixPy宕机也没有串口终端好发现问题
二、MaixPy 固件#
要使用 MaixPy IDE
, 固件必须是 v0.3.1
版本以上, 否则MaixPyIDE 上会连接不上, 使用前尽量检查固件版本和 IDE 版本,都更新到最新版以保障能正常使用
三、下载安装包#
文件列表等说明 请看 最新版本文件夹下的 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
连接成功之后,链接按钮会由绿变红.
连接按钮下方是运行按钮,会执行当前编辑区的py
文件.
再次点击运行按钮(红色), 停止运行当前代码.
六、上传文件#
在 Tool/工具 菜单中可以选择发送文件
七、注意#
- 点击连接后,不用和终端工具同时使用,否则会出现串口占用无法打开
- 如果一直无法成功连接成功, 检查:
- 请检查是否开发板型号选择错误;
- 观察开发板屏幕是否有变化,如果没有反应可能是串口选择错误;
- 尝试升级到最新的 master 分支固件, 以及最新的 MaixPy IDE 软件
- 运行代码后获取不到图像
- 请换个USB口,比较老旧的电脑会出现这个问题
八、根据错误提示寻找原因#
程序运行出错时会弹框提示错误,但是错误信息不一定完整,请在终端输出里面查找更详细的错误信息
如有必要,请断开 IDE, 仅使用串口终端运行程序(也许你需要先把程序保存到文件,然后运行文件)查看打印以排错
如果提交问题(bbs、群、github issue等),为了使问题快速得到解决,请务必带上上面所述完整信息
下面是他的开发版资源配置
一、教程&快速上手#
二、描述#
MAIX Dock开发板是SiPEED公司MAIX产品线的一员,基于嘉楠堪智科技的边缘智能计算芯片K210(RISC-V架构 64位双核)设计的一款AIOT开发板。化繁为简的设计,整洁小巧,板载Type-C接口和USB-UART电路,用户可以直接通过USB Type-C线连接电脑进行开发,配置128Mbit Flash、LCD、DVP、Micro SD卡等接口并把所有IO引出,方便用户扩展。
上电即可开机,不需要开机操作
三、外观#
四、特性#
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) |
网络模型 |
|
深度学习框架 | 支持TensorFlow \ Keras \ Darknet \ Caffe 等主流框架 |
外设 | FPIOA、 UART、 GPIO、 SPI、 I2C、I2S、 TIMER |
视频处理 |
|
开发板参数 | |
---|---|
板载资源 |
|
板载接口 |
|
尺寸 | 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 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) |
神经网络模型 |
|
深度学习框架 | 支持TensorFlow \ Keras \ Darknet \ Caffe 等主流框架 |
外设 | FPIOA、 UART、 GPIO、 SPI、 I2C、I2S、 TIMER |
视频处理 |
|
模块软件 | |
---|---|
操作系统 | 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
五、软件开发#
- MaixPy:MicroPython 语言开发
- 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
- 下载链接:flash_download_tools
-
ESP32 MaixDuino 固件:
- 下载链接:flash_download_tools
-
下载烧录固件前先擦除一遍原有固件!!!!
2.2. 更新流程:#
-
下载 flash_download_tools,
-
下载 MaixDuino ESP32 固件
-
连接 MaixDuino, 选择 ESP32 串口(一般都是串口号比较大的)
-
设置下载选项:
- 如图配置相应选项, 注意波特率一定要设置为 115200
-
点击 Start 更新固件,并等待完成更新
-
验证更新是否完成
- 使用 XCOM, 打开 ESP32 串口,点击 RST 复位 ESP32,如图即刷入成功
更新板载 ESP8285 固件
编辑本页
一、简介:#
目前 MaixPy 系列采用 M1W 模块的作为核心模块的开发板有: MaixDock(M1W), MaixGo
通常情况下我们不需要更新模块内部 WIFI SOC ESP8285 的固件,但是如果使用过程中存在 bug,以及有新版本的固件发布时我们就可以更新固件
MaixDock、MaixGo 使用的 M1W 模块中的 ESP8285 默认烧录的是 AT 固件
二、验证 ESP8285 是否能够正常工作#
- MaixPy 验证 ESP8285 是否正常工作例程
-
外接 USB 转串口模块测试
使用 USB 转串口模块,按照下表连接之后上电
M1W | USB 模块 | 说明 |
---|---|---|
M1W GND | GND | 共地 |
K210 (IO6)/ESP8285 TX | RX | - |
K210 (IO7)/ESP8285 RX | TX | - |
k210 RST(上电之前接地,全过程拉低 RST) | GND | - |
上电之后板子会在串口输出(这里使用 XCOM, 波特率 115200) 来验证 ESP8285 是否正常启动
三、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) | RST | GPIO15 | GPIO0 | GPIO2 | TXD0 |
---|---|---|---|---|---|---|
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
- 乐鑫官网下载链接:flash_download_tools
-
ESP8285 AT 固件:
-
乐鑫官方下载链接: espressif_esp8266-at
4.3. Windows 使用 flash_download_tools 更新 ES8285(这里以 MaixDock 为例):#
-
按照下面配置,连接 MaixDock,
将 USB 转串口模块和ESP8285连接,连接方式前面已经介绍
上电前 需要将 GPIO0 拉低,即将天线旁左上角的触点接地,进入 UART 下载模式。
-
打开 flash_download_tools
-
下载 MaixDock ESP8285 固件
-
选择 ESP8285 串口(一般都是串口号比较大的)
-
设置下载选项:
如图配置相应选项, 注意波特率一定要设置为 115200
-
点击 Start 更新固件,并等待完成更新
-
验证更新是否完成
- 使用 XCOM 波特率 115200, 打开 ESP8285 串口,输出
AT\r\n
,如图提示OK
即刷入成功
- 使用 XCOM 波特率 115200, 打开 ESP8285 串口,输出
4.4. LINUX 使用 esp_tool 更新 ES8285(这里以 MaixDock 为例):#
-
按照下面配置,连接 MaixDock,
-
安装 esptool
pip3 install esptool
Copy
-
下载 MaixDock ESP8285 固件
ls /dev/ttyUSB* # 查看 USB 串口 esptool --port /dev/ttyUSB0 write_flash 0x0 ESP8285-AT-V1.7.4_8Mbit_40Mhz.bin # 烧录固件
Copy
-
验证更新是否完成
使用串口工具, 波特率 115200, 打开 ESP8285 串口,输出
AT\r\n
,如图提示OK
即刷入成功
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)#
可能你曾经用过一些单片机,在手册上都规定了引脚和片上外设功能(就是芯片内部集成的外设,比如 GPIO
、I2C
、SPI
等)的绑定,或者重映射。比如规定了 I2C
只能用 Pin9
和 Pin10
,启动了重映射功能后,只能用Pin11
和Pin12
但是 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
的功能, 执行了这句命令后,引脚28
和GPIO0
就映射(绑定)好了,要取消映射(解绑),则需要调用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()
: 显示图像到 LCDlcd.display(sensor.snapshot())
: 这里就是先执行括号里的获取图像,返回值直接作为参数给 LCD 进行显示