完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 STM32MP157-DK2(开发包 1.2)和 Analog Devices 的 ADAU1977 ADC 评估板。所需的设置需要使用外部编解码器作为 I2S 通信的主机(与板上的板载 Cirrus 编解码器相同)。 遵循 wiki 页面提供的出色文档(对从事该工作的团队表示敬意!),我几乎设法让一切都完美运行。 为了达到这一点,我做了以下事情:
我遇到的第一个(也是一个较小的)问题是声卡没有在启动时自动注册,它应该是,因为它是在设备树中配置的。 我可以通过使用 modprobe 手动加载制造商模块来解决这个问题。之后,一切都正确加载,我可以使用 alsamixer 更改所有暴露的参数,在所有 4 个通道上记录,但是...... 另一个更大的问题是编解码器以 48kHz 的采样率工作(用示波器验证),这正是我想要的,但 ALSA 子系统“认为”它在 44.1kHz 上工作。我尝试使用带有选项 -r 48000 的 arecord 之类的 alsa 工具以 48kHz 进行记录,它返回:“警告:速率不准确(请求 = 48000Hz,得到 = 44100Hz)”。我可以录制,但音频被 44.1/48 移调,即如果我录制 440Hz 的正弦波,录制的文件包含 ~404Hz 的正弦波。我也尝试在我自己的 C 项目中使用 ALSA API 进行记录,但系统仍然报告 44.1kHz。 通过在编解码器驱动程序和平台驱动程序(adau1977.c 和 audio-graph-card.c)的源文件中插入一些 printk-s,我发现传递给音频图形卡和 ADAU1977 模块的参数包含速率44100 通过调用 params_rate(snd_pcm_hw_params *params) 访问。 我错过了什么吗?hw_params结构的来源是什么? |
|
相关推荐
1个回答
|
|
在收到您的消息之前,我通过在专家提到的 adau1977_set_sysclk 函数中硬编码约束掩码取得了进展(这也是我一直在研究的那个)。这样我就可以让系统以 48kHz 的频率工作。
我想查看您提供的用于跟踪的链接,但由于 STM32MPU wiki 直到几分钟前才为我关闭,在我等待的过程中,我更加注意了您写的最后一件事。 我认为我已经通过编辑 /etc/pulse/client.conf 禁用了 Pulseaudio: 自动生成 = 否 允许 autospawn-for-root = 否 但由于 systemd,似乎还需要一些额外的步骤。 所以我还必须关闭 conf 文件中的守护进程,并用 systemctl 屏蔽它。 现在它可以正常工作了,看来我在调试 ASoC 和 ALSA 上浪费了很多时间,而整个时间的问题都是由 Pulseaudio 引起的! 现在唯一的问题是,在我手动执行 modprobe 之前,声卡不会在启动时注册。 再次,谢谢你!你的线索和STM32MPU wiki的结合解决了我的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2642 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3611 浏览 6 评论
5989 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 05:07 , Processed in 1.338950 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号