Skip to content

Commit 1d579ad

Browse files
committed
fixup: F407-DISCO I2S support
1 parent a23dbd2 commit 1d579ad

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/modm/board/disco_f407vg/board.hpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
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

2223
using namespace modm::platform;
2324

@@ -148,12 +149,16 @@ using Mclk = GpioOutputC7; // I2S3_MCK
148149
using Sclk = GpioOutputC10; // I2S3_SCK
149150
using Sdin = GpioOutputC12; // I2S3_SD
150151

152+
using DmaTx = Dma1::Channel5;
153+
151154
using Reset = GpioOutputD4; // Audio_RST
152155
using Scl = GpioB6; // Audio_SCL
153156
using Sda = GpioB9; // Audio_SDA
154157

155158
using 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) >
205210
inline void
206211
initializeCs43()
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

src/modm/board/disco_f407vg/module.lb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ def prepare(module, options):
2626
module.depends(
2727
":architecture:clock",
2828
":driver:lis3dsh",
29+
":driver:cs43l22",
2930
":platform:clock",
3031
":platform:core",
32+
":platform:dma",
3133
":platform:gpio",
3234
":platform:i2c:1",
3335
":platform:spi:1",

0 commit comments

Comments
 (0)