1818#include < modm/platform.hpp>
1919#include < modm/architecture/interface/clock.hpp>
2020#include < modm/driver/inertial/lis3dsh.hpp>
21+ #include < modm/math/units.hpp>
2122
2223using namespace modm ::platform;
2324
@@ -148,12 +149,16 @@ using Mclk = GpioOutputC7; // I2S3_MCK
148149using Sclk = GpioOutputC10; // I2S3_SCK
149150using Sdin = GpioOutputC12; // I2S3_SD
150151
152+ using DmaTx = Dma1::Channel5;
153+
151154using Reset = GpioOutputD4; // Audio_RST
152155using Scl = GpioB6; // Audio_SCL
153156using Sda = GpioB9; // Audio_SDA
154157
155158using I2cMaster = I2cMaster1;
156- using I2sMaster = I2sMaster3;
159+ using I2sMaster = I2sMaster3<DmaTx>;
160+
161+ static constexpr uint8_t I2CAddress = 0x4a ; // (0x94 >> 1)
157162}
158163
159164
@@ -201,13 +206,13 @@ initializeLis3()
201206 lis3::SpiMaster::setDataMode (lis3::SpiMaster::DataMode::Mode3);
202207}
203208
204- // / not supported yet, due to missing I2S driver
209+ template < modm:: frequency_t samplerate=48_kHz, modm:: percent_t tolerance=modm::pct( 0.019 ) >
205210inline void
206211initializeCs43 ()
207212{
208213 cs43::I2sMaster::connect<cs43::Mclk::Mck, cs43::Sclk::Ck,
209214 cs43::Lrck::Ws, cs43::Sdin::Sd>();
210- cs43::I2sMaster::initialize<SystemClock, 48_kHz >();
215+ cs43::I2sMaster::initialize<SystemClock, samplerate, tolerance >();
211216 cs43::Reset::setOutput (modm::Gpio::High);
212217
213218 cs43::I2cMaster::connect<cs43::Scl::Scl, cs43::Sda::Sda>();
@@ -216,7 +221,7 @@ initializeCs43()
216221 cs43::Reset::setOutput (modm::Gpio::Low);
217222 modm::delay_ms (2 );
218223 cs43::Reset::setOutput (modm::Gpio::High);
219-
224+
220225}
221226
222227// / not supported yet, due to missing I2S driver
0 commit comments