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.

[参考译文] DAC8742HEVM:DAC8742h SPI 通信

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/802295/dac8742hevm-dac8742h-spi-communication

器件型号:DAC8742HEVM
主题中讨论的其他器件:DAC8742HADS8166DAC8741H

您好!

我配置调制解调器设置

REEST:                     0x07 0x00 0x01

MODEM_STATUS 寄存器:   0x20 0xdc 0x24

控制寄存器:          0x02 0x80 0x4c

MODEM_IRQ_MASK 寄存器:0x21 0x7f 0x3f

MODEM_CONTROL 寄存器: 0x22 0x00 0x4d

FIFO_LEVEL_SET 寄存器:   0x25 0x00 0xff

PAFF_Jabber 寄存器:      0x27 0x00 0x02

我发送数据0x23 0x00 0x11用于发送数据、发送数据0xa4 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 用于接收数据。

因此、我接收到正确的数据0xa4 0x01 0x11。

我想制作 hart 帧、并且必须同时发送大量数据。

我发送第一个数据0x23 0x00 0x11、发送第二个数据0x23 0x00 0x77。

但我只是接收第一个数据(0xa4 0x00 0x11)。 我发送数据0xa4 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 、0xff 0xff 0xff 0xff 用于接收数据。  

我已经连接了 MOD_IN 和 MOD_OUT、它配置了 ST MCU (主器件)和 DAC8742h (从器件)。

我不知道调制解调器设置是错误还是发送了错误的数据。

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

    您是否有有关如何连接硬件的原理图或示意图?

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

    尊敬的 Paul:

    我使用外部基准电压和 SPI 通信连接我的 MCU

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

    目的是加载 TX FIFO、然后切换 RTS 位、使器件开始浏览 FIFO 的内容。 我建议您从相同的 MODEM_CONTROL 配置开始、但位0设置为0。 然后、将要传输的所有数据载入 TX FIFO。 如果发送的数据包大于 FIFO、FIFO 级别中断的机制将发挥作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mayikol、

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

    您好、Duke、

    我解决了发送和接收数据的问题。 但我还有一个问题。

    当接收到超过16字节的数据时、仅接收到16字节的数据大小、其余数据丢失。

    我认为、如果我始终如一地读取数据、 即使发生溢出也不会有问题。

    在上面的回答中、您说 FIFO 级别中断的机制起作用。

    您是说我控制 MCU 的 MODEM_IRQ_MASK 寄存器还是 SPI 中断处理程序?

    DAC8742H EVM S/W 中也会出现相同的问题

    谢谢、

    SEO

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

    Mayikol、

    我建议参考数据表第18页的第7.4.3节。 发送 FIFO 和接收 FIFO 都只有16个单元深、这意味着如果您没有始终如一地清除 FIFO、它们将最终填充、任何额外的数据都将丢失。

    利用 FIFO 的最佳方法在第19页的第一段中有描述-它主要描述了如何使用 IRQ 引脚和 MODEM_STATUS 寄存器中的 FIFO_M2D_LEVEL 位来跟踪 FIFO 的电平并确保它不会溢出。 触发该事件的 FIFO 深度由 FIFO_LEVEL_SET 寄存器进行编程、该寄存器包含用于设置发送和接收 FIFO 阈值的位字段。

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

    Mayikol、

    我看到你拒绝了答复。 您能否详细了解您的困惑所在?

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

    杜克

    感谢你的帮助。 我通过读取 Modem_Status_Register 并使用延迟时序解决了接收数据的问题。  

    我还没有使用 IRQ 引脚、因为我没有在硬件中设置它。 最终、解决此问题的时机已经到。 一个字符需要9.16ms。

    因此、我给出了每个读取字符的延迟时间大约为10ms。  

    现在、我尝试传输数据。 MOD_OUT 信号发送、但不从从从器件接收。

    传输数据之前。

    FIFO_LEVEL_SET 寄存器 :0x00、0x0F

    MODEM_CONTROL 寄存器 :0x00、0x08

    我发送的数据大小为15字节。 我设置 RTS 位。

    MODEM_CONTROL 寄存器  :0x00、0x09 (我提供的延迟时间与数据大小一样。)

    MODEM_CONTROL  寄存器之后  :0x00、0x08

    我已检查模拟信号是否正常、调制解调器状态寄存器是否正常。(0x40、0x24)

    我连接我的硬件配置。

    我认为寄存器配置错误。 因为 UART 通信中的同一硬件和帧没有问题。 现在信号是

    从机模块发出但未接收到。 我尝试设置奇偶校验位、但它是无用的。

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

    Mayikol、

    默认情况下、在不修改任何 SPI 寄存器内容的情况下、器件在 SPI 或 UART 接口模式下配置相同。 正如您所了解的、唯一的区别是计时注意事项、因为 SPI 接口的速度可能比 UART 接口快得多。

    我认为有必要检查 IRQ 引脚上发生的情况、以确保为数据包传输正确加载 FIFO。

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

    Mayikol、

    有关此主题的任何新闻?

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

    杜克

    我不确定具体的问题是什么。 我检查了硬件测试、但它不是硬件问题。 我认为结论是 f/w 问题。  

    我使用串行监控程序通过辅助主器件检查了 hart 帧。

    当我发送与主器件相同的帧时、TX 信号会消失、但没有响应。

    在上图中、应答数据是从辅助主机读取的主主机的 Tx 数据。

    如果正常、从器件发送响应信号、但没有响应。

    如果是时序问题、则数据损坏或丢失。 但是、当我通过串行监控检查次级主器件中的 TX 数据时、没有问题。 此外、当我读取 MODEM_STATUS 寄存器时、没有错误。

    是否有任何示例代码或其他方法可以简单地测试 hart 帧?  

    我现在使用的是 DAC8741h 和 ADS8166。  

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

    Mayikol、

    我们为该器件准备的唯一实例代码是 C 头文件、其中包含位字段和寄存器地址定义、可帮助客户快速使用该器件进行编程。 但是、由于所选 MCU 平台在该领域可能存在很大差异、因此我们未生成任何特定于平台的 C 驱动程序文件。 最接近的一点是 EVM GUI 和 USB-2-any 接口。