#embedded-hal-driver #instrument #amplifier #texas #i2c #tpa2016 #class-d

no-std tpa2016d2

Embedded-hal driver for the Texas Instruments TPA2016D2 Class-D amplifier

3 unstable releases

0.2.0 May 17, 2019
0.1.1 May 1, 2019
0.1.0 May 1, 2019

#732 in Embedded development

25 downloads per month
Used in nucleo-f401re

MIT/Apache

15KB
371 lines

TPA2016D2

Embedded-hal Driver for the TI TPA2016D2 Stereo Class-D amplifier.

Notes

Example

#![no_main]
#![no_std]

use cortex_m_rt::entry;
use cortex_m_semihosting::hprintln;
use panic_semihosting as _;

use nucleo_f401re::{i2c::I2c, prelude::*, stm32};
use tpa2016d2::Tpa2016d2;

#[entry]
fn main() -> ! {
    // The Stm32 peripherals
    let device = stm32::Peripherals::take().unwrap();

    let rcc = device.RCC.constrain();
    let clocks = rcc.cfgr.sysclk(84.mhz()).freeze();

    let gpiob = device.GPIOB.split();
    let scl = gpiob
        .pb8
        .into_alternate_af4()
        .internal_pull_up(true)
        .set_open_drain();

    let sda = gpiob
        .pb9
        .into_alternate_af4()
        .internal_pull_up(true)
        .set_open_drain();

    let i2c = I2c::i2c1(device.I2C1, (scl, sda), 200.khz(), clocks);

    let mut tpa = Tpa2016d2::new(i2c);

    // Read all registers
    tpa.sync().unwrap();

    // Get and print  the registers
    for i in 1..=7 {
        let v = tpa.device_reg(i).unwrap();
        hprintln!("{}: {}", i, v).unwrap();
    }

    // Update the gain
    tpa.gain(32).unwrap();

    // Should print 32
    hprintln!("gain: {}", tpa.device_reg(5).unwrap()).unwrap();

    loop {}
}

TODO

  • Agc Presets
  • Features

Dependencies

~71KB