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.

[参考译文] AM5728:ALSA 应用中的通道数

Guru**** 2589265 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585266/am5728-number-of-channels-in-alsa-application

主题中讨论的其他器件:AM5728

您好、先生:

  我使用的是 am5728的 McASP。 现在、我要将默认通道数更改为2。  

   int channels = params_channels (params);   // 此处我打印通道的值, 此代码位于 Davinci-McAP.c 中

  我真的相信、当我使用 alsa 框架时、我只需要调用函数 snd_pcm_set_params 来设置通道。

  但当我 这么做时,我仍然得到与以前相同的值2。 请告诉我原因吗? 非常感谢!

  我的报如下所示:

/*
此超小型演示将随机样本发送到您的扬声器。
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
静态 char *设备="默认值"; /*播放设备*/
snd_output_t *输出=空;
无符号字符缓冲区[1*1024]; /*一些随机数据*//unsigned
short int buffer[1*1024]; /*一些随机数据*/
int main (void)
{
Int 错误;
unsigned int i;
snd_pcm_t *句柄;
//snd_pcm_hw_params_t * hwparams;
snd_pcm_sframes_t frames;
//int channels = 4;
printf ("缓冲区大小为%d\n"、sizeof (buffer));
对于(i = 0;i < sizeof (buffer);i++)
//buffer[i]= random ()& 0xff;
//buffer[i]= 0xff;
Buffer[i]= i;
如果((err = snd_pcm_open (&handle、device、snd_pcm_stream_replayback、0))< 0){
printf ("回放打开错误:%s\n"、snd_strerror (err));
EXIT (EXIT_FAILURE);
}

//snd_pcm_hw_params_alloca (&hwparams);
//snd_pcm_hw_params_set_channels (handle、hwparams、channels);

如果((err = snd_pcm_set_params (handle、
//snd_PCM_format_U8、
SND_PCM_FORMAT_U16、
SND_PCM_ACCESS_RW_Interleaved、
16、//通道
48000、
1、
500000))< 0){/* 0.5sec */
printf ("回放打开错误:%s\n"、snd_strerror (err));
EXIT (EXIT_FAILURE);
}
//for (i = 0;i < 16;i++){
//while (1){
// 帧= snd_pcm_writei (handle、buffer、sizeof (buffer));
/////printf ("frames =%d\n"、frames);
// 如果(帧< 0)
// 帧= nd_PCM_Recover (handle、帧、0);
// if (帧< 0){
// printf ("snd_PCM_writei failed:%s\n"、snd_strerror (frames));
// 中断;
//}
// if (帧> 0 &&帧<(long) sizeof (buffer))
// printf ("短写入(预期为%Li、写入%Li)\n"、(long) sizeof (buffer)、帧);
////snd_PCM_DRAIN (handle);
//}
SND_PCM_CLOSE (句柄);
返回0;
}

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Boboy、

    请参阅 示例。

    此致、
    Kemal

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

    您好、先生、

      感谢您的回复。 我使用引用的代码获得相同的结果。 您可以在自己的电路板上测试它吗? 我只需要通过 ALSA API 更改通道。 非常感谢!

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

    我将对此进行研究。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您有什么发现吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Boboy、很抱歉耽误您的时间...应用程序将尽快发布评论。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    博伊、

    请尝试将 McASP devicetree 节点的 tdm-slots 参数从2更改为16。 对于 TI 的 AM572x GP EVM、可在 arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi 中找到该 mcasp3节点。

    documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt 讨论了针对'ti、dra7-McASP-audio'兼容驱动器(sound/soc/co/Davinci/Davinci-McAP.c)的绑定。  

    Jason Reeder