主控(PCA9536D)
介绍
本模块使用 PCA9536D 芯片作为核心。这是一款基于 I2C 总线的 4 位通用输入输出(GPIO)扩展器,包含输入端口、输出端口、极性反转和配置寄存器。
在 4 路继电器扩展模块中,P0 ~ P3 这 4 个 IO 全部用于控制 4 路继电器,因此库初始化时会直接将 4 个引脚配置为输出模式。
PCA9536D 的 7 位 I2C 地址固定为 0x41,因此同一条 I2C 总线上默认只能存在一个本模块。
寄存器
命令字节
命令字节是写入传输期间地址字节之后的第一个字节,它用作指针,用于指定后续读写的寄存器。
| 命令 | 寄存器 |
|---|---|
0x00 | 输入端口寄存器 |
0x01 | 输出端口寄存器 |
0x02 | 极性反转寄存器 |
0x03 | 配置寄存器 |
PCA9536D只有 4 个 IO,因此寄存器的低 4 位(Bit0 ~ Bit3)有效,高 4 位保留。
寄存器0:输入端口寄存器
该寄存器用于读取当前 4 个 IO 的逻辑电平。写入该寄存器无效。
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 含义 | - | - | - | - | I3 | I2 | I1 | I0 |
| 默认值 | 0 | 0 | 0 | 0 | X | X | X | X |
寄存器1:输出端口寄存器
该寄存器保存 4 个 IO 的输出状态。当引脚被配置为输出模式时,写入这个寄存器即可改变对应引脚的电平。
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 含义 | - | - | - | - | O3 | O2 | O1 | O0 |
| 默认值 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
寄存器2:极性反转寄存器
该寄存器仅对输入模式引脚生效。当某一位写为 1 时,读取输入端口寄存器时会对对应位做逻辑反转。
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 含义 | - | - | - | - | N3 | N2 | N1 | N0 |
| 默认值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
寄存器3:配置寄存器
该寄存器用于设置引脚方向。位值为 1 时对应引脚为输入模式,位值为 0 时对应引脚为输出模式。
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 含义 | - | - | - | - | C3 | C2 | C1 | C0 |
| 默认值 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
对本模块来说,通常会将配置寄存器写为 0b00000000,也就是把 4 个引脚全部配置为输出模式。