PCA9685 PWM驱动器的Adafruit实现中写入I2C的代码行在哪里



查看PCA9685 python库的源代码,我确实看到了一个名为i2c_busI2C实例被传入,以创建PCA9685类。i2c_bus变量用于创建I2CDevice(I2CDevice的源代码(的实例。但后来我迷失了方向。在某个时刻,这个PWM驱动器应该调用I2CDevice类的写入方法。但这种事从来没有发生过!(FAFAIK(。我还检查了PWMChannel类和PCAChannels类,但都没有做与i2c相关的事情。然后我检查了pca9685_sCompletest.py文件,看到了以下代码:

# Set the PWM duty cycle for channel zero to 50%. duty_cycle is 16 bits to match other PWM objects
# but the PCA9685 will only actually give 12 bits of resolution.
pca.channels[0].duty_cycle = 0x7FFF

这肯定会导致I2C总线上发生一些IO。但是,对于某些i2c总线或设备,没有write方法!在我看来,它几乎像DMA

我肯定找了一个小时了,我一定忽略了什么。

PCA9685类将数据写入I2C总线的机制是什么?

它是UnaryStructStructArray类。这些是从adafruit_register.i2c_structadafruit_register.i2c_struct_array导入的。当您写入UnaryStruct类的对象时,它会生成一个单字节的I2C写入。当您向StructArray写入时,它会生成更大的I2C写入。

非常聪明,但它确实隐藏了实现。

相关内容

  • 没有找到相关文章

最新更新