海
我使用图24f 系列作为 I2C 主设备、I2C 从设备为 adc101c027、SCL 为400kHz、ADC101C027的地址引脚悬空、因此根据其数据表、其地址为50h。 我想读取转换寄存器中的数据、其 addr 为00h、我正在使用的 IDE 是 MPLAB v8.53 (c30编译器)。 首先、我发送 addr 50h、然后在重复起始之后发送 addr 00h、然后在读取位被置位的情况下再次发送50h。 这种方法是否正确?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
海
我使用图24f 系列作为 I2C 主设备、I2C 从设备为 adc101c027、SCL 为400kHz、ADC101C027的地址引脚悬空、因此根据其数据表、其地址为50h。 我想读取转换寄存器中的数据、其 addr 为00h、我正在使用的 IDE 是 MPLAB v8.53 (c30编译器)。 首先、我发送 addr 50h、然后在重复起始之后发送 addr 00h、然后在读取位被置位的情况下再次发送50h。 这种方法是否正确?
海
在数据表第24页中,给出了两种读取操作方法,我不理解如何预设地址指针。 我按照图27进行编码。
starti2c-设置起始位
写入从机地址(50h)、包括读取位、它变为 A0、然后我发送 conv reg add 00 (WRITE bit set)、然后重复起始、再次发送具有读取位 set (A1)的地址、这样我就读取了 PIC24F 中 I2C rcv 寄存器中的值。 它返回0b、根据数据表、读取我发送的第二个字节、我这样做了、然后再次调用读取函数。 但这次我也得到0b。 由于 ADC 转换寄存器为16位、我必须获得2字节数据、因为转换后的数据仍然是寄存器的 d[11:2]。 pic 的 I2C rcv reg 是8位。 我现在很困惑。 请帮助确定这种情况
您好!
图27是一个很好的示例、展示了如何写入指针、然后读取。 要读取转换结果、我建议 在输入端使用已知的直流值、这样您就知道输出端应该达到的期望值。
您 正在执行的第一个帧是正确的、使用写位发送地址。
在这之后、第二个帧、您需要设置指针寄存器、如下所示。 要读取转换结果、您需要将最后三个位设置为0、因此命令将为0h。
在第三个帧中、主器件 将执行重复启动。 然后再次发送帧1中的地址字节、但读取位被置位、这意味着它将为:A1h
最后两个帧将是转换结果。 请注意、转换结果来自位2-11。 转换结果寄存器如下所示