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.

[参考译文] TAD5212:SG1 频率配置的寄存器系数

Guru**** 2899790 points

Other Parts Discussed in Thread: TAD5212, TAD5112

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1629864/tad5212-register-coefficients-for-sg1-frequency-configuration

部件号: TAD5212
主题: TAD5112 中讨论的其他器件

请参阅应用手册 — TAx5x1x 器件的音调生成和应用模式、文档 SLAAED8–2024 年 10 月。
第 2.3 节“信号发生器 1 频率“提供了用于计算正弦和余弦位的公式。
根据应用手册、msb 和 lsb 位的值如下所示:
H_MSB = 99 7f EC 00
H_lsb  = 1c ea f1 80
Y_MSB = 7f 9a fc B8
Y_lsb  = 0A 0A f2 99

我编写了一个 C 程序,并在 STM32Cortex H7 处理器上运行它,并获得如下值:
H_MSB = 0A 0A f2 99
H_lsb  = 8e 63 92 40
Y_MSB = 7f 9a fc B8
Y_lsb  = 4c C1 5e 00

只有 y_MSB 的值匹配、其他值不同。 下面给出了程序列表。 PL 让我知道我出了什么问题。 谢谢你。

//声明变量
TWO_PI = 6 2831853071795865;
float64_t desired_freq、sampleing_freq;
float64_t g_x、f_x;
int64_t h、y;
int32_t、h_lsb、y_msb、y_lsb;
//频率设置
desired_freq = 600 0;// 600Hz
SAMPLING_freq = 48000 0;// 48KHz
//正弦计算
G_x = sin (two_PI * desired_freq / sampleing_freq);// 0 078459095727844944
G_x = g_x * pow (2、63);// 723657429573117056
h =(int64_t) g_x;// 0x0A0AF2991CC72480
H_MSB =(int32_t)(h >> 32);// 0x0A0AF299
h = h >> 1;// 0x0505794C8E639240
H_lsb =(int32_t) h;// 0x8E639240
//余弦计算
f_x = cos (two_PI * desired_freq / sampleing_freq);// 0 99691733373312796.
F_x = f_x * POW (2、63);// 9194939459009952768
Y =(int64_t) f_x;// 0x7F9AFCB89982BC00
Y_MSB =(int32_t)(y >> 32);// 0x7F9AFCB8
Y = y >> 1;// 0x3FCD7E5C4CC15E00
Y_lsb =(int32_t) y;// 0x4CC15E00

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

    您好、John:

    无需担心、我测试了您的值、它将在 48kHz 采样下正确输出 600Hz。

    代码中有一个非常小的区别、那就是在抓取低 32 位之前右移所有 64 位、而这实际上应该只移动低 32 位。 结果偶尔会出现“1",“,因为、因为 LSB 的 MSB 应该是“0",“,这、这是一个很小的差异、不太可能影响最终结果。

    我确认、数据表中提供的值也是正确的。 似乎有多种方法可以实现相同的结果,但您的公式与提供的公式非常匹配,并将产生正确的结果 — 我确保使用多种不同的蜂鸣声和采样频率。

    此致、

    Garret

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

    尊敬的 Garret:

    非常感谢您的迅速回复。 我已经订购 TAD5212 以及 PCB、将根据您的说明更改代码。 还有几个点需要清除。

    (a) PPC GUI 是否可用于生成 I2C 命令、而无需连接到 TAD5212 评估模块。 我没有评估模块。

    (B) 我有一个项目、其中生成了 2 个频率、即 2 个频率 5KHz 和 50Hz。 两个 Analog Devices DDS IC 用于生成这些正弦波。 所需的频率精度为 0 最大误差 1%。 但是、失真性能相当差(60dB 谐波)。 因此、我计划将 AD IC 替换为 TAD5212。 我唯一担心的是频率精度。 音调生成应用手册未提及频率精度。 假设采样频率精确到 48KHz、并给定一组正弦和余弦寄存器系数、是否有任何方法可以知道 所生成音调的确切频率?

    (c) 对于 TAD5212 中的音调生成、我假设仅需要 FSYNC 和 BCLK、DIN 不需要。 这是正确的吗?

    此致

    John

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

    您好、John:

    不可以、PPC3 GUI 要求 EVM 能够发送 I2C、因为它使用 XMOS 控制器将 PPC3 代码转换为 SCL 和将 SDA 发送到 DAC。

    假设采样频率精确、并且给定一组正弦和余弦寄存器系数、则  应能够使用应用手册中的公式反算所生成音调的确切频率。

    正确、音调生成不需要 DIN。

    此致、

    Garret

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

    尊敬的 Garret:

    需要进一步澄清的地方很少;希望我不会过多地困扰你们。

    我不想发送 I2C。 只想查看 PPC 生成的代码、而不想查看 EVM。 有可能吗?

    应用手册中的公式 2 至 9 用于在给定所需蜂鸣频率的情况下计算寄存器系数。
    本应用手册中没有提供用于执行相反操作的其他公式、即给定一组如何计算蜂鸣频率的寄存器系数。

    应用手册指出、引述“这些发生器具有高精度、可在音频和超声波频率下运行“一句的话。
    TAD5112 和 TAD5212 可以生成的最高超声波频率是多少。

    TAD5112 和 TAD5212 中的寄存器是否相同?

    此致、

    John

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

    您好、John:

    很抱歉我的混淆 — 是的,您可以使用 PPC3 生成 I2C 命令。  如果没有 EVM、就无法发送它们。

    可生成的最高频率为 Fs/2。 因此、在 48kHz 采样率下、您可以生成高达 24kHz 的音调。

    是的、TAD5112 和 TAD5212 的寄存器映射相同。

    此致、

    Garret