TI中文支持网
TI专业的中文技术问题咨询交流网站

tas5805m设置采样率和数据长度

你好:

我正在使用tas5805m,平台是MTK8516. 现在5805m已经可以驱动喇叭发出声音了。我想在驱动中加上设置I2S采样率和数据长度的接口。但加上后PA输出没有声音。想知道从哪方面查找原因。

我加的代码如下:

1.增加hw_params接口。

static const struct snd_soc_dai_ops tas5805m_dai_ops = {
    .digital_mute = tas5805m_mute,
    .hw_params = tas5808m_hw_params,
};

static struct snd_soc_dai_driver tas5805m_dai = {
    .name       = "tas5805m ASI1",
    .playback   = {
        .stream_name    = "Playback",
        .channels_min   = 2,
        .channels_max   = 2,
        .rates      = TAS5805M_RATES,
        .formats    = TAS5805M_FORMATS,
    },
    .ops = &tas5805m_dai_ops,
};

2. 再 tas5808m_hw_params实现设置数据宽度和I2S采样率

static int tas5808m_hw_params(struct snd_pcm_substream *substream,
        struct snd_pcm_hw_params *params,
        struct snd_soc_dai *dai)
{
……
tas5805m_set_bitwidth(….)
……
tas5805m_set_samplerate(….)
……
}

3.设置数据宽度函数的实现

static int tas5805m_set_bitwidth(struct tas5805m_priv *tas5805m, int bitwidth)
{
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_00, 0xFF, TAS5805M_PAGE_00);
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_7F, 0xFF, TAS5805M_BOOK_00);
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_00, 0xFF, TAS5805M_PAGE_00);
    switch (bitwidth) {
    case SNDRV_PCM_FORMAT_S32_LE:
            regmap_update_bits(tas5805m->regmap, TAS5805M_REG_33, \
            TAS5808M_REG33_WORDLEN32_Mask, TAS5808M_IIS_DATA_32BIT);    
        break;

……

    default:
        printk("Not supported params format\n");
        return -EINVAL;
    }

    return 0;
}

4.设置采样率函数的实现

static int tas5805m_set_samplerate(struct tas5805m_priv *tas5805m, int samplerate)
{
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_00, 0xFF, TAS5805M_PAGE_00);
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_7F, 0xFF, TAS5805M_BOOK_00);
    regmap_update_bits(tas5805m->regmap, TAS5805M_REG_00, 0xFF, TAS5805M_PAGE_00);

    switch (samplerate) {
    case 48000:
        regmap_update_bits(tas5805m->regmap,\
        TAS5805M_REG_28,\
        TAS5808M_REG28_FS_MODE_Mask,\
        TAS5808M_REG28_FS_MODE_48K);
            break;
……
}
Amy Luo:

您好,
感谢您对TI产品的关注!TAS5805M的采样率和数据长度分别可以在Register 40和Register 51设置,关于增加设置接口的功能,我想您应该寻求MTK公司的技术支持

赞(0)
未经允许不得转载:TI中文支持网 » tas5805m设置采样率和数据长度
分享到: 更多 (0)