没啥好说的 还是chatgpt写的 已验证
主要是微雪有几个esp32-s3的板子特别喜欢用这个芯片做扩展引脚 比如lcd屏的rst等这种不敏感的引脚 确实可以丢到扩展引脚上用
from machine import SoftI2C
# 定义寄存器地址
INPUT_PORT_REG = 0x0
OUTPUT_PORT_REG = 0x1
POLARITY_INVERSION_REG = 0x2
CONFIG_REG = 0x3
class TCA9554:
def __init__(self, i2c: I2C, address: int):
self.i2c = i2c
self.address = address
def pin_set_mode(self, pin: int, mode: bool) -> int:
"""
设置引脚模式 (INPUT/OUTPUT)
:param pin: 引脚号 (0-7)
:param mode: 模式 (True 为 INPUT, False 为 OUTPUT)
"""
config_reg = self.i2c.readfrom_mem(self.address, CONFIG_REG, 1)[0]
if mode: # INPUT
config_reg |= (1 << pin)
else: # OUTPUT
config_reg &= ~(1 << pin)
self.i2c.writeto_mem(self.address, CONFIG_REG, bytes([config_reg]))
def digital_write(self, pin: int, state: bool) -> int:
"""
设置引脚电平 (HIGH/LOW)
:param pin: 引脚号 (0-7)
:param stat