gpt4 book ai didi

c - 示例代码,关于 MCP23017(16 引脚 IO 扩展器,I2C)作为 7 段 LCD 驱动器的文档

转载 作者:行者123 更新时间:2023-11-30 18:08:19 25 4
gpt4 key购买 nike

Microchip 的 MCP23017 是一款基于 I2C 的 16 引脚 IO 扩展器。我已经能够设置设备一次(设置引脚方向和值),但之后我无法按预期更改值,除非我重置/重新启动设备。这是我第一次初始化它并设置引脚的代码:

  I2C_Start();  I2C_Write(0x40);   // slave address  I2C_Write(0x00);  // address register  ... (sequential mode so next 10 are set to I2C_Write(0x00);  I2C_Write(0x08);  // IOCON: HAEN=1  I2C_Write(0x08);  // IOCON: HAEN=1  ... (sequential mode so next 6 are set to I2C_Write(0x00);  I2C_Write(0xFEu);  // GPIOA  I2C_Write(0x01u);  // GPIOB  I2C_Stop();

在此之后我希望能够切换输出值(0xFE <-> 0x01)。我尝试了这段代码:

  I2C_Start();  I2C_Write(0x40);   // slave address  I2C_Write(0x12);   // address register  I2C_Write(0x01u);  // GPIOA  I2C_Write(0xFEu);  // GPIOB  I2C_Stop();

此时它似乎出去吃午饭,引脚的值似乎是随机的(输入与输出,输出高与低)。如果有人使用过这个 I2C IO 扩展器,请帮助我。即使您不完全确定,我们也非常欢迎您发表评论。注意:此处显示的 I2C API 是一种位爆炸算法,所有时钟周期都有近似值。它们之间的权重为 1ms。

有用的文件(某种):http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf

最佳答案

尝试使用示波器或逻辑分析仪查看 SCL 和 SDA 信号,以检查时序和数据,以确保向 I/O 扩展器发送您认为的值。

关于c - 示例代码,关于 MCP23017(16 引脚 IO 扩展器,I2C)作为 7 段 LCD 驱动器的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com