【花雕动手做】CanMV K230 AI视觉识别模块之FPIOA 引脚分配

2025-10-271624
AI 快速预览详细 收起
CanMV K230是一款高性价比的RISC-V边缘AI平台,适用于嵌入式AI开发。本文详细介绍了CanMV K230 AI视觉识别模块的FPIOA引脚分配方法,提供了具体的配置步骤和注意事项。通过本文,你可以了解如何正确配置引脚,从而实现嵌入式AI项目的快速部署。
什么是 CanMV K230?
CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。

CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。
K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。

【花雕动手做】CanMV K230 AI视觉识别模块之FPIOA 引脚分配图1

【花雕动手做】CanMV K230 AI视觉识别模块之FPIOA 引脚分配图2

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
驴友花雕
驴友花雕
作者
1、FPIOA 引脚分配
CanMV K230 支持 FPIOA(Field Programmable Input and Output Array,现场可编程输入输出阵列)功能。简单来说,FPIOA 允许将 K230 的任意物理引脚在硬件层面复用为多种接口功能,如 UART、I2C、PWM 等,因此也常被称为 IOMUX(输入输出多路复用器)。
FPIOA 的核心作用是为物理管脚(PAD)分配具体功能。由于 SoC 芯片内部集成了大量功能模块,而可用的物理引脚数量有限,多个模块往往需要共享同一个 I/O 引脚。为了避免冲突并实现灵活配置,FPIOA 提供了功能选择机制,使每个引脚在不同场景下承担不同角色。需要注意的是:同一个 PAD 在同一时间只能启用一种功能。
作为 Kendryte 系列芯片(包括 K230)的关键特性,FPIOA 支持将芯片内部的功能模块(如 UART、SPI、PWM、I2C、摄像头接口等)灵活映射到物理引脚上,从而实现高度定制化的硬件连接方案,极大提升了系统的适配能力与开发灵活性。
理解 FPIOA 的三个核心概念
(1)功能模块与引脚非绑定 K230 的内部功能(如 UART0_TX 信号)并不固定绑定某个引脚,而是可以通过 FPIOA 映射到任意支持该功能的物理引脚。
(2)动态配置能力 在程序运行过程中,开发者可以使用 FPIOA.set_function(pin_number, function_name) 接口动态修改引脚功能,无需更改硬件连接。
(3)复用与排他性 单个引脚可支持多种功能模块(如 UART、PWM、GPIO 等),但在同一时刻只能激活其中一种,确保功能逻辑的唯一性与稳定性。
这种机制使 K230 在 AI 视觉、物联网、嵌入式控制等应用领域具备更强的灵活性与扩展性,是其在硬件设计上的一大优势。
2、FPIOA 常用方法
源码位于 [源码汇总/02.Basic/01.fpioa.py]
执行下述代码
[code]from machine import FPIOA

# 实例化FPIOA
fpioa = FPIOA()

# 打印所有引脚配置
fpioa.help()

# 打印指定引脚详细配置
fpioa.help(0)

# 打印指定功能所有可用的配置引脚
fpioa.help(FPIOA.IIC0_SDA, func=True)

# 获取指定功能当前所在的引脚
fpioa.get_pin_num(FPIOA.UART0_TXD)

# 获取指定引脚当前功能
fpioa.get_pin_func(0)[/code]
可以看到在串行终端中,输出了K230芯片所有的IO口以及支持复用的功能

3、YAHBOOM K230 引脚
为压缩模块体积,我们的 K230 模块并没有将芯片支持的所有引脚都引出来。我们来看一下YAHBOOM K230 常用的一些引脚
(1)散热片旁边的两排排针

1 :GPIO 42,可复用为:GPIO42 / UART1_RTS / PWM0 / QSPI1_D2 / RESV /
2 :GPIO 43,可复用为:GPIO43 / UART1_CTS / PWM1 / QSPI1_D3 / RESV /
3 :GPIO 33,可复用为:GPIO33 / IIC0_SDA / IIS_WS / UART3_RXD / RESV /
4 :GND
5 :GPIO 32,可复用为:GPIO32 / IIC0_SCL / IIS_CLK / UART3_TXD / RESV /
6 :GPIO 26,可复用为:GPIO26 / MMC1_CLK / RESV / PDM_CLK /
7 :GND
8 :GPIO 34,可复用为:GPIO34 / IIC1_SCL / IIS_D_IN0 / PDM_IN3 / UART3_RTS /
9 :5v 输出
10 :GPIO 35,可复用为:GPIO35 / IIC1_SDA / IIS_D_OUT0 / PDM_IN1 / UART3_CTS /
11 :5v 输出
12 :3.3v 输出
!!!在连接12pin GPIO时,请务必确认丝印标识确保正确连接。
(2)USB 口旁边的 通讯接口

1 :5v
2 :GND
3 :UART1_TXD | 可复用为 GPIO9 / PWM4 / UART1_TXD / IIC1_SCL / RESV/
4 :UART1_RXD | 可复用为 GPIO10 / CTRL_IN_3D / UART1_RXD / IIC1_SDA / RESV/
该通讯接口默认为串口 UART1,YbUart模块中初始化代码如下
[code]fpioa.set_function(9, fpioa.UART1_TXD, ie=0, oe=1)
fpioa.set_function(10, fpioa.UART1_RXD, ie=1, oe=0)
uart = UART(UART.UART1, baudrate)[/code]
- 没有更多了 -