小编Jon*_*nny的帖子

用mpg123和c ++在树莓上播放mp3

我想使用以下示例程序:http://hzqtc.github.io/2012/05/play-mp3-with-libmpg123-and-libao.html它使用

#include <ao/ao.h> 
#include <mpg123.h>    
Run Code Online (Sandbox Code Playgroud)

我安装了libao-dev和mpg123

sudo apt-get install libao-dev
sudo apt-get install mpg123
Run Code Online (Sandbox Code Playgroud)

然后使用.构建文件

gcc -O2 -o play play.c -lmpg123 -lao
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

"fatal error: mpg123.h no such file or directory". 
Run Code Online (Sandbox Code Playgroud)

我是否需要安装另一个mpg123开发包,或者自己从raspberry上的源代码构建包来获得一个工作库?或者我需要包括什么,让g ++找到mpg123库?Libao图书馆好像被发现了...使用"mpg123 text.pm3"播放mp3文件.但我搜索了完整的文件结构"mpg123.h",但该文件不存在.所以我假设我需要安装一些包含库的附加程序,任何人都可以帮助我这是哪一个?或者只是从源代码构建mpg123的选项?

谢谢你的帮助 :-)!

c++ mp3 raspberry-pi

4
推荐指数
1
解决办法
6152
查看次数

Raspberry:通过 DMA 的 PWM 是如何工作的?

我读到“软件 PWM”的驱动程序以某种方式在 PWM-HW 上运行,并在不使用 CPU 的情况下访问所有 GPIO。有人可以解释它是如何工作的吗?Raspberry Pi 中是否有第二个处理器用于 PWM 和 PCM 模块(是否有块图)?

这个问题与我在我的机器人中经常使用的这个优秀的驱动程序有关。

这是解释,不幸的是我不明白......

驱动程序通过设置 DMA 控制块的链接列表来工作,最后一个链接回第一个,因此一旦初始化,DMA 控制器就会连续循环,除非需要更改脉冲宽度,否则驱动程序不需要参与. 对于给定的周期,有两个 DMA 控制块;第一个将单个字传输到 GPIO“清除输出”寄存器,而第二个将一定数量的字传输到 PWM FIFO 以生成所需的脉冲宽度时间。此外,穿插这些控制块的是每个配置的伺服器,用于设置输出。

虽然驱动程序确实使用了 PWM 外设,但它仅使用它来调整 DMA 传输的速度,从而产生准确的延迟。”

以下理解是否正确:

DMA 控制器就像第二个处理器。您可以在其上运行代码。因此,这里使用它与 PWM 块一起控制所有 Raspberry GPIO 引脚的高/低状态。DMA 控制器会连续执行此操作。Raspberry 中可能有不止一个 DMA 控制器,因此 OS Linux 的速度不会因为缺少一个 DMA 控制器而受到太大影响。

我不明白 DMA 和 PWM 究竟是如何协同工作的。

c hardware dma raspberry-pi pwm

2
推荐指数
1
解决办法
4043
查看次数

标签 统计

raspberry-pi ×2

c ×1

c++ ×1

dma ×1

hardware ×1

mp3 ×1

pwm ×1