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.

[参考译文] DAC80508-04EVM:DAC80508 SPI SDO (MISO) 不工作

Guru**** 2473260 points
Other Parts Discussed in Thread: DAC80508

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1543226/dac80508-04evm-dac80508-spi-sdo-miso-not-working

器件型号:DAC80508-04EVM
主题中讨论的其他器件:DAC80508

工具/软件:

SPI 总线出现一些意外行为。 我使用 LPSPI1 总线连接到 NXP RT1176 芯片。 我已经验证了 MCU 的时序看起来不错:数据正在时钟的每个上升沿发送、因此 DAC80508 应该正确锁存。 我现在看到了两个主要问题:

1.当我发送命令(任何命令,读取或写入)时、我只获得我将 DAC80508 发送到要从 SDO 引脚发回的 SDI 引脚的位。 发送 DEVID 寄存器 (0x810000) 的读取命令会在 SDO 引脚 0x810000 上返回相同的值。 其他寄存器的情况类似。 发送写入命令会表现出相同的行为、如果我在写入后再次读取寄存器、则没有变化。 时钟为慢速、2 μ s 周期、20kHz。

这是我只读取 DevID 寄存器的测试:

我假设这意味着 芯片正在“工作“、但出于某种原因、它没有读取或发送数据。

在时序图中、我不满意的一个部分是 CS。 它在时钟脉冲的高电平期间变为低电平。 我不确定是否有必要这样做。 我想、因为它从 SDO 以相同的方式发送回命令、这意味着我的时序在这里是正确的。

这是评估板、因此是 DAC80508ZRTET 芯片、这意味着 SDO 引脚应该是输出引脚而不是 CLR

2.当我为 DAC80508 使用 5V 电源为 VDO 供电时、SDO 线路上的一些返回位会异相。 已附加屏幕截图... 我发送 0x040873 作为测试、然后看到 0x0411dc、从示波器屏幕截图中可以看出、最终位的读取速度太快(忽略这些小干扰,当我检查模拟示波器上的这两条线路时,它们不存在,只是示波器存在串扰问题)

当我将电源切换到 VDO 时、此行为会消失并且位正确对齐、无论是读取还是写入、都会在返回时返回我在 SDI 上发送的相同 24 位帧、然后在 SDO 上返回

我在这里可能会怎么做? 什么是我的缺失?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chris、  

    您是否移除了 J1 上的跳线以断开 EVM 板载 SPI 控制器与器件的连接?  

    您是否确认对 DAC 的写入正常工作? 您能否切换内部基准并测量 VREF 引脚、以检查基准是否真正响应?  

    预计 SDI 上时钟输入的数据会通过 SDO 输出。 这与遵循以下结构的读取命令分开:

    在读取命令和虚拟命令之间、CS 确实需要变为高电平、然后重新变为低电平以访问回读。  

    该器件上有两个独立的电源。 VDD 和 VIO。 您指的是哪一个? 您是否使用 USB 连接?  

    您使用 5V 和 3.3V 供电时、SPI 信号的逻辑电平是多少?  

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您发送编修

    J1 短路:“要使用外部通信、请闭合跳线 J1 以禁用与 FTDI 控制器的连接。“
    J6 处于开路状态:“在将外部电源连接到 VDD 之前、请移除 J6 上的跳线连接器“
    J5 将引脚 1+2 短接:“短接 1-2–VIO 连接到 VDD(默认)“

    外部电源(来自我的开发板)使用香蕉插头连接到 VDD、可以是 5V(导致时序错误)或 3.3V

    接通电源时、VREF 引脚的读数为 2.5V;如果在通过 SPI 发送数据期间未连接电源、则为 2.12V

    我根本不使用 USB 连接

    Vref 似乎没有变化。 这是将 0x0100 发送到 GAIN 寄存器、上部迹线是 VREF 的电压、该电压与 2.5V 之间没有变化

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chris、  

    谢谢。

    我的错、这个跳线充当禁用跳线、所以短路是正确的。  

    J1 简短描述:“要使用外部通信、请闭合跳线 J1 以禁用与 FTDI 控制器的连接。“

    其余跳线正确。  

    您是说这里没有连接 VDD 还是 VIO、只是连接了 SPI 引脚吗? 请勿在这种情况下运行器件、因为它可能会损坏器件。

    和 2.12V(如果未连接电源)

    J12 是开路还是闭合? 该器件具有默认通电的内部基准、但该 EVM 也具有板载基准。 如果在 DAC 断电时将板载基准连接到 VREF、则 DAC 可能会通过内部 ESD 单元将板载基准拉低。

    增益寄存器不会更改 VREF 引脚上产生的基准。 它是一个内部分频信号、输入到 DAC 电阻梯。 您能否确保 J12 未填充、并将 0x0100 写入寄存器 0x3?  

    3.3V SPI 不能与 5V VDD 一起使用。 VIH(逻辑输入高电平)为 VDD、在 5V VDD 时为 3.5V。 3.3V 逻辑不满足该阈值。  

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Katlynne:

    现在、VDD 和 VIO 通过跳线连接、VDD 从我的开发板馈送 3.3V 信号、因此两者都是 3.3V。

    NXP 的 SPI 用作 3.3V 信号。 这就说明了为什么 5V 无法正常工作、VIO 必须与 SPI 总线相同 (3.3V)。 我假设你是 0.7 * VIO ,确认这个屏幕截图从手册:

    在这些测试中、J12 已断开

    仍然没有运行该测试...

    屏幕截图具有:将 0x0100 写入寄存器 0x3、然后读取寄存器 0x1(2 24 个时钟周期)、再将 0x0000 写入寄存器 0x3、然后读取寄存器 3

    以下是需要确认的代码:

    while(1) {

    // Read register 0x1 (should return non-zero)

    status = DAC80508_ReadRegister(handle, DAC80508_REG_DEVID, &reg_value[0]);

    if (status != DAC80508_OK || reg_value[0] != 0x0)

    {

    //return DAC80508_READ_REG_ERR;

    }

    // Write 0x0000 to register 0x3

    status = DAC80508_WriteRegister(handle, DAC80508_REG_CONFIG, 0x0000);

    if (status != DAC80508_OK)

    {

    //return DAC80508_WRITE_REG_ERR;

    }

    // Read register 0x3 (should return 0)

    status = DAC80508_ReadRegister(handle, DAC80508_REG_CONFIG, &reg_value[0]);

    if (status != DAC80508_OK || reg_value[0] != 0x0)

    {

    //return DAC80508_READ_REG_ERR;

    }

    // Write 0x0100 to register 0x3

    status = DAC80508_WriteRegister(handle, DAC80508_REG_CONFIG, 0x0100);

    if (status != DAC80508_OK)

    {

    //return DAC80508_WRITE_REG_ERR;

    }

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chris、

    是的、正确。 由于该器件的 VIO 采用独立电源、因此逻辑高电平为 VIO。 如果需要具有较低逻辑电平的较高模拟电源、您可以使用 5V VDD 和 3.3V VIO。  

    我假设您是 0.7 * VIO、使用手册中的屏幕截图进行确认

    您能否分享上述同一写入序列的模拟视图?  

    看起来您仍然缺少读取命令和下一个虚拟周期之间的 CS 切换功能、因此要在时钟沿输出数据:

    您是否曾尝试过第一步使用 EVM GUI、以确认器件本身没有损坏? 下一步可能是排除电路板/器件出现问题。  

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Katlynne、

    RT1176 上的 CS 引脚存在问题、我在连续模式下没有意识到。 在读取请求和读取操作之间添加 CS、谢谢!

    c.