aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-10-26 11:49:45 +0000
committerGitHub <[email protected]>2021-10-26 11:49:45 +0000
commitf8bd9d2b1c801236a11261c5fc0a7239ded644e4 (patch)
tree22144ceddb707ca81c8f1caf721c21da9e4d7488 /examples
parent7729091b3959896fcf38727cd492c0ff13f02b68 (diff)
parentf8ebc967a93abb70ea882225f38814a7f2f45a4d (diff)
Merge #441
441: Add implementation of async trait for STM32 I2C v2 r=Dirbaio a=lulf * Add DMA read implementation for I2C v2 * Add example using DMA for I2C Co-authored-by: Ulf Lilleengen <[email protected]>
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}