ESP32-P4硬件IIC驱动XL9555实现IO扩展
1. 项目概述在嵌入式系统开发中IO扩展是一个常见需求。ESP32-P4作为一款功能强大的微控制器其内置的硬件IIC接口可以方便地连接各种外设。本章实验将重点介绍如何使用ESP32-P4的硬件IIC接口驱动XL9555 IO扩展芯片实现IO口扩展功能。2. 硬件设计2.1 硬件资源实验使用以下硬件资源ESP32-P4开发板XL9555 IO扩展芯片LED指示灯蜂鸣器三个按键2.2 原理图分析XL9555通过IIC总线与ESP32-P4连接SDA连接GPIO33SCL连接GPIO32INT中断引脚连接GPIO36扩展IO分配如下EXIO_0蜂鸣器控制EXIO_8~EXIO_10三个按键输入EXIO_13LED1控制3. IIC协议基础3.1 IIC总线特点IIC(Inter-Integrated Circuit)是一种两线式串行总线具有以下特点仅需SDA(数据线)和SCL(时钟线)两根线支持多主多从架构每个设备有唯一地址标准模式速率100kbps快速模式400kbps3.2 IIC通信时序关键时序信号包括起始条件SCL高电平时SDA由高变低停止条件SCL高电平时SDA由低变高数据有效性SCL高电平期间SDA必须保持稳定应答信号每字节传输后接收方需发送ACK4. XL9555芯片详解4.1 芯片特性XL9555是一款16位GPIO扩展器主要特性工作电压2.3V-5.5V支持400kHz IIC通信可配置输入/输出模式内置上电复位电路中断输出功能4.2 寄存器说明XL9555包含8个寄存器输入端口寄存器(0x00-0x01)读取IO输入状态输出端口寄存器(0x02-0x03)设置IO输出电平极性反转寄存器(0x04-0x05)配置输入极性配置寄存器(0x06-0x07)设置IO方向5. 程序设计5.1 IIC驱动实现使用ESP-IDF提供的IIC驱动API#include driver/i2c_master.h // IIC初始化 i2c_master_bus_config_t bus_config { .i2c_port I2C_NUM_0, .sda_io_num GPIO_NUM_33, .scl_io_num GPIO_NUM_32, .clk_source I2C_CLK_SRC_DEFAULT, .glitch_ignore_cnt 7, .flags.enable_internal_pullup true }; i2c_new_master_bus(bus_config, bus_handle); // 添加设备 i2c_device_config_t dev_config { .dev_addr_length I2C_ADDR_BIT_LEN_7, .device_address 0x24, .scl_speed_hz 400000 }; i2c_master_bus_add_device(bus_handle, dev_config, xl9555_handle);5.2 XL9555驱动函数关键函数实现// 写入寄存器 esp_err_t xl9555_write_byte(uint8_t reg, uint8_t *data, size_t len) { uint8_t *buf malloc(1 len); buf[0] reg; memcpy(buf 1, data, len); esp_err_t ret i2c_master_transmit(xl9555_handle, buf, len 1, -1); free(buf); return ret; } // 读取寄存器 esp_err_t xl9555_read_byte(uint8_t *data, size_t len) { uint8_t reg_addr XL9555_INPUT_PORT0_REG; return i2c_master_transmit_receive(xl9555_handle, reg_addr, 1, data, len, -1); }5.3 按键扫描实现uint8_t xl9555_key_scan(uint8_t mode) { static uint8_t key_up 1; uint8_t keyval 0; if (mode) key_up 1; if (key_up (KEY0 0 || KEY1 0 || KEY2 0)) { esp_rom_delay_us(10000); key_up 0; if (KEY0 0) keyval KEY0_PRES; if (KEY1 0) keyval KEY1_PRES; if (KEY2 0) keyval KEY2_PRES; } else if (KEY0 1 KEY1 1 KEY2 1) { key_up 1; } return keyval; }6. 应用实现6.1 主程序逻辑void app_main(void) { // 初始化NVS、IIC和XL9555 nvs_flash_init(); myiic_init(); xl9555_init(); while(1) { uint8_t key xl9555_key_scan(0); switch(key) { case KEY0_PRES: // 打开LED和蜂鸣器 xl9555_pin_write(LED_1_IO, 0); xl9555_pin_write(BEEP_IO, 0); break; case KEY1_PRES: // 关闭LED xl9555_pin_write(LED_1_IO, 1); break; case KEY2_PRES: // 关闭蜂鸣器 xl9555_pin_write(BEEP_IO, 1); break; } vTaskDelay(pdMS_TO_TICKS(10)); } }6.2 功能验证下载程序后可以通过按键测试功能按下KEY0LED1亮蜂鸣器响按下KEY1LED1灭按下KEY2蜂鸣器停止7. 注意事项与调试技巧7.1 常见问题IIC通信失败检查硬件连接是否正确确认上拉电阻已接(通常4.7kΩ)用逻辑分析仪抓取波形分析时序XL9555无响应确认设备地址正确(默认0x24)检查电源电压是否在2.3V-5.5V范围内测量INT引脚状态判断芯片是否工作7.2 优化建议中断方式优化配置XL9555中断引脚使用GPIO中断替代轮询扫描减少CPU占用率电源管理不使用时进入低功耗模式动态调整IIC时钟速度错误处理增加通信失败重试机制添加超时判断完善错误日志记录8. 扩展应用8.1 多设备扩展XL9555支持通过A0-A2地址引脚扩展最多8个设备为每个XL9555分配不同地址使用IIC多设备通信可实现最多128个GPIO扩展8.2 与其他外设配合连接矩阵键盘驱动多位数码管扩展SPI或UART接口构建复杂的输入输出系统8.3 高级功能开发实现热插拔检测开发状态监控系统构建自动化测试平台集成到物联网节点中

相关新闻

基于YOLO系列算法的车型识别系统开发与实践

基于YOLO系列算法的车型识别系统开发与实践

1. 项目概述常见车型识别系统是基于YOLO系列目标检测算法开发的智能视觉应用,能够自动识别图像或视频中的各类车辆型号。这个系统整合了YOLOv5到YOLOv8多个版本的算法实现,采用PySide6构建用户界面,并提供了完整的训练代码,形成了…

2026/7/26 12:56:26 阅读更多 →
Cocos Creator移动端地形LOD实战:Chunked LOD方案与性能优化

Cocos Creator移动端地形LOD实战:Chunked LOD方案与性能优化

1. 项目概述:为什么远距离地形LOD是移动端开发的“必修课”做开放世界或者大场景游戏的朋友,肯定都遇到过这个头疼的问题:地图做得越大、越精细,远处的山和树还没看清,手机就开始发烫,帧率直线下降。这背后…

2026/7/25 2:56:07 阅读更多 →
鸿蒙 ArkTS 实战:Device Battery Wall 从效率工具到状态管理完整解析

鸿蒙 ArkTS 实战:Device Battery Wall 从效率工具到状态管理完整解析

鸿蒙 ArkTS 实战:Device Battery Wall 从效率工具到状态管理完整解析 前言 Device Battery Wall 是一个面向 设备电量墙 的鸿蒙 ArkTS 单页工具。项目通过条目列表、统计卡片、辅助开关和状态切换,把一个高频效率场景整理为可操作页面。 它服务于 集中…

2026/7/21 15:00:26 阅读更多 →

最新新闻

胡桃工具箱完整指南:Windows原神玩家的智能桌面助手终极解决方案

胡桃工具箱完整指南:Windows原神玩家的智能桌面助手终极解决方案

胡桃工具箱完整指南:Windows原神玩家的智能桌面助手终极解决方案 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/s…

2026/7/26 14:56:50 阅读更多 →
5分钟搞定Windows版Dlib安装:告别编译烦恼的人脸识别库终极指南

5分钟搞定Windows版Dlib安装:告别编译烦恼的人脸识别库终极指南

5分钟搞定Windows版Dlib安装:告别编译烦恼的人脸识别库终极指南 【免费下载链接】Dlib_Windows_Python3.x Dlib compiled binaries (.whl) for Python 3.7-3.14 and Windows x64 项目地址: https://gitcode.com/gh_mirrors/dl/Dlib_Windows_Python3.x 还在为…

2026/7/26 14:56:50 阅读更多 →
如何完全掌控Wand游戏修改器:终极免费解锁方案指南

如何完全掌控Wand游戏修改器:终极免费解锁方案指南

如何完全掌控Wand游戏修改器:终极免费解锁方案指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand游戏修改器的付费限制而感…

2026/7/26 14:56:50 阅读更多 →
脉冲神经网络(SNN)技术突破与应用实践

脉冲神经网络(SNN)技术突破与应用实践

1. 脉冲神经网络技术演进与行业影响脉冲神经网络(Spiking Neural Network, SNN)作为第三代人工神经网络模型,正在突破传统人工神经网络的性能瓶颈。2023年计算机视觉与模式识别会议(CVPR)收录的12篇SNN相关论文中&…

2026/7/26 14:56:50 阅读更多 →
四足机器人强化学习实战:PyTorch训练与策略迁移

四足机器人强化学习实战:PyTorch训练与策略迁移

1. 项目概述:当四足机器人遇上强化学习 去年夏天我第一次在展会上看到宇树Go2机器人时,就被它流畅的步态控制惊艳到了。作为一款消费级四足机器人,Go2不仅具备出色的运动性能,更开放了完善的SDK接口——这意味着我们可以用强化学习…

2026/7/26 14:56:50 阅读更多 →
UE5回合制游戏摄像机控制:基于蓝图的状态驱动系统设计与优化

UE5回合制游戏摄像机控制:基于蓝图的状态驱动系统设计与优化

1. 项目概述:从基础到进阶的摄像机控制 在UE5中制作回合制游戏,摄像机控制往往是决定游戏体验流畅度的关键一环。很多开发者,尤其是从蓝图入门的朋友,在完成了基础的第三人称跟随或固定视角后,会发现随着游戏逻辑的复杂…

2026/7/26 14:55:50 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻