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.

[参考译文] TAS5825M:PWM 物理同步与 GPIO

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1175590/tas5825m-pwm-physe-sync-with-gpio

器件型号:TAS5825M

各位专家:

我们的客户存在如下问题:

"我正在为德国专业音频设备开发一个多通道放大器、用于波束形成。

我希望 PWM 相位同步4 TAS5825m、GPIO 引脚0用作触发器。 我已经处理了相位同步、I2S 时钟停止并作为触发器重新启动。 请参阅相应的 e2e 线程 :https://e2e.ti.com/support/audio-group/audio/f/audio-forum/906307/tas5825m-multi-device-pwm-phase-sync

我的设置:启用 OTFB 和混合调制的内部管理流程;HIZ 中的放大器。 我将导出的 c 标头序列写入放大器、然后配置相位同步。
放大器按预期进入相位同步模式。 它们将进入 HiZ 模式、当我触发 GPIO 时、放大器将进入播放模式。 我为每个放大器配置了不同的相位。
问题:尽管其寄存器配置正确、但所有4安培都具有相位设置0。 我通过读回寄存器值来检查它。
我已经检查了相位同步是否不起作用、但如果我注释掉我的同步序列、则放大器具有随机相位。

请参阅以下代码的重要部分(例如、一安培;所有放大器都在环路中初始化):

//定义------------------------------------------------------- 
#define GPIO_CTRL_REG 0x60
 //默认情况下所有 GPIO 引脚都是输入,数据表第67页
#define GPIO2_INPUT (0 << 2)
#define GPIO2_OUTPUT (1 << 2)
#define GPIO1_INPUT (0 << 1)
#define GPIO1_OUTPUT (1 << 1)
#define GPIO0_INPUT (0 << 0)
#define GPIO0_OUTPUT (1 << 0)

#define GPIO0_SEL_REG 0x61
 #define GPIO1_SEL_REG 0x62
 #define GPIO2_SEL_REG 0x63
 #define GPIO_WARNZ (0b1000)
#define GPIO_FAULTZ (0b1011)

#define GPIO_INPUT_SEL_REG 0x64
 #define GPIO0_PHASE_SYNC 0b10000
 #define GPIO0_MUTEZ 1//----------

------------ 
#define POWER_STATE_REG 0x68 //datasheet p. 73
 #define POWER_State_DEEPSL 0
 #define POWER_State_SLEEP 1
 #define POWER_State_HIZ 2
 #define POWER_STATE_PLAY 3

 //--------------- 
#define PHASE_CTRL_REG0x6a //器件到器件的相位同步寄存
器//同步触发器设置为 GPIO,启用同步,数据表第74页
#define PHASE00b0001
 #define PHASE450b0101
 #define PHASE900b1001
 #define PHASE1350b1101

 //--- 

//Init sequence ------------------------------------------------------ 

const uint8_t Amp_PWM_Phases[4]=PHASE0PHASE45PHASE90PHASE135

//将 PDN 引脚设置为高电平、启用 Amps
 PDN_set ()
delay_ms (5)

//从 PPC3软件发送基本寄存器配置
//配置:静音处理流程、混合调制、Hipn_set
、untasx_set (5)、tasx_mode (5);//从 PPC3软件发送基本寄存器配置 sizeof (registers)/sizeof (register[0]))

uint8_t data[2]

//切换到 PAGE 0和 Book 0
 tas5825_change_page (amp_index0)
tas5825_change_book (amp_index0)

//配置 GPIOx 引脚方向
数据[0]= GPIO_CTRL_REG
数据[1]=(GPIO0_INPUT | GPIO1_OUTPUT | GPIO2_OUTPUT)

I2C2_Write (Amp_addresss[amp_index]data2)


//将 GPIO0配置为相位同步
数据[0]= GPIO_INPUT_SEL_REG
DATA[1]= GPIO0_PHASE_SYNC

I2C2_Write (Amp_addresses[amp_index]data2)


//选择不同的相位并启用相位同步
数据[0]= PHASE_CTRL_REG
数据[1]= AMP_PWM_PHASIN[AMP_INDEX % 4]

I2C2_Write (Amp_addresses[amp_index]data2)


//将设备设置为播放模式
 tas5825_set_device_state (amp_indexState_playDSP_Un静 音DSP_normal_OP)

//监控 POWER_STATE 寄存器、直到器件更改为 HIZ 状态
uint8_t DEVICE_STATE = 0
执行
IF (AMP_INDEX < 4) I2C2_READ (AMP_ADDRESS[AMP_INDET]POWER_STATE_REG&DEVICE_STATE1)
其他 I2C3_read (Amp_addresses[amp_index]power_State_REG&device_state1)

while (device_state!= power_State_HIZ)

delay_ms (20)
//将 GPIO 引脚设置为高电平,安培将进入播放模式
 GPIO0_set ()

数据表中描述的序列中是否有任何未提及的特殊点? 我还尝试了 BD 调制、但问题完全相同。"

希望您能帮助我们。

此致、

Gerald

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

    您好!

    仅供跟进。 我是客户、现在有一个经过验证的新公司邮件地址。

    此致、
    Markus

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

    Markus、您好!

    如果您添加了额外的 GPIO 切换、它的行为是否相同? 如果您添加了另一个 hi-z 来播放转换、它是否具有相同的行为? 我通常不会看到所使用的 GPIO PWM 同步数量、因此如果需要任何额外的定序、我将尝试在内部进行确认。

    此致、
    Luis  

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

    您好、Luis、

    我仍在等待一个有用的问题答案。 正如我说过的、放大器将按应有的方式进入同步模式。 否则、在将其设置为播放模式后、它不会进入 HIZ、而是在 GPIO 发生问题后进入播放模式。

    如果我重新执行该序列、则不会发生任何变化。

    此致、
    Markus

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

    您好、Markus

    关于相位同步配置、必须在配置4个器件之前停止 I2S。

    否则配置将失败。 将产生随机相位。

    您可以参阅数据表中的以下内容。

    谢谢。

    Jesse

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

    您好 Jesse、

    无法停止 I2S 时钟!

    这就是我想要使用数据表第7.4.3.3.2章中描述的相位同步方法的原因。 问题是、去马戏团的序列部分起作用。 这些器件执行由 GPIO 引脚触发的相位同步、但所有放大器的相位设置都是相同的(寄存器设置0)、尽管它们配置不同(寄存器值为红色、并经过验证)。

    此致、
    Markus

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

    您好、Markus

    很抱歉缺少信息。

    请允许我确认以下几点:

    您意味着使用 GPIO 切换的相位同步只能工作1次。

    再次切换后、它将不起作用? 我的理解是否正确?

    谢谢。

    Jesse

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

    您好 Jesse、

    与 GPIO 的相位同步可行、但所有放大器具有相同的相位设置、尽管配置不同。
    有关详细说明、请参阅开始开机自检和代码。

    我的序列:

    每个放大器的环路:
    1.下载 PPC3寄存器配置
    2. 配置 GPIOx 引脚方向
    3. 
    将 GPIO0配置为相位同步
    4. 
    选择不同的相位并启用相位同步
    5. 
    将设备设置为播放模式
    6。 
    监控 POWER_STATE 寄存器、直到器件更改为 HIZ 状态
    环路结束

    8.延迟20ms
    9.将 GPIO 从0设置为1
    序列结束

    所有放大器都正确进入同步模式并更改为 HIZ 状态。 当我将 GPIO 设置为1时、所有电流开始播放。 我知道、同步序列起作用。 问题是、在寄存器中配置的相移(正确设置、通过回读检查)不被放大器接受、并且所有相位设置都设置为0。

    此致、
    Markus

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

    您好、Markus

    非常感谢您的描述。

    我将尝试使用我们的 EVM 板来确认此功能并尽快回复您。

    谢谢。

    Jess

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

    大家好、Mwrkus

    我已验证您可以通过此步骤进行设置、而不需要停止 I2S

    1.将器件设置为深度睡眠

    2.配置寄存器0x6A

    3.将设备设置为 HIZ

    4.将设备设置为播放模式

    或者、如果要使用 GPIO 切换、可以通过以下步骤进行设置:

    1.se将 t 器件更改为深度睡眠

    配置寄存器0x60、0x64和0x6A

    3.将设备设置为 HIZ 模式

    在 SOC GPIO 上进行0至1切换

    5.将设备设置为播放模式

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

    您好!

    它现在正在工作。 感谢您的支持。 外壳可以关闭。

    但是、令人惊讶的是、数据表中的序列根本不正确...

    此致、
    Markus

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

    您好、Markus

      感谢您的反馈、我们将更新相关数据表。