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.

[参考译文] DAC8775:DAC8775的 SPI 通信问题

Guru**** 1624225 points
Other Parts Discussed in Thread: DAC8775, DAC8771EVM, DAC8775EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/947565/dac8775-spi-communication-problem-with-dac8775

器件型号:DAC8775
主题中讨论的其他器件: DAC8771EVM

大家好、

我已经使用 DAC8775设计了自己的应用板。 配置和电压电平看起来正常、但我无法读取状态寄存器并查看端子上的输出。

我使用 STM32微控制器与 DAC8775通信。

以下是在 STM32中为 SPI 完成的配置:

帧格式:Motorola          数据宽度:8位              第一位:MSB 优先          4、预分频器:32

5.时钟极性:高             6.时钟相位:1边沿          7. CRC 计算:禁用   8. NSS 信号类型:软件

电压:DVDD = 5V、REFIN = 5V、VPOS_IN_A 和 VPOS_IN_B = 3.4V、AVDD = 12V

请查看以下原理图。  

此外、请查看以下配置和波形快照:

请在这方面指导我。

您的能力。

Kiran

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

    您好 Kiran、

    看起来图像没有完全嵌入。  您能否将其附加到帖子?

    谢谢、

    Paul

    此外,请注意,发展援助委员会小组的许多成员本周已不在办公室,因此将推迟作出答复。

    谢谢、
    Paul

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

    尊敬的 Paul:

    请查找附加的图像。

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

    好的、谢谢、我将回顾这一点、并在我回到办公室时作出回应。  最晚为星期一。

    谢谢、

    Paul

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

    问题得到解决。

    第一个问题是结构问题。 结构包含一个16位数据成员、该成员由驱动程序指定为8位数据。 通过将16位数据拆分为两个8位数据成员的数组、可以解决该问题

    2、每次写入操作都受控\SYNC 信号、该信号之前为配置和数据写入永久置为低电平。

    请查看以下代码快照。

    谢谢 Paul、

    此致、

    Kiran

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

    您好!

    很高兴您的问题得到了解决。

    如果您需要更多帮助、请告诉我。

    此致、

    AK

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

    您好!

    该委员会工作了两天。 我能够配置0-24mA 电流、并且能够在所有电流输出上获得良好的结果。

    突然 、通道 A 和 B VPOS_IN_A 和 VPOS_IN_B 电压开始显示0V、 通道 C 和 D VPOS_IN_C 和 VPOS_IN_C 电压显示为3.5V。

    SPI 通信仍在工作、但不会获得任何电流输出(所有通道上为0mA)。

    有关硬件或 IC 的任何问题(损坏?)。

    此致、

    Kiran

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

    您好!

    您能否检查进入器件的所有电源是否都在额定值内?

    我无法评论器件损坏。 这些器件是 ESD 敏感型器件、因此如果您对 ESD 不谨慎、器件可能会损坏。

    您能否在 LP_x 节点上探测不工作的通道和工作的通道并将其布置?

    此致、

    AK

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

    您好!

    我有另一个板、其输出不起作用。 该板在1天半内也能正常工作。 突然停止工作。  

    LP_x 和 VPOS_IN_x 上测得的电压

    工作板电压:  

    (在未配置的情况下加电时)

    LP_x = 0V

    VPOS_IN_A = 3.37V

    VPOS_IN_B = 3.35V

    VPOS_IN_C = 3.34V

    VPOS_IN_D = 3.36V

    当我们为0-20mA 的电流配置和加载寄存器值时、VPOS_IN_x 上的电压在2.2至6.2V 之间变化。 这是预期的吗?

    不工作板的电压:

    LP_x = 0V

    VPOS_IN_A = 3.57V

    VPOS_IN_B = 0.22V

    VPOS_IN_C = 3.57V

    VPOS_IN_D = 3.58V

    此外、我还观察到输出不工作的 IC 的温度更高(大约40 - 45°C)

    您能否找出 IC 在一段时间后不提供电流输出的原因。

    此致、

    Kiran

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

    Kiran、

    我不知道您为什么会遇到这个问题。 我没有看到任何具体的问题、那就是你在做什么。 我要注意的是、如果降压/升压转换器被禁用、3.4V 的 VPOSx 值是正常的、而+0.23V 是 VNEGx 的正常值。  

    您能否从器件中读回所有寄存器值、以确保转换器未关断。 是否确定所有周围电路都正常? 是否有任何其他引脚发生过 ESD 或过压事件?

    我将再次查看您的原理图、看看我是否错过了任何内容。

    吴约瑟   

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

    感谢 Joseph、

    是的、我可以从器件读回所有寄存器值。

    2个不工作的不同板的状态寄存器值。

    状态寄存器(0x0B) = 0x1680  

     状态寄存器(0x0B) = 0x1660  

    周围电路看起来正常、我们负责 ESD。

    我在设计中发现了一个错误。 电容器 C79、C83、C61和 C68的电压为16V。

    这是否是 DAC 突然停止工作的原因。  

    此致

    Kiran

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

    Kiran、

    我不确定低电压电容器是否是问题所在。 使用降压/升压电路、电压肯定会超过该值。 我不确定这是否会损坏电容器、或者只是使用更高的电压降低电容值。

    通过查看状态寄存器得到的值、0x1680表示电源正常、0x1660表示电源不正常。 再说一次、我对问题可能是什么不太了解。

    还有几个问题需要尝试。 首先、对于无法正常工作的电路板、您可以通过复位将其断电、然后再次将其上电、然后设置新配置吗? 我要将降压/升压设置为通过钳位模式启用的正、并将正钳位设置为+15V。 您可以将负钳位设置为-15V、但在禁用负输出的情况下、这实际上无关紧要。 然后将器件设置为+10V 输出模式、将输出设置为5V 并启用输出(即半量程)。

    然后使用此方法测量 VPOS 和 VOUT 您可以检查降压/升压转换器的输出和 VPOS 侧是否正常工作。 这将检查降压/升压转换器是否仍可进行电源转换。 对于电流模式输出、自动学习可以自动设置 VPOS、在这里、我只想看到降压/升压仍然可以将输出设置为特定输出。

    如果 VPOS 和 VOUT 未提供正确的值、则我会尝试移除该器件并将其替换为新的器件。 我知道、这可能会因为封装而变得困难。 对于如此大的器件和较大的散热焊盘、您可能需要小心处理所施加的热量(可能是热气来熔化焊料)、并确保不会干扰附近的其余器件。 通过更换器件、我们可以确定这是器件还是周围电路的问题。


    吴约瑟

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

    您好、Joseph、

    根据您的建议、我在一个不工作的董事会上工作。

    将正钳位设置为+/-15V。 配置为0-10V 并发送5V 计数。 我可以获得以下电压。  

    VPOS_IN_A = 15.6V、Vout_A = 0V

    VPOS_IN_B = 0.22V、 Vout_B = 0V

    VPOS_IN_C = 15.4V、 Vout_C = 0V

    VPOS_IN_D = 15.6V、 Vout_D = 0V

    然后、我对通道 A 的工作板进行了相同的练习  

    我得到 VPOS_IN_A = 15.6V、Vout_A = 5V。 工作正常。

    稍后、我在移除通道 B 的所有外部组件(未加电时)后测量了 VPOS_IN_B 和 GND 之间的电阻。 它是7欧姆。

    对于其他通道(A、C 和 D)、它显示为开路。  

    我不确定通道 B 的问题是什么。通道 A、C 和 D 的内部降压/升压电路工作正常、但为什么输出端子上没有显示输出。

    最后、这个问题是如何产生的。

    此致、

    Kiran

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

    Kiran、


    VPOS_IN_B 和 GND 之间的低电阻确实意味着器件已损坏。 但是、我不知道该器件的任何特定故障机制。 VPOS_IN 基本上是 DAC 输出的驱动器的顶部。 我不确定这是否意味着在 DAC 输出端发生了损坏。

    我会查看其他通道以检查降压/升压转换器的运行情况。 您能否使用示波器查看 VPOS 的纹波和输出电压? 我还会查看 LN 节点处的电压和纹波。

    具体而言、我会查找这些电压的较大纹波或尖峰、这些纹波或尖峰可能会超过器件引脚的最大额定值。

    此外、您可能在启动时会遇到较大的瞬态、因此我还会查看降压/升压启动时是否存在尖峰。

    我将与其他对该器件有一定经验的人进行联系。 我不知道类似的故障机制、但可能其他人也有一些不同的经验。


    吴约瑟

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

    谢谢 Joseph、

    请查看以下捕获的波形。

    12V 时的纹波约为300mV。

    PVDD

    VPOS_IN_A

    请查看以下电源。 使用 U23为 DAC8775提供12V 电源

    此致、

    Kiran

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

    Kiran、


    您还能通过交流耦合在示波器上绘制纹波吗? 我也希望看到这一点。

    我的降压/升压曲线图稍有不同。 我在 VPOS 上进行了四舍五入的启动、纹波小得多(~50mV)。 我要注意的是、我使用单通道 DAC8771EVM 进行测试、但测试应该是相同的。

    输出特性因电压设置和输出而异、因此300mV 的纹波不会意外出现。 我看到的图显示了纹波的幅度。 对于您提供的图、我没有发现任何异常情况。

    在损坏的设备中、当设备停止工作时、设备的设置是什么? DAC 输出范围和设置是多少? 此外、对于您显示的图、DAC 输出范围和设置是多少?


    吴约瑟

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

    您好、Joseph、

    今天、我发现了另一个不工作的板(板号 9)。 令人惊讶的是、这次通道3损坏、但所有其他通道都在工作。   

    通道3电压:VPOS_IN_C = 1V。 且输出= 0V。

    具体而言、我将该板用于不同负载的循环测试。 测试电流为24mA。 输出打开(启用) 10秒、关闭(禁用) 500毫秒。

    负载连接到通道。

    CH1 = 360欧姆

    CH2 = 240欧姆

    CH3 = 500 Ω

    CH4 = 120欧姆

    该委员会连续工作4天(10月27日至30日)。 今天上午、我发现频道3不工作。

    请查看以下电路板故障说明:

    我们在两个批次中制造了10块电路板3+7。

    第1号:第1号:第2号 1人工作了1天半。

    一天早上(10-20天前)、当开发人员开始工作时、发现其损坏。

    电路板3:首次上电时、我们没有获得任何输出。

    第10号委员会:第10号委员会也在工作1天(所有渠道)

    在开发人员调试程序时发现此板损坏。  

    所有电路板中的配置都是相同的。

    1:外部基准被使能

    2.电流范围为0-24mA

    选择降压/升压转换器 A、B、C 和 D。

    4.降压-升压转换器正极臂启用、负极臂禁用。

    完全 跟踪模式下的降压/升压转换器

    请查看以下使用交流耦合在 DSO 上捕获的波形。

    现在、我有很多问题:

    1. 12V 电压是否足以驱动 IC 和所有降压/升压转换器(针对所有通道的24mA 输出和满负载)?  

    2.我可以使用24V 代替12V 吗? 是否会有所改进?

    3.我能否直接将12V 电压连接到 VPOS_IN_x 引脚并进行测试、并在代码中禁用降压/升压转换器。

    4.理事会第号 9 (通道3)由于电流持续从0 24mA 切换而损坏。 正确吗?

    5.解决此问题的办法是什么?

    6.我可以继续使用这个芯片。  这是可靠的吗?  

    此致、

    Kiran

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

    Kiran、


    此时、我不确定会发生什么情况来损坏电路板上的器件。 我已经与熟悉此器件的设计人员和其他应用工程师进行了联系、但我没有得到任何迹象表明这是他们以前看到的东西。 我无法为目前没有任何答案的事情提供解决方案。

    对于您的问题、以下是我现在得到的答案。

    1. 12V 电压应足以驱动 IC 和带负载的降压/升压转换器。 我已经针对器件的不同工作模式测量了效率、我认为即使在最大电流输出上、它也不应该成为降压/升压的问题。

    2.您可以使用24V 电源、但我认为这不是问题的一部分。

    3.您应该能够通过将12V 电源连接到 VPOS_IN_x 来测试器件、这在数据表的图137中显示为一个选项、即带有外部电源的 DAC8775。

    4.我不确定器件是否因电流持续从0切换至24mA 而损坏。 我没有听说过这种情况。 我仍然想知道该测试是如何设置的。 器件是否设置为输出24mA、然后将 OTEN 位设置为高电平和低电平? 如果这是故障机制、我想详细了解器件的确切设置方式。

    5、再说一次、我无法找到此器件的此类故障的任何实例、因此我无法说出此时的解决方案是什么

    6.自推出以来,该器件已售出了许多器件,我没有任何理由相信这是一款不可靠的器件。

    我想尝试与您一起调试这个问题、看看我们是否可以确定故障机制。 现在、我想确定此电流输出循环是真正的故障机制、还是其他机制。 根据您的描述、还有另外两个电路板因开发人员而损坏。 他们是否在循环输出电流的情况下运行类似的测试? 您是否知道电路板发生故障时、他们正在运行哪些测试? 他们是否有具有额定电压较低的电容器的电路板? 是否使用较低的额定电压替换了电容器(您曾在上一篇文章中提到过、有些电容器的额定电压低于预期)?

    对于这些设置、您发布了有关该设置的代码片段。 这是启用器件的基本序列吗?
    在该序列中、它显示了写入0x06以选择正确的降压/升压、然后显示了写入0x07以设置降压/升压设置。 然后、它显示写入0x03以选择 DAC、然后写入0x04以配置 DAC。 此器件是否有任何其他设置? 您认为是否有任何其他重要设置或计时?

    数据表的应用部分还描述了针对降压/升压转换器值的特定建议。 第9.1.1节对此进行了说明。 有电感器、电容器和二极管的值。 您能否为原理图中使用的器件提供 BOM?

    我将继续在这里与我们的设计和应用工程师交流、了解此问题的潜在原因是什么。

    吴约瑟

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

    Kiran、

    关于#3、我想注意的另一点是、可以使用外部电源、但您需要确保未启用内部降压/升压。 DAC8775EVM 第2.4.2节对此进行了一些讨论。

    吴约瑟

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

    谢谢 Joseph、

    对于循环测试、我更改 DAC 计数、0和65535、而不是 OTEN 位。 配置为电流输出(0-24mA)模式、我发送65535 (24mA) DAC 计数10秒、发送0 DAC 计数500毫秒。

     请查看下图以更好地理解。

    正如我在上次答复中所写的那样、两个电路板(电路板编号1和3)在代码开发时损坏、而第三个电路板(电路板编号10) 在调试程序时损坏。 我们尝试为所有四个通道发送恒定计数(mA)。 我们没有进行特定的测试,而是通过发送常量计数来验证输出端的 mA 是否正确。 在这种情况下、没有与通道3不工作的第四个电路板(电路板编号9)相同的配置。  

    当我测试电路板1、3和10号时、存在额定电压较低的电容器。 现在、我们已经更换了电容器。

    我认为时间或设置不是问题。 我想,您可以通过查看代码来建议我。 我已将其附在下面。

    今天、我已将12V (AVDD)连接到 VPOS_IN_x、以获得电路板编号 9并根据外部电源更改了配置(禁用降压/升压)。 我可以在所有4个通道(通道3也是)上观察到正确的电流和电压输出。  这意味着、使用外部电源时、通道编号 3在电流和电压模式下工作、而通道3的降压升压转换器不工作。

    因此、我对板1和3尝试了相同的方法。 但是、我没有获得电流和电压输出。 电源压降。 我认为这些板的 DAC 肯定会损坏。  

    此外、我还放置了另外两块电路板(电路板8和7)、用于在100欧姆电阻负载下进行循环测试。 在这里、我逐渐将电流从0增加到24mA。 这两个董事会从10月30日开始不间断工作。

    直到今天、我才能够找出 DAC 损坏的原因。 也是电路板9 (通道3)的降压/升压转换器损坏的原因。 因此、我没有开始测试板号 2、4、5和6。   

    我有疑问:

    1.我是否继续使用外部电源?

    2.除了最大限度地降低功率耗散之外,如果所有降压/升压转换器都与外部电源配合使用,还会使用什么降压/升压转换器?

    请找到以下代码以了解序列。

    此外、请查找随附的 BOM。

    e2e.ti.com/.../TT20_5F00_Controller_5F00_BOM_5F00_2020_5F00_08_5F00_27.xlsx

    #define DAC_NSS_ON HAL_GPIO_WritePin (DAC_NSS_GPIO_Port、DAC_NSS_Pin、GPIO_PIN_RESET)
    #define DAC_NSS_OFF HAL_GPIO_WritePin (DAC_NSS_GPIO_Port、DAC_NSS_Pin、GPIO_PIN_SET)
    #define DAC_CLR_DISABLE HAL_GPIO_WritePin (DAC_CLR_GPIO_Port、DAC_CLR_Pin、GPIO_PIN_RESET);
    #define DAC_CLR_ENABLE HAL_GPIO_WritePin (DAC_CLR_GPIO_Port、DAC_CLR_Pin、GPIO_PIN_SET);

    void DAC_HW_Reset (void)

    HAL_GPIO_WritePin (DAC_RESET_GPIO_Port、DAC_RESET_Pin、GPIO_PIN_RESET);
    HAL_DELAY (100);
    HAL_GPIO_WritePin (DAC_RESET_GPIO_Port、DAC_RESET_Pin、GPIO_PIN_SET);

    void DAC_Init (void)

    DacModisFrame.AddressByte=0x06;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);

    DacModisFrame.AddressByte=0x07;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);

    DacModisFrame.AddressByte=0x03;//选择通道 A、禁用菊花链操作
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x30;
    DAC_OUTPUT (0、DacModisFrame);

    DacModisFrame.AddressByte=0x04;//输出短路限制11至24mA,输出被启用,
    DacModisFram.DataWord[0]= 0xd0;
    DacModisFram.DataWord[1]=0x16;//转换率被启用、电流输出0至24mA
    DAC_OUTPUT (0、DacModisFrame);


    uint8_t AnalogOutput (uint8_t channel、uint16_t DACcount)

    //变量声明
    uint16_t DigitalData=0;
    //代码
    HAL_GPIO_WritePin (DAC_LDAC_GPIO_Port、DAC_LDAC_Pin、GPIO_PIN_SET);

    if (通道=0)

    DacModisFrame.AddressByte=0x06;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x07;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    DacModisFrame.AddressByte=0x03;//选择通道 A、禁用菊花链操作
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x30;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x04;//输出短路限制11至24mA,输出被启用,
    DacModisFram.DataWord[0]= 0xd0;
    DacModisFram.DataWord[1]=0x16;//电流输出0至24mA
    DAC_OUTPUT (0、DacModisFrame);

    否则、如果(通道= 1)


    DacModisFrame.AddressByte=0x06;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x07;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    DacModisFrame.AddressByte=0x03;//选择通道 B、禁用菊花链操作
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x50;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x04;//输出短路限制11至24mA,输出被启用,
    DacModisFram.DataWord[0]= 0xd0;
    DacModisFram.DataWord[1]=0x16;//电流输出0至24mA
    DAC_OUTPUT (0、DacModisFrame);

    否则、如果(通道= 2)

    DacModisFrame.AddressByte=0x06;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x07;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    DacModisFrame.AddressByte=0x03;//选择通道 C、禁用菊花链操作
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x90;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x04;//输出短路限制11至24mA,输出被启用,
    DacModisFram.DataWord[0]= 0xd0;
    DacModisFram.DataWord[1]=0x16;//电流输出0至24mA
    DAC_OUTPUT (0、DacModisFrame);

    否则、如果(通道= 3)

    DacModisFrame.AddressByte=0x06;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x07;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (0、DacModisFrame);
    DacModisFrame.AddressByte=0x03;//选择通道 D、禁用菊花链操作
    DacModisFram.DataWord[0]= 0x01;
    DacModisFram.DataWord[1]=0x10;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_DELAY (20);
    DacModisFrame.AddressByte=0x04;//输出短路限制11至24mA,输出被启用,
    DacModisFram.DataWord[0]= 0xd0;
    DacModisFram.DataWord[1]=0x16;//电流输出0至24mA
    DAC_OUTPUT (0、DacModisFrame);

    其他


    DacModisFrame.AddressByte=0x05;
    DacModisFram.DataWord[0]=(DACcount>>8);
    DacModisFrame.DataWord[1]=(uint8_t) DACcount&0xff;
    DAC_OUTPUT (0、DacModisFrame);
    HAL_GPIO_WritePin (DAC_LDAC_GPIO_Port、DAC_LDAC_Pin、GPIO_PIN_RESET);

    //读取 DAC 数据寄存器

    DacModisFrame.AddressByte=0x85;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (1、DacModisFrame);
    HAL_DELAY (20);
    DAC_OUTPUT (1、DacModisFrame);

    //读取 DAC 状态寄存器

    DacModisFrame.AddressByte=0x8b;
    DacModisFram.DataWord[0]= 0x00;
    DacModisFram.DataWord[1]=0x00;
    DAC_OUTPUT (1、DacModisFrame);
    HAL_DELAY (20);
    DAC_OUTPUT (1、DacModisFrame);


    DigitalData=((((DacMisoFrame.DataWord[0])<<8)|DacMisoFrame.DataWord[1]);

    if (DigitalData=DACcount)
    返回(0);
    其他
    退货(1);

    int main (空)

    /*用户代码 begin 1 */

    /*用户代码结束1 */

    /* MCU 配置------------------------------------------------------- *

    /*复位所有外设、初始化闪存接口和 SysTick。 *
    HAL_Init();

    /*用户代码 begin Init */
    /*用户代码结束初始化*/

    /*配置系统时钟*/
    SystemClock_Config();

    /*用户代码 begin sysinit */

    /*用户代码结束 sysinit */

    /*初始化所有已配置的外设*/
    mx_GPIO_Init();
    mx_SPI4_Init();
    /*用户代码 begin 2 */
    DAC_HW_Reset ();
    DAC_CLR_DISABLE;

    DAC_Init();

    DAC_Count=0x0000;
    /*用户代码末尾2 */

    /*无限循环*/
    /*用户代码在*/时开始
    while (1)

    /*用户代码结束,同时*/

    /*用户代码 begin 3 */

    //AnalogOutput (0、DAC_Count);
    //AnalogOutput (1、DAC_Count);
    //AnalogOutput (2、DAC_Count);
    //AnalogOutput (3、DAC_Count);
    //HAL_DELAY (500);
    //DAC_Count=DAC_Count+5461;

       HAL_GPIO_TogglePin (LED1_GPIO_Port、LED1_Pin);

        
        DAC_Count=0xFFFF;             // CH1打开
        AnalogOutput (0、DAC_Count);
        AnalogOutput (1、DAC_Count);
        AnalogOutput (2、DAC_Count);
        AnalogOutput (3、DAC_Count);
        HAL_DELAY (10000);
        HAL_GPIO_TogglePin (LED1_GPIO_Port、LED1_Pin);

        DAC_Count=0x0000;             //CH1关闭
        AnalogOutput (0、DAC_Count);
        HAL_DELAY (500);

        AnalogOutput (1、DAC_Count);
        HAL_DELAY (500);
        HAL_GPIO_TogglePin (LED1_GPIO_Port、LED1_Pin);
        
        DAC_Count=0xFFFF;             //CH2打开
        AnalogOutput (1、DAC_Count);
        
        AnalogOutput (0、DAC_Count);
        HAL_DELAY (2000);
    //------------------------------------------------

        DAC_Count=0x0000;             //ch3关闭
        AnalogOutput (2、DAC_Count);
        AnalogOutput (3、DAC_Count);
        HAL_DELAY (500);
        HAL_GPIO_TogglePin (LED1_GPIO_Port、LED1_Pin);

    //--------------------------------------------------
        DAC_Count=0xFFFF;             // ch3打开
        AnalogOutput (2、DAC_Count);
        
        AnalogOutput (3、DAC_Count);
        HAL_DELAY (10000);
        HAL_GPIO_TogglePin (LED1_GPIO_Port、LED1_Pin);
     /*用户代码结束3 */
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kiran、


    我需要一段时间才能阅读代码并检查操作顺序、因此可能需要另外一天时间才能返回给您。 我也有其他几个后续问题。

    为了保持一切清晰、电路板1、3和10在调试电路板时损坏、碰巧有一些额定电压较低的电容器。 对于这些损坏的电路板、它们是否都显示从 VPOS_IN_B 到 GND 的短路? 我想查看所有这些电路板是否都具有相同的故障机制。 此外、所有这些是否都使 B 通道失效? 对于这些电路板、它们仅在不更改 IOUT 值的情况下发送静态输出电流。

    对于电路板#9、该电路板的通道 C 发生故障、该电路板在使用降压/升压时使用满量程和零量程输出的交替周期(占空比约为95%)进行测试。 您认为这是不同的故障机制吗? 您是否已检查 VPOS_IN_C 到 GND 的电阻? 如果故障机制相同、我猜使用外部电源不会有什么帮助、因为电源会被拖下来。

    但是、如果您能够使用外部电源、则似乎意味着 DAC 仍在运行、并且通道 C 降压/升压发生故障。 如果您需要、您仍然可以使用它来评估器件、但我仍然想调试这个问题。 但是、我要指出、如果电路板1和3的 VPOS_IN_B 与 GND 之间存在相同的短路、如果外部电源无法维持电源、这将影响 DAC 的运行、并且可能不是 DAC 存在问题。 您可以查看外部电源的拉出电流。

    此外、您是否能够从电路板上移除损坏的器件并将其发送给我? 我想对其进行测试、看看我可以从损坏的器件中测试哪些功能。  

    我已通过 E2E 论坛向您发送了朋友申请。 您应该会收到通知、您可以将我添加为朋友。 这样、我们就可以直接交换消息、您可以发送完整的原理图而无需公开发布。

    我将在明天的帖子中再次尝试查看您的代码和其他评论。


    吴约瑟

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

    感谢 Joseph、

    所有这些都不会显示从 VPOS_IN_B 到 GND 的短路、也不会观察到相同的故障机制。

    在电路板1、3和10中、所有通道均出现故障。

    在第9号电路板中、我观察到了不同的故障机制。  

    CH 3 (9号电路板)的 VPOS_IN_x 与 GND 之间的电阻为470欧姆、而在端子 VPOS_IN_A_B_D 与 GND 之间的电阻为1.7M 欧姆。

    我已通过断开 DAC 并连接外部负载来检查12V 电源。 它工作正常。  

    是的、我一定会将设备发送给您以进行煽动。

    我尝试发送私人消息、但失败了。 首先、我在"收件人"文本框中键入了您的姓名。 如果我转到"主题"文本框、您的姓名将从"收件人"文本框消失。

    此致、

    Kiran

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

    您好 Kiran、

    我的理解是、您正在通过消息/电子邮件与 Joe 进行交流。 我现在要关闭该线程。

    谢谢、

    Paul

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

    谢谢 Paul、

    是的。 您可以关闭该线程。

    此致、

    Kiran