【发布时间】:2018-04-20 12:45:31
【问题描述】:
我正在用 c 编写嵌入式设备驱动程序。
我有一个具有 3 个不同 I²C 地址的设备。 每个 I²C 地址都有不同的寄存器,可以与寄存器地址一起使用(例如 0xAB)
一些寄存器地址重叠但名称不同。
设备a:0x12有0x00(状态寄存器)
设备 b:0x23 有 0x00(设置中断掩码)
目前我已将这些不同的 0x00 定义为 但是设备b也有不同的其他寄存器
#define DEVICE_A_STATUS (0x00)
#define DEVICE_B_INTMASK (0x00)
#define DEVICE_B_MEH (0xAF)
我将如何做到,只有设备 A 可以访问 a 的 i2c 寄存器地址。
创建一个结构?
最后,我需要将设备地址 (0x12) 和寄存器地址 (0xAF) 传递给函数。这个函数应该能够处理所有 3 个不同的 i2c 设备。 我认为像继承之类的东西可能在 c++ 中起作用,但我如何在 c 中简单、干净地做到这一点?
【问题讨论】:
-
@Lundin 它们是 I2C 设备中的寄存器。
-
@unwind Aah 当然,它们不在芯片上。我应该更仔细地阅读,别管我:)
-
设备 A 和设备 B 是否相似(即它们是否有许多共同的寄存器、提供相似的功能或行为相似)?还是设备 A 和设备 B 不同(即很少有共同的寄存器、提供不同的功能或行为不同)?