您好!
我与 DAC 通信时遇到问题。 ADR0接地、IM 使用芯片地址0001101。
通信以100KHz 的速度加快、信号/时序似乎符合规格、但 DAC 输出保持为0……
问题、 如果芯片地址不是很好、DAC 是否应该将 NAK SDA 发送为1? 因为无论此时发送到它的地址是什么、DAC 都会将 ACK、SDA 返回到0。 我换了器件以防... 同一问题。
感谢您的支持!
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.
您好!
我与 DAC 通信时遇到问题。 ADR0接地、IM 使用芯片地址0001101。
通信以100KHz 的速度加快、信号/时序似乎符合规格、但 DAC 输出保持为0……
问题、 如果芯片地址不是很好、DAC 是否应该将 NAK SDA 发送为1? 因为无论此时发送到它的地址是什么、DAC 都会将 ACK、SDA 返回到0。 我换了器件以防... 同一问题。
感谢您的支持!
尊敬的 Paul:
感谢您的快速回复。 I2C 部分的原理图非常简单、请参阅以下内容:注意出于隐私原因、我在这里只保留了电路的 I2C 部分。
我尝试减小上拉电阻器值、但仍然存在相同的问题
示波器读数 如下所示:黄色表示 SCL、绿色 SDA 和蓝色 DAC 输出。
按照技术规格表中所示的写入序列、我希望 DAC 将 SDA 驱动为低电平以 ACK 芯片地址和写入命令、请注意、在我的代码中、我将在写入写入位为0后立即释放 SDA 引脚
如有任何意见、指南将不胜感激、
感谢您的支持!
采取2:)
尊敬的 Paul:
感谢您的快速回复。 I2C 部分的原理图非常简单、请参阅以下内容:注意出于隐私原因、我在这里只保留了电路的 I2C 部分。
示波器读数 如下所示:黄色表示 SCL、绿色 SDA 和蓝色 DAC 输出。
按照技术规格表中所示的写入序列、我希望 DAC 将 SDA 驱动为低电平以 ACK 芯片地址和写入命令、请注意、在我的代码中、我将在写入写入位为0后立即释放 SDA 引脚
如有任何意见、指南将不胜感激、
感谢您的支持!
作为另一种追求、您可能有一个未使用的 PWM 输出、可用于代替 DAC。 以下意见促使我考虑这一点:
DAC 基准与 MCU 电源电压相同。
2、分辨率只有10位、I2C 速度将更新速率限制在 kHz 的水平。
3.假定 CPU 时钟为12MHz,但情况可能并非如此(或者 MCU 可能处于睡眠状态等)。
PWM 的线性度可能至少与 DAC 一样好、并且在给定12MHz 时钟的情况下、更新速率与 DAC 的更新速率相似、软件开销更小。 另一方面、它需要一个 RC 滤波器和一个缓冲器。 如果电压用于驱动具有固有"惯性"的负载、则 RC 滤波器和缓冲器可能不是必需的。
我不建议只使用 DAC -它可能最适合您的应用、但我确实想分享至少一个替代方案。
另一个观察结果-这是非常广泛和一般的、因为我们当然不知道您的应用的具体情况:0r "AGND 到 DGND"链路的性能可能甚至比它应该避免的"完全不友好"路由更差、因为它会增加大容量电感。 从模拟域到 MCU 的所有高频返回电流都将流过并自动耦合到所有负载中、因为模拟域中的所有数字信号负载与其源(MCU)之间现在有一个通用串联电路元件。 您至少需要在将信号驱动到模拟域(SCL、SDA 等)的 MCU 引脚上配置最低可行驱动强度。 在最近的 Altium 上、IIRC 有一种在 PCB 上定义网络连接区域的方法、而无需使用链接。 添加实际的物理部件以强制实施手动路由规则似乎是一个解决根本问题的方法、即未进行布局审查:它可能会捕获此类内容。 在进行布局时,网名称应该是性能良好的布局的次要,因为它遵循了所布置电路的功能:)布线中通常有一些回旋余地,因为并非所有 AGND 都同样容易受到“数字噪声”的影响。 上述内容同样非常笼统、可能根本不适用于您的情况。
您好、Pasca、
Kuba 为您提供了一些值得考虑的优点。
我将继续帮助调试您的 I2C 通信。 感谢您提供计时范围快照。 它们看起来是正确的。 您之前提供的屏幕截图中的原理图符号对于6引线 SOT 封装引脚排列看起来是正确的、您能否验证您使用的封装尺寸是否匹配? 还要验证 SDA 和 SCL 信号是否到达 DAC 引脚、并验证电源、接地和 ADR0引脚上的电压。 这些引脚中的一个可能连接不良。