aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2021-10-20 14:40:16 +0200
committerUlf Lilleengen <[email protected]>2021-10-21 12:30:02 +0200
commitf8ebc967a93abb70ea882225f38814a7f2f45a4d (patch)
tree07dd0f8e3a7090e551df75326355fcae237baae1 /examples
parent2b4e2bcbaeed7702fd78dafcaa7bd30570f2c746 (diff)
Add implementation of async trait for STM32 I2C v2
* Add DMA read implementation for I2C v2 * Add example using DMA for I2C
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32l4/src/bin/i2c_dma.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/stm32l4/src/bin/i2c_dma.rs b/examples/stm32l4/src/bin/i2c_dma.rs
new file mode 100644
index 000000000..b0596aab8
--- /dev/null
+++ b/examples/stm32l4/src/bin/i2c_dma.rs
@@ -0,0 +1,35 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner;
9use embassy::traits::i2c::I2c as I2cTrait;
10use embassy_stm32::i2c::I2c;
11use embassy_stm32::interrupt;
12use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals;
14use example_common::{info, unwrap};
15
16const ADDRESS: u8 = 0x5F;
17const WHOAMI: u8 = 0x0F;
18
19#[embassy::main]
20async fn main(_spawner: Spawner, p: Peripherals) -> ! {
21 let irq = interrupt::take!(I2C2_EV);
22 let mut i2c = I2c::new(
23 p.I2C2,
24 p.PB10,
25 p.PB11,
26 irq,
27 p.DMA1_CH4,
28 p.DMA1_CH5,
29 Hertz(100_000),
30 );
31
32 let mut data = [0u8; 1];
33 unwrap!(i2c.write_read(ADDRESS, &[WHOAMI], &mut data).await);
34 info!("Whoami: {}", data[0]);
35}