YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
dac8311_rp2040_drv.h
1// ---------------------------------------------
2// This file is part of
3// _ _ __ _ _ __ __
4// ( \/ ) /__\ ( )_( ) /__\ ( )
5// \ / /(__)\ ) _ ( /(__)\ )(__
6// (__)(__)(__)(_) (_)(__)(__)(____)
7//
8// Yet Another HW Abstraction Library
9// Copyright (C) Andreas Terstegge
10// BSD Licensed (see file LICENSE)
11//
12// ---------------------------------------------
13//
14#ifndef _DAC8311_RP2040_DRV_H_
15#define _DAC8311_RP2040_DRV_H_
16
17#include <cstdint>
18#include "pcm_audio_interface.h"
19#include "gpio_rp2040.h"
20#include "pio_rp2040.h"
21#include "FIFO.h"
22
24{
25public:
26 dac8311_rp2040_drv(gpio_pin_t mosi_pin,
27 gpio_pin_t sclk_pin,
28 gpio_pin_t sync_pin,
29 gpio_pin_t enable);
30
31 virtual ~dac8311_rp2040_drv() = default;
32
33 inline void enable_output(bool v) {
34 _enable.gpioWrite(!v);
35 }
36
37 void setPcmRate(uint32_t Hz = 44100) override;
38
39private:
40 gpio_rp2040 _enable; // Audio enable Pin
41 SM * _pcm_sm; // The PIO State Machine
42};
43
44#endif // _DAC8311_RP2040_DRV_H_