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]={PHASE0、PHASE45、PHASE90、PHASE135}; //将 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_index、0); tas5825_change_book (amp_index、0); //配置 GPIOx 引脚方向 数据[0]= GPIO_CTRL_REG; 数据[1]=(GPIO0_INPUT | GPIO1_OUTPUT | GPIO2_OUTPUT); I2C2_Write (Amp_addresss[amp_index]、data、2); //将 GPIO0配置为相位同步 数据[0]= GPIO_INPUT_SEL_REG; DATA[1]= GPIO0_PHASE_SYNC; I2C2_Write (Amp_addresses[amp_index]、data、2); //选择不同的相位并启用相位同步 数据[0]= PHASE_CTRL_REG; 数据[1]= AMP_PWM_PHASIN[AMP_INDEX % 4]; I2C2_Write (Amp_addresses[amp_index]、data、2); //将设备设置为播放模式 tas5825_set_device_state (amp_index、State_play、DSP_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_STATE、1); 其他 I2C3_read (Amp_addresses[amp_index]、power_State_REG、&device_state、1); } while (device_state!= power_State_HIZ); delay_ms (20); //将 GPIO 引脚设置为高电平,安培将进入播放模式 GPIO0_set ();
数据表中描述的序列中是否有任何未提及的特殊点? 我还尝试了 BD 调制、但问题完全相同。"
希望您能帮助我们。
此致、
Gerald