@@ -15,38 +15,58 @@ use as_slice::{
15
15
AsMutSlice ,
16
16
} ;
17
17
18
- use crate :: hal:: blocking:: i2c:: { Read , Write , WriteRead } ;
19
18
20
19
#[ cfg( feature = "stm32l0x2" ) ]
21
20
use crate :: dma:: {
22
21
self ,
23
22
Buffer
24
23
} ;
25
- use crate :: gpio:: gpioa:: { PA10 , PA9 } ;
26
- use crate :: gpio:: gpiob:: { PB6 , PB7 } ;
27
- use crate :: gpio:: { AltMode , OpenDrain , Output } ;
28
24
use crate :: pac:: {
29
25
i2c1:: {
30
26
RegisterBlock ,
31
27
cr2:: RD_WRN_A ,
32
28
}
33
29
} ;
34
- pub use crate :: pac:: I2C1 ;
35
30
use crate :: rcc:: Rcc ;
36
31
use crate :: time:: Hertz ;
37
32
use cast:: u8;
38
33
39
- # [ cfg ( feature = "stm32l0x1" ) ]
40
- use crate :: gpio :: gpioa :: { PA13 , PA4 } ;
34
+ // I²C traits
35
+ use crate :: hal :: blocking :: i2c :: { Read , Write , WriteRead } ;
41
36
42
- #[ cfg( any( feature = "stm32l0x2" , feature = "stm32l0x3" ) ) ]
37
+ // I/O Imports
38
+ use crate :: gpio:: { AltMode , OpenDrain , Output } ;
39
+ #[ cfg( feature = "io-STM32L021" ) ]
40
+ use crate :: {
41
+ gpio:: {
42
+ gpioa:: { PA4 , PA9 , PA10 , PA13 } ,
43
+ gpiob:: { PB6 , PB7 , PB8 } ,
44
+ } ,
45
+ pac:: I2C1 ,
46
+ } ;
47
+ #[ cfg( feature = "io-STM32L031" ) ]
43
48
use crate :: {
44
49
gpio:: {
45
- gpioa:: PA8 ,
46
- gpiob:: { PB10 , PB11 , PB13 , PB14 , PB4 , PB8 , PB9 } ,
47
- gpioc:: { PC0 , PC1 } ,
50
+ gpioa:: { PA9 , PA10 } ,
51
+ gpiob:: { PB6 , PB7 , PB8 , PB9 } ,
48
52
} ,
49
- pac:: { I2C2 , I2C3 } ,
53
+ pac:: I2C1 ,
54
+ } ;
55
+ #[ cfg( feature = "io-STM32L051" ) ]
56
+ use crate :: {
57
+ gpio:: {
58
+ gpiob:: { PB6 , PB7 , PB8 , PB9 , PB10 , PB11 , PB13 , PB14 } ,
59
+ } ,
60
+ pac:: { I2C1 , I2C2 } ,
61
+ } ;
62
+ #[ cfg( feature = "io-STM32L071" ) ]
63
+ use crate :: {
64
+ gpio:: {
65
+ gpioa:: { PA8 , PA9 , PA10 } ,
66
+ gpiob:: { PB4 , PB6 , PB7 , PB8 , PB9 , PB10 , PB11 , PB13 , PB14 } ,
67
+ gpioc:: { PC0 , PC1 , PC9 } ,
68
+ } ,
69
+ pac:: { I2C1 , I2C2 , I2C3 } ,
50
70
} ;
51
71
52
72
/// I2C abstraction
@@ -488,32 +508,71 @@ macro_rules! i2c {
488
508
} ;
489
509
}
490
510
491
- #[ cfg( feature = "stm32l0x1" ) ]
511
+
512
+ #[ cfg( feature = "io-STM32L021" ) ]
492
513
i2c ! (
493
- I2C1 ,
494
- i2c1en,
495
- i2c1rst,
514
+ I2C1 , i2c1en, i2c1rst,
496
515
sda: [
497
- ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
498
- ( PA10 <Output <OpenDrain >>, AltMode :: AF6 ) ,
516
+ ( PA10 <Output <OpenDrain >>, AltMode :: AF1 ) ,
499
517
( PA13 <Output <OpenDrain >>, AltMode :: AF3 ) ,
518
+ ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
500
519
] ,
501
520
scl: [
502
- ( PB6 <Output <OpenDrain >>, AltMode :: AF1 ) ,
503
- ( PA9 <Output <OpenDrain >>, AltMode :: AF6 ) ,
504
521
( PA4 <Output <OpenDrain >>, AltMode :: AF3 ) ,
522
+ ( PA9 <Output <OpenDrain >>, AltMode :: AF1 ) ,
523
+ ( PB6 <Output <OpenDrain >>, AltMode :: AF1 ) ,
524
+ ( PB8 <Output <OpenDrain >>, AltMode :: AF4 ) ,
505
525
] ,
506
526
) ;
507
527
508
- #[ cfg( any ( feature = "stm32l0x2" , feature = "stm32l0x3" ) ) ]
528
+ #[ cfg( feature = "io-STM32L031" ) ]
509
529
i2c ! (
510
- I2C1 ,
511
- i2c1en,
512
- i2c1rst,
530
+ I2C1 , i2c1en, i2c1rst,
531
+ sda: [
532
+ ( PA10 <Output <OpenDrain >>, AltMode :: AF1 ) ,
533
+ ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
534
+ ( PB9 <Output <OpenDrain >>, AltMode :: AF4 ) ,
535
+ ] ,
536
+ scl: [
537
+ ( PA9 <Output <OpenDrain >>, AltMode :: AF1 ) ,
538
+ ( PB6 <Output <OpenDrain >>, AltMode :: AF1 ) ,
539
+ ( PB8 <Output <OpenDrain >>, AltMode :: AF4 ) ,
540
+ ] ,
541
+ ) ;
542
+
543
+ #[ cfg( feature = "io-STM32L051" ) ]
544
+ i2c ! (
545
+ I2C1 , i2c1en, i2c1rst,
546
+ sda: [
547
+ ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
548
+ ( PB9 <Output <OpenDrain >>, AltMode :: AF4 ) ,
549
+ ] ,
550
+ scl: [
551
+ ( PB6 <Output <OpenDrain >>, AltMode :: AF1 ) ,
552
+ ( PB8 <Output <OpenDrain >>, AltMode :: AF4 ) ,
553
+ ] ,
554
+ ) ;
555
+
556
+ #[ cfg( feature = "io-STM32L051" ) ]
557
+ i2c ! (
558
+ I2C2 , i2c2en, i2c2rst,
559
+ sda: [
560
+ ( PB11 <Output <OpenDrain >>, AltMode :: AF6 ) ,
561
+ ( PB14 <Output <OpenDrain >>, AltMode :: AF5 ) ,
562
+ ] ,
563
+ scl: [
564
+ ( PB10 <Output <OpenDrain >>, AltMode :: AF6 ) ,
565
+ ( PB13 <Output <OpenDrain >>, AltMode :: AF5 ) ,
566
+ ] ,
567
+ ) ;
568
+
569
+ #[ cfg( feature = "io-STM32L071" ) ]
570
+ i2c ! (
571
+ I2C1 , i2c1en, i2c1rst,
513
572
sda: [
514
573
( PA10 <Output <OpenDrain >>, AltMode :: AF6 ) ,
515
- ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
516
- ( PB9 <Output <OpenDrain >>, AltMode :: AF4 ) ,
574
+ ( PB7 <Output <OpenDrain >>, AltMode :: AF1 ) ,
575
+ ( PB9 <Output <OpenDrain >>, AltMode :: AF4 ) ,
517
576
] ,
518
577
scl: [
519
578
( PA9 <Output <OpenDrain >>, AltMode :: AF6 ) ,
@@ -522,11 +581,9 @@ i2c!(
522
581
] ,
523
582
) ;
524
583
525
- #[ cfg( any ( feature = "stm32l0x2" , feature = "stm32l0x3" ) ) ]
584
+ #[ cfg( feature = "io-STM32L071" ) ]
526
585
i2c ! (
527
- I2C2 ,
528
- i2c2en,
529
- i2c2rst,
586
+ I2C2 , i2c2en, i2c2rst,
530
587
sda: [
531
588
( PB11 <Output <OpenDrain >>, AltMode :: AF6 ) ,
532
589
( PB14 <Output <OpenDrain >>, AltMode :: AF5 ) ,
@@ -537,22 +594,20 @@ i2c!(
537
594
] ,
538
595
) ;
539
596
540
- #[ cfg( any ( feature = "stm32l0x2" , feature = "stm32l0x3" ) ) ]
597
+ #[ cfg( feature = "io-STM32L071" ) ]
541
598
i2c ! (
542
- I2C3 ,
543
- i2c3en,
544
- i2c3rst,
599
+ I2C3 , i2c3en, i2c3rst,
545
600
sda: [
546
601
( PB4 <Output <OpenDrain >>, AltMode :: AF7 ) ,
547
602
( PC1 <Output <OpenDrain >>, AltMode :: AF7 ) ,
603
+ ( PC9 <Output <OpenDrain >>, AltMode :: AF7 ) ,
548
604
] ,
549
605
scl: [
550
606
( PA8 <Output <OpenDrain >>, AltMode :: AF7 ) ,
551
607
( PC0 <Output <OpenDrain >>, AltMode :: AF7 ) ,
552
608
] ,
553
609
) ;
554
610
555
-
556
611
/// Token used for DMA transfers
557
612
///
558
613
/// This is an implementation detail. The user doesn't have to deal with this
0 commit comments