代码拉取完成,页面将自动刷新
'''
由PY学习笔记编写,适用于立创实战派ESP32S3开发板。
相关教程请关注微信公众号“PY学习笔记”
'''
from machine import I2C, Pin
import ustruct
# PCA9557寄存器地址
PCA9557_INPUT_PORT = 0x00
PCA9557_OUTPUT_PORT = 0x01
PCA9557_POLARITY_INVERSION_PORT = 0x02
PCA9557_CONFIGURATION_PORT = 0x03
# PCA9557 GPIO位定义
LCD_CS_GPIO = 0x01 # PCA9557_GPIO_NUM_1
PA_EN_GPIO = 0x02 # PCA9557_GPIO_NUM_2
DVP_PWDN_GPIO = 0x04 # PCA9557_GPIO_NUM_3
# PCA9557 I2C地址
PCA9557_SENSOR_ADDR = 0x19
# I2C初始化
i2c = I2C(0,scl=Pin(2), sda=Pin(1), freq=100000) # 使用GPIO5为SCL,GPIO4为SDA,频率为100kHz
# 写寄存器函数
def pca9557_write_reg(reg_addr, data):
i2c.writeto_mem(PCA9557_SENSOR_ADDR, reg_addr, ustruct.pack('B', data))
# 读寄存器函数
def pca9557_read_reg(reg_addr):
return i2c.readfrom_mem(PCA9557_SENSOR_ADDR, reg_addr, 1)[0]
# 初始化PCA9557 IO扩展芯片
def pca9557_init():
# 写入控制引脚默认值 DVP_PWDN=1 PA_EN=0 LCD_CS=1
pca9557_write_reg(PCA9557_OUTPUT_PORT, 0x05)
# 把PCA9557芯片的IO1 IO2 IO3设置为输出,其它引脚保持默认的输入
pca9557_write_reg(PCA9557_CONFIGURATION_PORT, 0xF8)
# 设置PCA9557芯片的某个IO引脚输出高低电平
def pca9557_set_output_state(gpio_bit, level):
data = pca9557_read_reg(PCA9557_OUTPUT_PORT)
if level:
data |= gpio_bit
else:
data &= ~gpio_bit
pca9557_write_reg(PCA9557_OUTPUT_PORT, data)
# 控制PCA9557_LCD_CS引脚输出高低电平
def lcd_cs(level):
pca9557_set_output_state(LCD_CS_GPIO, level)
# 控制PCA9557_PA_EN引脚输出高低电平
def pa_en(level):
pca9557_set_output_state(PA_EN_GPIO, level)
# 控制PCA9557_DVP_PWDN引脚输出高低电平
def dvp_pwdn(level):
pca9557_set_output_state(DVP_PWDN_GPIO, level)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。