我正在将 I2C 驱动程序从 Atmel AVR32 U3 移植到 Energy Micro EFM32GG Cortex-M3 设备。驱动程序使用 Atmel BSP 与 I2C 总线通信,为它提供从设备的地址、寄存器地址和数据。
Energy Micro BSP 没有实现寄存器地址。我的问题是,根据标准的I2C协议,我可以只添加寄存器地址作为发送数据的第一个字节吗?
我正在将 I2C 驱动程序从 Atmel AVR32 U3 移植到 Energy Micro EFM32GG Cortex-M3 设备。驱动程序使用 Atmel BSP 与 I2C 总线通信,为它提供从设备的地址、寄存器地址和数据。
Energy Micro BSP 没有实现寄存器地址。我的问题是,根据标准的I2C协议,我可以只添加寄存器地址作为发送数据的第一个字节吗?
虽然 I 2 C 协议是标准化的,但不同供应商之间的 I 2 C 外围设备不可能相同(或什至相似)。虽然从您的 Atmel 实现中保留 API 可能很有用——为了应用程序代码的可移植性——但您可能不得不完全更改底层实现。
您的参考手册将详细描述其 I 2 C 外设的寄存器接口和硬件操作。您将看到它与相应的 Atmel 外设几乎没有关系,除了由于 I 2 C 协议本身的相似性。此外,DMA 的实现在各个部分之间会有所不同,因此驱动程序也会有所不同。