TAS5754应用笔记

1. 工程实例

  • 音频接口:三线I2S接口,从模式,无MCLK
  • 采样频率:192KHz
  • 总线接口:I2C 50KHz
  • 电源电压:15V/3.3V
  • 功能框图:

  • 上电自动复位所有寄存器

  • 系统时钟图:

    • LRCK/FS可以作为时钟源,需要软件配置
    • fs代表I2S输入数据的采样频率
      TAS5754应用笔记_第1张图片
  • 时钟分叉树:

    • 可选时钟源有三种:MCLK/GPIO/SCLK
    • 选择SCLK作为时钟源的话,需要手动配置PLL锁相环的参数(K/J/D/R/P),参数的选择取决于SCLK的频率,采样频率等参数
    • PLL锁相成功后生成的PLLCK经过分频后提供给内部DSP和DAC使用
      TAS5754应用笔记_第2张图片
  • 从模式的SCLK作为PLL锁相环的时钟源,生成内部时钟(3线PCM)

    • 关闭自动配置音频接口,否则不能手动配置PLL参数
    • 配置时钟分叉树,使SCLK的时钟给到PLL
    • 根据从模式I2S输入的采样频率计算PLL参数。本工程使用192KHz采样频率,参照下表中的参数配置PLL锁相环(建议选择PLL倍频比最小的,表中最后一行R*J.D/P=2,值最小),锁相环锁定后会输出数倍于SCLK的时钟
      TAS5754应用笔记_第3张图片
      图中参数J和D可由公式进一步计算得出,公式如下:
    • 参数DSPfs,DOSR,NCP用来配置时钟分叉树内的对应分频器
  • SPK_GAIN脚上的电压决定了功放的最大输出功率

    • 本工程使用26dBV=19.95V
    • dBV-V快速转换工具链接
  • 功放运行模式选择stereo模式

  • mini DSP 音频处理器机制
    • 多种可选的HybridFlows,快速将mini DSP配置到特定的模式
    • 只有HybridFlow5支持192KHz的采样率

2. 示例代码

uint8_t IIC_REG_5754[][2] =
{
    {0x00,0x00},   /* Select page 0 */
    {0x01,0x11},   /* Enter reset mode */
    {0xFF,0x32},   /* Delay 50ms */
    {0x01,0x00},   /* Enter normal mode */
    {0x03,0x11},   /* Mute all channels */
    {0x02,0x10},   /* Enter standby mode */
    {0x25,0x5a},   /* Ignore Fs/MCLK/LRCLK/SCLK detection,disable clock auto set */ 
    {0x0d,0x10},   /* Set SCLK as PLL clock */
    {0x14,0x01},   /* Set P=2 */
    {0x15,0x08},   /* Set J=9 */
    {0x16,0x00},   /* Set D=0 */
    {0x17,0x00},   
    {0x18,0x00},   /* Set R=1 */
    {0x1b,0x01},   /* Set DSP clock divide by 1 */
    {0x1c,0x0f},   /* Set DAC clock divide by 16 */
    {0x1d,0x03},   /* Set NCP clock divide by 2 */
    {0x1e,0x01},   /* Set OSR clock divide by 1 */
    {0x22,0x02},   /* Set Quad speed(96KHz~192KHz) */
    {0x23,0x01},   /* Set DSP clock cycles=DSPfs */
    {0x24,0x00},   
    {0x02,0x00},   /* Enter normal operation */
    {0x03,0x00},   /* Un-mute all channels */
};

void PA_5754_Init(uint8_t Adds)
{
    uint8_t buf[2];
    uint8_t index;

    for(index = 0;  index<(sizeof(IIC_REG_5754)/(sizeof(uint8_t)*2)); index++)
    {
        switch(IIC_REG_5754[index][0])
        {
            case 0xFF:
                vTaskDelay(IIC_REG_5754[index][1]);
                break;
            default:
                buf[0] = IIC_REG_5754[index][0];
                buf[1] = IIC_REG_5754[index][1];
                IICsetReg(Adds,buf);
                break;
        }
    }

}

你可能感兴趣的:(TAS5754,音频功放)