通过 SPI 从 DAC80508读取的值始终为0xFF。
观察结果:
MOSI: 在 DAC80508的引脚15 (SDI)上观察到正确的输出。
MISO:DAC80508的引脚14 (SDO)上观察到的输出始终为0xFF。
SCLK:观察到时钟。
nCS:观察芯片选择。
电压电平:
引脚1 (REF):介于2和3伏之间
引脚16 (VIO):介于3和4伏之间。
附加在逻辑分析仪 Saleae 上捕获的数据。
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.
通过 SPI 从 DAC80508读取的值始终为0xFF。
观察结果:
MOSI: 在 DAC80508的引脚15 (SDI)上观察到正确的输出。
MISO:DAC80508的引脚14 (SDO)上观察到的输出始终为0xFF。
SCLK:观察到时钟。
nCS:观察芯片选择。
电压电平:
引脚1 (REF):介于2和3伏之间
引脚16 (VIO):介于3和4伏之间。
附加在逻辑分析仪 Saleae 上捕获的数据。
继续发送电子邮件/消息
我们在定制电路板上使用 DAC80508、如下所示。
跟踪电子邮件中的逻辑分析仪(Saleae)屏幕快照图像说明
1) A)将值0x000A 写入触发寄存器(地址0x05)以执行软复位。
命令:0x05、0x00、0x0A
1) b)触发寄存器(地址0x05)读取值0xFFFFFF.
命令:0X85、0x00、0x0A、 0X85、0x00、 0x0A。
1) c)器件 ID 寄存器(地址0x01)读取值0xFFFFFF.
命令:0x81、0x00、0x00、 0x81、0x00、0x00、
1) d)向配置寄存器(地址:0x03)写入0x0000、以便在 CS 为低电平时启用串行接口并驱动 SDO。
命令: 0x3、0x00、0x00
1) e)配置寄存器(地址0x03)读取值0xFFFF。
命令: 0X83、0X00、0x00、 0X83、0X00、0x00。
1) f)增益寄存器(地址0x04)读取值0xFFFF。
命令: 0x84、0x00、0x00、 0x84、0x00、 0x00
1) g)状态寄存器(地址0x07)读取值0xFFFF。
命令: 0x87、0x00、0x00、 0x87、0x00、 0x00
2) 2)将值0x00写入 DAC0 (地址:0x08)、这将看到输出逻辑电压0、但电压 电平为 aprox。 观察到2.5V。
命令: 0x08、0x00、0x00
3)和4) DAC0 (地址:0x08)读取值0xFFFF。
命令: 0x88、0x00、0x00、 0x88、0x00、 0x00
5) 5)将值0x00写入 DAC1 (地址:0x09)、 这将看到输出逻辑电压0、但电压 电平为 aprox。 观察到2.5V。
命令: 0x09、0x00、0x00
6) DAC1 (地址:0x09)读取值0xFFFF。
命令: 0x89、0x00、0x00、 0x89、0x00、 0x00
注1:从 DAC80508读取数据时、在执行读操作的前3个字节后、通过改变延迟来执行测试。
"有延迟"示例:1秒、10微秒。
"无延迟(执行前3个字节的读取操作后无延迟例程调用)。 示例:发送前三个字节、然后发送后三个虚拟字节。
注2:
还执行了低于2的测试、但输出保持恒定。
1) 1)将 DAC0 寄存器值从0x00更改为0xFF。
2) 2) 将 DAC1 寄存器值从0x00更改为0xFF00。
您好 Katlynne、
感谢您处理我的问题、
> Katlynne :您是否通过配置寄存器中的 DSDO 位启用了 SDO?
Bharat:配置寄存器值设置为0。 其中包括 Bit9 (DSDO)和 Bit10 (FSDO)。
如消息1中的第一幅图像/附件所示
在第二个消息点{1) d)}中进行了说明。
问题:写入操作是否有任何问题?
> Katlynne: 您是否确认能够写入 DAC? 您可以尝试禁用/启用内部基准。
Bharat:我可以在逻辑分析仪上看到写入事务、如之前的附件所示。
引脚1 (REF)输出电压介于2和3伏之间。 配置寄存器的位8 (REF-PWDWN)设置为0、表示使用内部基准。
问题:通过启用和禁用内部基准。 这是否意味着设置/清除位8 (REF-PWDWN)?
如果是这种情况、您对它有何期望? 换句话说、通过设置/清除 REFPWDWN 来解释什么。
> Katlynne: 表示您没有看到输出电压发生变化?
Bharat:是的、未观察到输出电压变化。
我想通知大家、通过向触发寄存器(地址= 0x5)写入值0xA 来执行软复位。
我的理解: 这将把 SYNC 寄存器(地址= 0x2)放置在0xFF00。
相应的 DAC 输出设置为在 CS 上升沿立即更新。
问:请问我是否遗漏了什么?
您好 Bharat、
首先、我想确认您可以成功写入 DAC。 正确、将0xA 写入触发寄存器将触发软复位、但如果无法成功写入、则无法触发软复位。 当 DAC 上电时、同步寄存器将默认为0xFF00、而无需发出软件复位。
请尝试写入配置寄存器以关闭内部基准。
将0x0100写入寄存器0x3。 如果这成功、您将在 REF 引脚上看到0V。 当内部基准被启用时、 您应该在 REF 引脚上看到2.5V 的电压、正如您已经观察到的那样。
如果未成功、 则 SPI 命令有问题。 请向我发送此写入命令的范围截屏。 时序可能不正确、或者您使用的 SPI 模式可能错误。 我们可以在您确认结果后对问题进行调试。
最棒的
Katlynne
您好 Katlynne、
在进行建议的更改" SPI 模式1、CPOL = 0、CPHA = 1"后
SPI 写入工作正常。
将0x0100写入寄存器0x3 => REF 引脚(1)压降至~0.5V。
图1:SPI 写入
SPI 读取仍然不起作用。
图2:SPI 读取
Output0 (引脚2)和 Output1 (引脚3):无变化。 使用内部基准电压时、始终为~2.5V。
此致
Bharat Khanna
您好 Katlynne、
我们使用 的是"DAC80508MC"。
主题1:
1) 1)引脚的初始状态为高电平(上拉)。 该引脚仅用于从我们的一侧读取数据。
根据数据表:"CLR 引脚上的低电平值会导致 配置为清零操作的通道的 DAC 输出更新其输出 寄存器并输出到复位值: 中量程(DACx0508M)。 将 CLR 引脚置为高电平会导致 器件退出清零模式。"。
2) 2)如果您在前一条消息中查看 SPI 读取映像。 引脚在 极短的时间内读为低电平。 这是个问题吗?
主题2:
> Ktlynne: MC (或 ZC)有一个清零引脚,而不是 SDO 引脚。
1) 1)我的理解 是、我们无法将此引脚用作 SDO。 是这样吗?
主题3:
而不考虑读取操作。 由于 SPI 写入被确认 并且 IC 在这样的设置中启动、写入 地址0x8至0xF 应该反映引脚 OUT0至 OUT7的变化。 由于未在 OUTX 引脚上观察到电压变化、是否缺少任何特定的寄存器设置?
此致
Bharat Khanna
你好 Katlynne
感谢您的支持。
--------------------------------------------------------------------
总结:
我想通知大家、下面的更改使 DAC 正常工作。
1) 1)将引脚14 (SDO/CLR)引脚始终设置为高电平。
在 DAC80508MC 模块中、引脚14用作 CLR 引脚。
2) SPI 模式1、CPOL = 0、CPHA = 1"为必填项。 DAC 在时钟的上升沿上运行。
----------------------------------------------------------------------
您能在下面澄清一下吗?
> Ktlynne: MC (或 ZC)有一个清零引脚,而不是 SDO 引脚。
我的理解 是、我们无法将该引脚用作 SDO。 是这样吗? 如果不是、需要什么寄存器设置来使引脚14成为 SDO?
此致
Bharat Khanna