从零玩转CanMV-K230(5)- GPIO例程

该文章已生成可运行项目,


前言

本章介绍基于MicroPython的外设开发案例,在开始之前请确认使用的MicroPython镜像,可以参考 从零玩转CanMV-K230(2)- 环境搭建

K230管脚分布图
在这里插入图片描述

K230内部包含64个GPIO Pin,每个Pin可配置为输入或输出,可配置上下拉,可配置驱动能力。

在介绍IO之前需要先了解FPIOA,FPIOA的主要作用是进行引脚复用的设置,IOMUX主要配置物理PAD(管脚)的功能,由于soc功能多管脚(pads)少,多个功能共享同一个I/O管脚(pads),但是一个pads同一时间只能使用其中一个功能,所以需要IOMUX进行功能选择。IOMUX也叫FPIOA,Pin multiplexing,管脚功能选择等。
在这里插入图片描述

一、API介绍

本文档主要介绍machine模块下的Pin类API。
pin = Pin(index, mode, pull=Pin.PULL_NONE, drive=7)

**【参数】**

index: 引脚号,取值:[0,63]

mode: 输入或输出模式

pull: 上下拉配置,可选参数,默认PULL_NONE

drive: 驱动能力配置,可选参数,默认7

Pin.init(mode, pull=Pin.PULL_NONE, drive=7)

配置引脚模式,上下拉,驱动能力

【参数】

mode: 输入或输出模式

pull: 上下拉配置,可选参数,默认PULL_NONE

drive: 驱动能力配置,可选参数,默认7

【返回值】

无

Pin.value([value])

获取引脚输入或设置引脚输出

【参数】

value: 输出值,可选参数,如果不传参数则返回输入值

【返回值】

返回空或当前引脚输入值

Pin.mode([mode])

获取或设置引脚输入输出模式

【参数】

mode: 输入输出模式,可选参数,如果不传参数则返回当前输入输出模式

【返回值】

返回空或当前引脚输入输出模式

Pin.pull([pull])

获取或设置引脚上下拉配置

【参数】

pull: 上下拉配置,可选参数,如果不传参数则返回当前上下拉配置

【返回值】

返回空或当前引脚上下拉配置

Pin.drive([drive])

获取或设置引脚驱动能力

【参数】

drive: 驱动能力,可选参数,如果不传参数则返回当前驱动能力

【返回值】

返回空或当前引脚驱动能力

Pin.on()

设置输出高

【参数】

无

【返回值】

无

Pin.off()

设置输出低

【参数】

无

【返回值】

无

Pin.high()

设置输出高

【参数】

无

【返回值】

无

Pin.low()

设置输出低

【参数】

无

【返回值】

无

二、示例代码

因为我这块CanMV上没有可以控制的led灯,这里使用按键进行测试;
在这里插入图片描述
在这里插入图片描述
这里我们使用Key0做测试,可以看到他对应的IO是52,示例代码如下:

from machine import Pin
from machine import FPIOA
import time
#将GPIO52配置为普通GPIO模式
fpioa = FPIOA()
fpioa.set_function(52,FPIOA.GPIO52)
KEY=Pin(52,Pin.IN,Pin.PULL_UP) #构建KEY对象

while True:
    if KEY.value()==0: #按键被按下
        time.sleep_ms(10) #消除抖动
        if KEY.value()==0: #确认按键被按下
            print('KEY down')
    while not KEY.value(): #检测按键是否松开
        pass

在这里插入图片描述


总结

本章节介绍了GPIO例程的使用方法,GPIO很常用,可以结合K210相关教程进行学习。

本文章已经生成可运行项目
CanMV K230 开发板是一款基于 Kendryte K210 芯片的嵌入式开发平台,支持多种外设接口,包括用于连接 LCD 显示屏的接口。对于 CanMV K230 上使用 LCD 显示屏的方法和相关资料,以下是关键信息和技术要点: ### LCD 接口支持 CanMV K230 开发板通过其丰富的 GPIO 和并行接口支持多种类型的 LCD 屏幕,例如 8080 并口、RGB 接口或 SPI 接口的屏幕[^1]。具体使用的引脚配置会根据所选的显示屏类型而变化。 ### 驱动方式 在 CanMV K230 上驱动 LCD 屏幕通常涉及以下几个步骤: 1. **初始化 LCD 控制器**:K210 芯片内部集成了 LCD 控制器模块,需要正确配置寄存器以匹配屏幕的分辨率和时序要求。 2. **设置显示缓冲区**:将帧缓冲区分配到外部 SRAM 或芯片内部 RAM 中,并确保其地址对齐满足硬件要求。 3. **刷新与更新**:通过 DMA 或直接访问的方式将图像数据发送到 LCD 屏幕进行显示[^1]。 ### 示例代码(LCD 初始化) 以下是一个基于 CanMV K230 的简单 LCD 初始化示例代码片段,假设使用的是 8080 接口的 TFT LCD: ```c #include "lcd.h" #include "k210_soc.h" void lcd_init() { // 配置 LCD 引脚为复用功能 gpio_set_function(LCD_RS_PIN, GPIO_FUNC_LCD); gpio_set_function(LCD_WR_PIN, GPIO_FUNC_LCD); gpio_set_function(LCD_RD_PIN, GPIO_FUNC_LCD); gpio_set_function(LCD_CS_PIN, GPIO_FUNC_LCD); // 初始化 LCD 控制器 lcd_controller_init(LCD_WIDTH, LCD_HEIGHT, LCD_COLOR_DEPTH); // 设置帧缓冲区地址 lcd_set_frame_buffer((uint32_t *)frame_buffer); // 启动 LCD 显示 lcd_enable_display(1); } int main(void) { // 系统初始化 sysctl_clock_enable(SYSCTL_CLOCK_LCD); // 初始化 LCD lcd_init(); while (1) { // 主循环中可以进行图像更新或其他操作 } } ``` ### 图像显示与刷新 为了实现高效的图像刷新,建议使用双缓冲机制来减少视觉撕裂现象。可以通过定时器中断或 VSYNC 信号触发缓冲区切换。此外,还可以利用 K210 的 DMA 功能加速图像数据传输过程[^1]。 ### 开发资源与文档 - **官方 SDK 文档**:CanMV 提供了完整的 SDK 包含 LCD 驱动库函数及示例代码,开发者可以从 [CanMV 官方 GitHub 仓库](https://github.com/canmv/kendryte-standalone-sdk) 获取最新版本。 - **硬件手册**:查阅《Kendryte K210 Datasheet》和《CanMV K230 User Manual》,了解详细的 LCD 控制器寄存器配置方法及电气特性参数[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叶与花语

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

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

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

打赏作者

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

抵扣说明:

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

余额充值