团队、
客户提出的有关 DAC161S997与 DAC161S997EVM (未焊接 MSP430)上的 STM32 MCU (STM32l476RG)结合使用的问题。
SPI 是根据文档进行配置的、但在任何情况下、它们都没有观察到 DAC 和 MCU 之间的正确 SPI 通信链路(也检查了数据表中图14中提到的内容)。
是否需要研究任何特定的问题来解决此问题? 他们最终希望通过 USART (同步 UART)从 STM32进行通信。
谢谢。
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.
团队、
客户提出的有关 DAC161S997与 DAC161S997EVM (未焊接 MSP430)上的 STM32 MCU (STM32l476RG)结合使用的问题。
SPI 是根据文档进行配置的、但在任何情况下、它们都没有观察到 DAC 和 MCU 之间的正确 SPI 通信链路(也检查了数据表中图14中提到的内容)。
是否需要研究任何特定的问题来解决此问题? 他们最终希望通过 USART (同步 UART)从 STM32进行通信。
谢谢。
您好 Bart、
我不确定您说" DAC 正在对 SPI 通信做出响应、但不符合数据表中所述的协议。"时的意思。 您能否分享您看到的内容的范围截图? 此外、请务必记住、DAC161是环路供电型器件、因此需要为 L+和 L-提供浮动电源环路。
我提到这一点是因为我在您的原理图中没有看到新 MCU 和器件的接地端。 MCU 的接地端必须连接到 DAC161的 COM 接地端、并且该接地端不应连接到环路的 L-节点、这一点很重要。 COM 接地电位始终高于 L-。 如果环路电源不悬空、L-有可能被连接至与微控制器一样的接地(例如、接地、通过 MCU 的 USB 电源)。
谢谢、
Paul
尊敬的 Paul:
我们还没有相应的范围(可能会得到)、但要先解释一下、请查看图 14在数据表的第二部分(第7、第8和第9字节)、我们是否应该接收到与第4、第5和第6部分相同的数据?
如果我们将数据保存到 DACCODE 寄存器、在下一个步骤中从该寄存器读取数据(分别增加和减少写入的值)、我们会在读取中看到类似的效果: 在第二个数据包中(如图14所示读取数据时)、该数据包中的前两位完全不正确、而第三个数据包根据 PRV 中写入的数据增加或减少。 步骤。
电路板和 STM32通过 COM 而不是 L-接地(原理图中未显示)。 此电路板由9Vdc 电源供电、由 L+和 L-供电。
他可能只是软件问题吗? 您是否已将 SPI 主器件配置为正确返回全部三个字节? 如果前两个错误、第三个错误、则我怀疑您有阵列索引问题。 MCU 上的大多数 SPI 模块都要求您规定要读回的字节数。
对此进行的快速测试是将 MISO 和 MOSI 线路短接在一起。 MISO 线路应具有主器件发送的准确数据。 使用数据分析器或示波器也可以快速验证这一点。
COM 和 L-之间的电压差是多少?
什么是 ERRB 电压?
谢谢、
Paul
您好 Bart、
我想从保罗离开的地方接你。 DAC161S997始终重复 SDO 上先前写入的24位(3字节)输出、并与 CSB 同步。 唯一的例外情况是前一条 SPI 命令是读取地址操作。 对于测试用例、您能否详细说明发送到器件的写入命令序列? 您是否正在使用器件的受保护写入模式功能?
COM 和 Loop 之间的电压差-对我来说是可以的。 ERRB 为0V 表示存在故障、您必须重新读取状态寄存器以确定故障。 请注意、默认情况下、DAC161S997需要连续 SPI 通信、否则它将指示故障。
此致、
请
您好、Reza、
这到底意味着需要连续 SPI 通信、您是说使用 NOP 寄存器并在序列之间向其发送信息吗? 如果我们发送24位、然后再发送24位、响应是否正确?
我们尝试使用受保护的写入模式和不使用、结果相同。 我们的序列是-尝试将数据写入 DAC161_ERR_CONFIG_REG (comenda、MSB、lsb、nop_reg、0x55、 0x55)、读取状态(comenda、0x55、0x55、nop_reg、0x55、 0x55)、 DACCODE (Comenda、MSB、lsb、nop_reg、 0x55、0x55)、 读取 DACCODE (COMenda、0x55、0x55、nop_reg、0x55、 0x55)。
了解到如果我们不读取或写入任何数据到寄存器中、DAC 需要将没有实际用途的数据接收到 NOP 寄存器中?
谢谢你。
您好 Bart、
加电后、DAC ERR_CONFIG 寄存器配置为在 ERRB 驱动为低电平时报告 SPI 超时错误和此类错误。 为了避免这种情况、总线上应始终存在由同时位于 ERR_CONFIG 寄存器中的 SPI_TIMEOUT 位定义的周期内的 SPI 通信。 当来自主机处理器的通信中断时、它充当看门狗计时器来触发警报。 通过向位0写入"1"、可以在 ERR_CONFIG 寄存器中禁用此功能。
您的 SPI 操作的常规序列应该起作用。 您能否提供有关不同命令的"comenda"代表的详细信息? 此外、此时、如果您可以提供 SPI 的示波器屏幕截图以供进一步检查、这将有所帮助。 具体而言、我正在寻找 CSB 边沿如何与您的24位帧对齐。
此致
请
您好、Reza、
感谢您的耐心等待。 下面您可以找到随附的示波器快照、其中显示了写入 daccode 寄存器的操作、然后读取该寄存器。
通信方案是:发送 0x04、(2个字节的数据)、0x02、0x55、0x55、0x55、因此总共为6字节。 接下来、尝试通过发送0x04、0x55、0x55、0x02、0x55、0x55、0x55进行读取。 正如您将在范围内看到的、第3、第4和第5个字节中存在一个影响、具体取决于我们尝试写入 daccode 寄存器的内容。
配置从复位启动、然后向 ERR_CONFIG 寄存器写入值并读取状态。 遗憾的是、它不会改变器件的工作方式。 如果器件在电源供电后始终处于故障状态、则看起来更像是硬件问题而不是软件问题。
期待您的反馈。
MOSI -红色
MISO -黄色
CS -蓝色
e2e.ti.com/.../scope_5F00_shots_5F00_24_5F00_06_5F00_2020.zip
您好 Bart、
感谢您的更新。 使用这些示波器屏幕截图非常有用。 您能否确认蓝色迹线是否确实是 CS? 如果是、这可能会解释您遇到的问题。 SPI 帧之间的 CS 应为高电平、24位 SPI 帧期间的 CS 应为低电平。 在一个帧中只应发送24位或其倍数、否则将报告 SPI 帧错误。 帧长度由 CS 处于低电平时发生的 SCLK 周期数决定。 您提供的示波器截图中的 CS 跟踪肯定会导致错误。
是否可以按如下所示格式化 CS 并重试? 我希望在您执行该操作时看到新的示波器屏幕截图。
此致
请