Ai
1 Star 0 Fork 0

py2012/micropython_pca9557

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
pca9557.py 1.89 KB
一键复制 编辑 原始数据 按行查看 历史
py2012 提交于 2024-11-03 19:38 +08:00 . micropython_pca9557驱动
'''
由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)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/py2012/micropython_pca9557.git
git@gitee.com:py2012/micropython_pca9557.git
py2012
micropython_pca9557
micropython_pca9557
master

搜索帮助