#codec #embedded-hal #i2c-driver #arm #cortex-m #embedded-hal-i2c

no-std wm8994

为WM8994音频编解码器提供的一个最小化i2c驱动程序

1个不稳定版本

0.1.0 2024年1月4日

#1149 in 嵌入式开发

0BSD 许可证

21KB
369 代码行

使用Rust和embedded-hal为WM8994音频编解码器提供一个最小化的i2s驱动程序。


lib.rs:

为WM8994音频编解码器提供一个最小化的i2s驱动程序。

使用示例

use wm8994::Wm8994;

let mut delay = ctx.core.SYST.delay(ccdr.clocks);
let gpiod = ctx.device.GPIOD.split(ccdr.peripheral.GPIOD);
let scl = gpiod.pd12.into_alternate_open_drain();
let sda = gpiod.pd13.into_alternate_open_drain();

let i2c = ctx.device.I2C4.i2c((scl, sda), 100.kHz(), ccdr.peripheral.I2C4, &ccdr.clocks);
let mut driver = Wm8994::new(wm8994::Config { address: 0x1a }, &i2c, &delay);

// init_headphone() expects MCLK to be present
driver.init_headphone().unwrap();

局限性

此驱动程序将wm8994配置为从I2S输出到耳机输出播放音频。格式固定为48 Khz,16位I2S。

探测i2c的地址

use wm8994::Wm8994;

for addr in 0..0b111110 {
    let mut driver = Wm8994::new(wm8994::Config { address: addr }, &i2c, &delay);
    if let Ok(wm8994::registers::FAMILY_ID) = driver.get_family() {
        info!("Found at {:#04x}", addr);
    }
}

依赖项

~71KB