当前位置: 首页 > news >正文

03-Machine-5-fpioa.py K230 IO引脚复用功能演示

fpioa.py 为K230的IO引脚复用功能演示程序。

在嵌入式系统中,SoC(System on Chip)通常集成了多种外设模块,如 UART、SPI、I2C、PWM 和 GPIO 等。然而,由于物理引脚数量有限,这些模块往往需要共享引脚。为了解决这一冲突,就需要使用 IOMUX(引脚复用)机制。在 K230 芯片中,这一机制被称为 FPIOA(Field Programmable IO Array)

FPIOA 允许我们为任意引脚分配所需的功能。例如,你可以将引脚 10 设置为 UART0 的发送脚,也可以设置为 GPIO 用于通用输入输出。

K230 芯片内置多个外设资源,包括 5 路 UART、5 路 I2C、6 路 PWM 及最多 64 个 GPIO 输出等,这些外设通过 FPIOA 实现引脚复用。

FPIOA的重要性

K230的FPIOA系统提供了极大的灵活性:

  • 引脚复用: 同一物理引脚可以在不同时间用于不同功能

  • 避免冲突: 可以重新安排功能引脚布局

  • 优化PCB设计: 可以根据布线需要调整功能位置

程序运行后输出:

>>> 
MPY: soft reboot
CanMV v1.4-7-g4618dc2(based on Micropython e00a144) on 2025-09-19; k230_canmv_01studio with K230| pin  | cur func   |                can be func                              |
| ---- |------------|---------------------------------------------------------|
| 0    | GPIO0      | GPIO0/BOOT0/RESV/RESV/RESV                              |
| 1    | BOOT1      | GPIO1/BOOT1/RESV/RESV/RESV                              |
| 2    | JTAG_TCK   | GPIO2/JTAG_TCK/PULSE_CNTR0/RESV/RESV                    |
| 3    | JTAG_TDI   | GPIO3/JTAG_TDI/PULSE_CNTR1/UART1_TXD/RESV               |
| 4    | JTAG_TDO   | GPIO4/JTAG_TDO/PULSE_CNTR2/UART1_RXD/RESV               |
| 5    | JTAG_TMS   | GPIO5/JTAG_TMS/PULSE_CNTR3/UART2_TXD/RESV               |
| 6    | JTAG_RST   | GPIO6/JTAG_RST/PULSE_CNTR4/UART2_RXD/RESV               |
| 7    | IIC4_SCL   | GPIO7/PWM2/IIC4_SCL/RESV/RESV                           |
| 8    | IIC4_SDA   | GPIO8/PWM3/IIC4_SDA/RESV/RESV                           |
| 9    | GPIO9      | GPIO9/PWM4/UART1_TXD/IIC1_SCL/RESV                      |
| 10   | GPIO10     | GPIO10/CTRL_IN_3D/UART1_RXD/IIC1_SDA/RESV               |
| 11   | GPIO11     | GPIO11/CTRL_O1_3D/UART2_TXD/IIC2_SCL/RESV               |
| 12   | GPIO12     | GPIO12/CTRL_O2_3D/UART2_RXD/IIC2_SDA/RESV               |
| 13   | M_CLK1     | GPIO13/M_CLK1/RESV/RESV/RESV                            |
| 14   | GPIO14     | GPIO14/OSPI_CS/RESV/QSPI0_CS0/RESV                      |
| 15   | GPIO15     | GPIO15/OSPI_CLK/RESV/QSPI0_CLK/RESV                     |
| 16   | GPIO16     | GPIO16/OSPI_D0/QSPI1_CS4/QSPI0_D0/RESV                  |
| 17   | GPIO17     | GPIO17/OSPI_D1/QSPI1_CS3/QSPI0_D1/RESV                  |
| 18   | GPIO18     | GPIO18/OSPI_D2/QSPI1_CS2/QSPI0_D2/RESV                  |
| 19   | GPIO19     | GPIO19/OSPI_D3/QSPI1_CS1/QSPI0_D3/RESV                  |
| 20   | GPIO20     | GPIO20/OSPI_D4/QSPI1_CS0/PULSE_CNTR0/RESV               |
| 21   | GPIO21     | GPIO21/OSPI_D5/QSPI1_CLK/PULSE_CNTR1/RESV               |
| 22   | GPIO22     | GPIO22/OSPI_D6/QSPI1_D0/PULSE_CNTR2/RESV                |
| 23   | GPIO23     | GPIO23/OSPI_D7/QSPI1_D1/PULSE_CNTR3/RESV                |
| 24   | GPIO24     | GPIO24/OSPI_DQS/QSPI1_D2/PULSE_CNTR4/RESV               |
| 25   | GPIO25     | GPIO25/PWM5/QSPI1_D3/PULSE_CNTR5/RESV                   |
| 26   | GPIO26     | GPIO26/MMC1_CLK/RESV/PDM_CLK/RESV                       |
| 27   | GPIO27     | GPIO27/MMC1_CMD/PULSE_CNTR5/PDM_IN0/RESV                |
| 28   | GPIO28     | GPIO28/MMC1_D0/UART3_TXD/PDM_IN1/RESV                   |
| 29   | GPIO29     | GPIO29/MMC1_D1/UART3_RXD/CTRL_IN_3D/RESV                |
| 30   | GPIO30     | GPIO30/MMC1_D2/UART3_RTS/CTRL_O1_3D/RESV                |
| 31   | GPIO31     | GPIO31/MMC1_D3/UART3_CTS/CTRL_O2_3D/RESV                |
| 32   | IIS_CLK    | GPIO32/IIC0_SCL/IIS_CLK/UART3_TXD/RESV                  |
| 33   | IIS_WS     | GPIO33/IIC0_SDA/IIS_WS/UART3_RXD/RESV                   |
| 34   | GPIO34     | GPIO34/IIC1_SCL/IIS_D_IN0_PDM_IN3/UART3_RTS/RESV        |
| 35   | IIS_D_OUT0_PDM_IN1 | GPIO35/IIC1_SDA/IIS_D_OUT0_PDM_IN1/UART3_CTS/RESV       |
| 36   | IIC3_SCL   | GPIO36/IIC3_SCL/IIS_D_IN1_PDM_IN2/UART4_TXD/RESV        |
| 37   | IIC3_SDA   | GPIO37/IIC3_SDA/IIS_D_OUT1_PDM_IN0/UART4_RXD/RESV       |
| 38   | UART0_TXD  | GPIO38/UART0_TXD/RESV/QSPI1_CS0/HSYNC0                  |
| 39   | UART0_RXD  | GPIO39/UART0_RXD/RESV/QSPI1_CLK/VSYNC0                  |
| 40   | IIC1_SCL   | GPIO40/UART1_TXD/IIC1_SCL/QSPI1_D0/RESV                 |
| 41   | IIC1_SDA   | GPIO41/UART1_RXD/IIC1_SDA/QSPI1_D1/RESV                 |
| 42   | GPIO42     | GPIO42/UART1_RTS/PWM0/QSPI1_D2/RESV                     |
| 43   | GPIO43     | GPIO43/UART1_CTS/PWM1/QSPI1_D3/RESV                     |
| 44   | GPIO44     | GPIO44/UART2_TXD/IIC3_SCL/RESV/SPI2AXI_CK               |
| 45   | GPIO45     | GPIO45/UART2_RXD/IIC3_SDA/RESV/SPI2AXI_CS               |
| 46   | GPIO46     | GPIO46/UART2_RTS/PWM2/IIC4_SCL/RESV                     |
| 47   | GPIO47     | GPIO47/UART2_CTS/PWM3/IIC4_SDA/RESV                     |
| 48   | IIC0_SCL   | GPIO48/UART4_TXD/RESV/IIC0_SCL/SPI2AXI_DI               |
| 49   | IIC0_SDA   | GPIO49/UART4_RXD/RESV/IIC0_SDA/SPI2AXI_DO               |
| 50   | UART3_TXD  | GPIO50/UART3_TXD/IIC2_SCL/QSPI0_CS4/RESV                |
| 51   | UART3_RXD  | GPIO51/UART3_RXD/IIC2_SDA/QSPI0_CS3/RESV                |
| 52   | GPIO52     | GPIO52/UART3_RTS/PWM4/IIC3_SCL/RESV                     |
| 53   | GPIO53     | GPIO53/UART3_CTS/PWM5/IIC3_SDA/RESV                     |
| 54   | MMC1_CMD   | GPIO54/QSPI0_CS0/MMC1_CMD/PWM0/RESV                     |
| 55   | MMC1_CLK   | GPIO55/QSPI0_CLK/MMC1_CLK/PWM1/RESV                     |
| 56   | MMC1_D0    | GPIO56/QSPI0_D0/MMC1_D0/PWM2/RESV                       |
| 57   | MMC1_D1    | GPIO57/QSPI0_D1/MMC1_D1/PWM3/RESV                       |
| 58   | MMC1_D2    | GPIO58/QSPI0_D2/MMC1_D2/PWM4/RESV                       |
| 59   | MMC1_D3    | GPIO59/QSPI0_D3/MMC1_D3/PWM5/RESV                       |
| 60   | GPIO60     | GPIO60/PWM0/IIC0_SCL/QSPI0_CS2/HSYNC1                   |
| 61   | GPIO61     | GPIO61/PWM1/IIC0_SDA/QSPI0_CS1/VSYNC1                   |
| 62   | GPIO62     | GPIO62/M_CLK2/UART3_DE/RESV/RESV                        |
| 63   | M_CLK3     | GPIO63/M_CLK3/UART3_RE/RESV/RESV                        |
|pin num          |0                                                           |
|current config   |GPIO0,ie:1,oe:1,pd:0,pu:1,msc:0-1.8,ds:2,st:0,sl:0,di:0     |
|can be function  |GPIO0/BOOT0/RESV/RESV/RESV                                  |
function IIC0_SDA can be set to PIN33, PIN49, PIN61
current set PIN49 as IIC0_SDA
not support set slMPY: soft reboot
CanMV v1.4-7-g4618dc2(based on Micropython e00a144) on 2025-09-19; k230_canmv_01studio with K230

源程序如下:

from machine import FPIOA# 实例化FPIOA
fpioa = FPIOA()
# 打印所有引脚配置
fpioa.help()
# 打印指定引脚详细配置
fpioa.help(0)
# 打印指定功能所有可用的配置引脚
fpioa.help(FPIOA.IIC0_SDA, func=True)
# 设置Pin0为GPIO0
fpioa.set_function(0, FPIOA.GPIO0)
# 设置Pin2为GPIO2, 同时配置其它项
fpioa.set_function(2, FPIOA.GPIO2, ie=1, oe=1, pu=0, pd=0, st=1, sl=0, ds=7)
# 获取指定功能当前所在的引脚
fpioa.get_pin_num(FPIOA.UART0_TXD)
# 获取指定引脚当前功能
fpioa.get_pin_func(0)
  1. 程序命令详解:设置引脚2为GPIO2,并同时配置其他电气特性:
    fpioa.set_function(2, FPIOA.GPIO2, ie=1, oe=1, pu=0, pd=0, st=1, sl=0, ds=7)
    除了设置功能,还配置了以下参数:
    ie: 输入使能(1使能)
    oe: 输出使能(1使能)
    pu: 上拉(0禁用)
    pd: 下拉(0禁用)
    st: 施密特触发器(1使能)
    sl: 斜率控制(0为慢斜率,1为快斜率,这里0)
    ds: 驱动能力(0-7,7为最强)

http://www.dtcms.com/a/541664.html

相关文章:

  • 郑州哪里培训网站建设优化好一点庆阳环境包装设计
  • 网站建设工作自策划实施以来网站开发实例社区
  • AI未来--零售行业“AI赋能,价值提升”
  • 京东网站建设策划书项目管理软件哪个好
  • 小程序中获取元素节点
  • 山东省聊城建设学校网站《网站开发实践》 实训报告
  • Android Service 的一个细节
  • 【QT】QTimer定时器读取寄存器的值
  • 2025年Java 面试题汇总(含答案解析)
  • 2025年--Lc221--144. 二叉树的前序遍历(递归版)-Java版
  • 生成式AI辅助教学设计的实践探索:从教案生成到教学评价的全流程优化
  • 做网站小程序挣钱吗互联网定制网站
  • 【场景题】List集合去重
  • 最小 k 个数
  • 镇江建网站佛山市城乡住房建设局网站首页
  • LoRA个人理解
  • 网站备案 固定电话做响应网站
  • ROS2系列 (5) : 使用功能包组织C++节点
  • 信创真的能发展的起来吗?
  • 做属于自己公司的网站wordpress微信启动
  • 【教程】Latex简明使用教程
  • 石家庄市建设局网站信息公开免费php网站开发模板
  • 合合肥网站建设威海推广
  • 如何使用 Spring Security 实现细粒度的权限控制?
  • 柯桥教育网站建设深圳南山区网站建设公司
  • 亿赐客网站怎么样北京公司地址推荐
  • 秋招笔记-10.7
  • 2025-10-28 ZYZOJ aoao round 1 hetao1733837的record
  • 在线自助下单网站网站内容包括哪些
  • 企业网站免费模板深圳创意网站建设