主题中讨论的其他器件:HALCOGEN
工具与软件:
尊敬的专家:
在技术参考手册中的 I2CPDR 寄存器说明(表31-32)中、对这些位进行了如下描述:
SCLPDR:
0 -开漏功能被启用
1 -禁用开漏功能
这与其他 PDR 寄存器中的描述不同(例如、表25-19。 GIOPDR)。 通常、设置为0会禁用开漏、启用推挽、设置为1会启用开漏。
- 这是 i2CPDR 寄存器描述中的错误吗、或者这个寄存器的配置是否不同?
- 没有推挽功能?
谢谢、此致、
最大值
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.
工具与软件:
尊敬的专家:
在技术参考手册中的 I2CPDR 寄存器说明(表31-32)中、对这些位进行了如下描述:
SCLPDR:
0 -开漏功能被启用
1 -禁用开漏功能
这与其他 PDR 寄存器中的描述不同(例如、表25-19。 GIOPDR)。 通常、设置为0会禁用开漏、启用推挽、设置为1会启用开漏。
谢谢、此致、
最大值
尊敬的 Max:
为了执行此测试、我按如下方式配置了引脚:
主要我想禁用内部上拉或下拉、因为开漏启用和开漏禁用之间的主要区别在于、当我们禁用开漏时、写入 DOUT 寄存器的任何值(Logic-0/Logic-1)都将转发到输出 GIO 引脚、也会在 DIN 寄存器上引用相同的值。
然而、如果您启用开漏、那么逻辑0将正确传输到输出 GIO 引脚、并且也会反映在 DIN 寄存器上、但如果您尝试写入逻辑1、则引脚将处于高电平状态、现在外部或内部拉电阻将提供结果。
执行上述配置后、我的测试结果如下:
1.禁用漏极开路并写入逻辑0:
因此、当我禁用开漏并写入逻辑0时、我在 DIN 上获得了相同的值
此外、我的 GIO 输出引脚值也仅是逻辑0。
2.禁用开漏并写入逻辑-1:
同样、当我禁用开漏并写入逻辑1时、我在 DIN 中获得相同的值
我的 GIO 输出值也反映了相同的情况:
3. 启用开漏并写入逻辑-0:
如前所述、对于开漏启用情况、逻辑0也会正确传输到输出 GIO 引脚和 DIN 寄存器。
因此、同样的行为被反映在:
4. 启用 开漏和写入逻辑-1:
这是一个重要条件、输出应该处于高阻抗状态。 您可以看到、即使我在 DOUT 寄存器上写入逻辑1、但 DIN 寄存器中仍显示逻辑0。 这是因为高阻抗状态。
您还可以看到逻辑分析仪输出、它也显示 GIO 引脚上没有电压:
因此、您可以看到、当 PDR 值右为零时、会出现高阻抗状态或开漏状态。 这意味着数据表说明是正确的:
——
谢谢、此致、
Jagadish。
尊敬的 Max:
我还发现 HALCoGen GUI 中出现了错误和生成的代码:
1.您可以看到、我未在 HALCoGen 中启用开漏复选框、这意味着根据 GUI 右侧的内容、开漏处于禁用状态。
但是、如果您验证生成的代码、它会将 logic-0写入 SDA 和 SCL 的 PDR 寄存器、这意味着它将根据我上一次评论中的尝试情况启用开漏。
2.类似地、现在我将根据 HALCoGen GUI 启用开漏:
现在它将逻辑1写入 PDR 寄存器、这意味着根据数据表和我们的测试结果禁用开漏。
我也怀疑、可能是在器件硬件级别、而是相反实现的、因为如果您验证其他外设 PDR 寄存器(如 SCI 和 MibSPI 等)
通常、写入逻辑1将启用开漏、写入逻辑0将禁用开漏、但对于此 i2c 外设、其工作方式相反。 因此、硬件中可能存在一些问题、这可能是它们颠倒了描述的原因。
——
谢谢、此致、
Jagadish。