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.

[参考译文] DAC63204:在运行时更改函数发生器转换率

Guru**** 2502485 points


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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1227151/dac63204-changing-function-generator-slewrate-at-runtime

器件型号:DAC63204

为了能够更改函数发生器压摆率、是否需要执行任何特殊操作?

我具有可成功设置 DAC0输出以生成正弦波的测试代码:

    // First value (word) is the data, second value (byte) is the reg addr)
	SPI_DACWrite24_V2(0x0400, 0x03); // DAC-X-VOUT-CMP-CONFIG: Use VDD as reference
	SPI_DACWrite24_V2(0x0000, 0x05); // DAC-X-CMP-MODE-CONFIG: No hysteresis or window (default setting)
	SPI_DACWrite24_V2(0x840D, 0x06); /* DAC-X-FUNC-CONFIG:
										Clear DAC to mid scale
										Sine wave
										1 LSB
										1282 µs/step */
	SPI_DACWrite24_V2(0x1249, 0x1F); // COMMON-CONFIG Register
	SPI_DACWrite24_V2(0x1100, 0x21); // COMMON-DAC-TRIG Register: Start function generator for DAC0 & DAC1

但是、如果我更改压摆时间并重新编程正弦波频率、则不会更新。 我必须切断电源并重新连接才能进行新设置。

同样、如果我保留上述初始代码、然后定期更新压摆率、我期望正弦波频率发生变化、但我看不到任何变化。

我已经尝试停止相关的函数发生器、甚至在设置新的转换率之前将函数发生器设置为"无输出"(而不是正弦)、但仍然看不到输出频率的任何更新。

压摆率更新函数示例:

    const uint16_t DAC0_FUNC_CONFIG = 0x8400;

        	SPI_DACWrite24_V2(0x0100, 0x21); // STOP DAC0 function generator
        	SPI_DACWrite24_V2(0x800D, 0x06); // set DAC0 to NO function generator
        	uint16_t new_dacvalue = DAC0_FUNC_CONFIG | sine_slew;
        	SPI_DACWrite24_V2(new_dacvalue, 0x06);
        	SPI_DACWrite24_V2(0x840D, 0x06); // Set DAC0 to SINE wave again.
        	SPI_DACWrite24_V2(0x1100, 0x21); // restart DAC0 function generator


是否有(已知有效的)更改压摆率的过程?

 在数据表中、我只能在第35页的底部找到关于改变转换率潜在问题的说明:"在输出转换操作期间、请勿写入 CODE-STEPX、SLEW-RATE-X 或 DAC-X-DATA。" 但这就是我为什么在更新转换率之前尝试停止函数发生器的原因。

提前感谢您的任何帮助。

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

    Phil、您好!  

    在更改转换率(或任何函数发生器设置)之前、需要停止函数发生器。 您不必将设置更改为无输出、您可以将其保持为正弦。  

    您能否尝试在停止函数发生器和更改转换设置之间添加一个小延迟? 我通常使用 GUI 来执行此操作、因此手动更改设置只会产生一个内置延迟。 这可能会在为函数发生器提供时间以便在内部完全禁用自身方面产生影响。  

    此致!

    Katlynne Jones  

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

    尊敬的 Katlynne:

    非常感谢您的答复。
    现在我有机会尝试发送"stop FG"、发送新转换率、然后发送"start FG"之间的各种延迟。

    "停止"似乎并不是直接停止 FG ,而是被当作"请求停止"。 FG 随后将完成当前周期、 然后停止(至少这是我在正弦生成上观察到的情况)。

    我将继续进行调查、我在数据表中看不到任何内容来指定停止和更改 FG 设置之间所需的稳定时间?

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

    Phil、您好!  

    我认为这不是我们描述的特征、因此数据表中没有显示最小延迟时间。  

    我可以问设计团队、他们是否估计了函数发生器停止需要多长时间。  

    此致!

    Katlynne Jones  

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

    尊敬的 Katlynne:

    就像这个问题的更新一样,我想我几乎是在那里,我的最后一篇文章;它确实似乎停止 FG 没有立即发生,而是在当前周期的结束时停止。 如果是这种情况、在数据表中提及这一点似乎是值得添加的。

    添加一些额外信息、供您参考以及可能从该路径旅行的任何其他人参考。

    数据表中的"可编程转换"部分下有一行指示"在输出转换操作期间请勿写入 CODE-STEPX、SLEW-RATE-X 或 DAC-X-DATA。"。
    板载函数发生器 似乎也受到该规则的限制(也许它 在内部使用压摆操作来生成波形)、因此、您必须更改列出的寄存器之前、停止针对特定 DAC 输出的函数发生器。

    更复杂的是、stop 命令似乎不会立即停止函数生成器、而是请求在当前周期结束时停止函数生成器。

    例如:

    蓝色是允许在发送 STOP 命令并设置新的偏斜值(总共循环遍历5个不同的值)之前运行一段时间的 DAC 输出(正弦波)
    黄色在每次发送停止命令时切换。

    在使用的最高频率下、STOP 被发送到相当接近周期末尾的位置、FG 在5.8ms 后停止(第一个标记是 STOP、第二个标记大约为 FG 实际上正在停止)

    在第3个频率下、周期时间显然更长、但 STOP 在非常接近周期结束时被发送、因此 FG 实际上在~4.8ms 内停止:

    在最低频率下、我们具有很长的周期时间、并且(在本例中) STOP 是在周期的早期发送的;这意味着 FG 用了~98ms 才实际停止:

    总之、如果您想即时更改设置、首先必须了解运行频率、然后确定需要等待多长时间、以确保 FG 在发送新设置之前已停止 (或者总是等待所需的最长时间)。

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

    Phil、您好!

      

    希望你能度过美好的一天!!!

    是的、无论您观察到的是什么正确的以及这些结果都是预期从器件获得的。

    还有一件事可以用于您的目的"DAC-BUSY#"位。 该位指示器件正忙、在 BUSY 信号清零之前不应应用各种设置(转换率等)。

    感谢您指出"作为此问题的更新、我想我几乎已经完成了我的最后一篇文章;FG 的停止似乎没有立即发生、而是在当前周期结束时停止。 如果是这种情况 ,在数据表中提及这一点似乎是值得添加的",将尝试添加到数据表中。

     

    让我们知道,如果再需要帮助,会很乐意这样做!

     

    谢谢。

    Sanjay

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

    非常感谢、我将尝试使用状态寄存器、但首先我只启用4线 SPI 接口的 SDO。

    我已经通过设置 SDO-EN 在 INTERFACE-CONFIG 寄存器中启用了该功能、但什么是 FSDO-EN? 我在数据表中找不到任何对 FSDO-EN 的引用?

    目前我的电路在 MISO 线路上有一个10k 上拉电阻(数据表中推荐的)、但是引脚上的实际电平变化很慢(可以看到电荷曲线)、所以我想改进一下。 是否有我应该更改的寄存器设置、还是只需要更用力地将其上拉?

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

    Phil、您好!

     

    1.有关 FSDO 的详细信息,请查看部分 6.16时序图、  FSDO = 1可启用半个时钟周期的快速 SDO 输出。

    2.关于 MISO 缓升,没有设置可以改变数字线路的上升/下降。 您应该需要更改上拉电阻器。

     

    谢谢。

    Sanjay