Skip to content

Commit e81de4f

Browse files
committed
[board] Add I2C and SPI connections to all boards
1 parent bac35e3 commit e81de4f

File tree

42 files changed

+1010
-52
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1010
-52
lines changed

src/modm/board/nucleo_f031k6/board.hpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,28 @@ using Uart = Usart1;
9191
/// @}
9292
}
9393

94+
namespace i2c
95+
{
96+
/// @ingroup modm_board_nucleo_f031k6
97+
/// @{
98+
using Sda = D4;
99+
using Scl = D5;
100+
using Controller = I2cMaster1;
101+
/// @}
102+
}
103+
104+
namespace spi
105+
{
106+
/// @ingroup modm_board_nucleo_f031k6
107+
/// @{
108+
using Cs = D10;
109+
using Sck = D13;
110+
using Sdi = D12;
111+
using Sdo = D11;
112+
using Controller = SpiMaster1;
113+
/// @}
114+
}
115+
94116
/// @ingroup modm_board_nucleo_f031k6
95117
/// @{
96118
using LoggerDevice = modm::IODeviceWrapper< stlink::Uart, modm::IOBuffer::BlockIfFull >;
@@ -104,6 +126,20 @@ initialize()
104126
stlink::Uart::connect<stlink::Tx::Tx, stlink::Rx::Rx>();
105127
stlink::Uart::initialize<SystemClock, 115200_Bd>();
106128
}
129+
130+
inline void
131+
initializeI2c()
132+
{
133+
i2c::Controller::connect<i2c::Sda::Sda, i2c::Scl::Scl>();
134+
i2c::Controller::initialize<SystemClock, 400_kHz>();
135+
}
136+
137+
inline void
138+
initializeSpi()
139+
{
140+
spi::Controller::connect<spi::Sck::Sck, spi::Sdo::Mosi, spi::Sdi::Miso>();
141+
spi::Controller::initialize<SystemClock, 3_MHz>();
142+
}
107143
/// @}
108144

109145
}

src/modm/board/nucleo_f031k6/module.lb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ def prepare(module, options):
2323
if not options[":target"].partname.startswith("stm32f031k6t"):
2424
return False
2525

26-
module.depends(":platform:core", ":platform:gpio", ":platform:clock", ":platform:uart:1",
27-
":debug", ":architecture:clock", ":architecture:clock")
26+
module.depends(
27+
":architecture:clock",
28+
":debug",
29+
":platform:clock",
30+
":platform:core",
31+
":platform:gpio",
32+
":platform:i2c:1",
33+
":platform:spi:1",
34+
":platform:uart:1"
35+
)
2836
return True
2937

3038
def build(env):

src/modm/board/nucleo_f042k6/board.hpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,28 @@ using Uart = Usart2;
9595
/// @}
9696
}
9797

98+
namespace i2c
99+
{
100+
/// @ingroup modm_board_nucleo_f042k6
101+
/// @{
102+
using Sda = D4;
103+
using Scl = D5;
104+
using Controller = I2cMaster1;
105+
/// @}
106+
}
107+
108+
namespace spi
109+
{
110+
/// @ingroup modm_board_nucleo_f042k6
111+
/// @{
112+
using Cs = D10;
113+
using Sck = D13;
114+
using Sdi = D12;
115+
using Sdo = D11;
116+
using Controller = SpiMaster1;
117+
/// @}
118+
}
119+
98120
/// @ingroup modm_board_nucleo_f042k6
99121
/// @{
100122
using LoggerDevice = modm::IODeviceWrapper< stlink::Uart, modm::IOBuffer::BlockIfFull >;
@@ -108,6 +130,20 @@ initialize()
108130
stlink::Uart::connect<stlink::Tx::Tx, stlink::Rx::Rx>();
109131
stlink::Uart::initialize<SystemClock, 115200_Bd>();
110132
}
133+
134+
inline void
135+
initializeI2c()
136+
{
137+
i2c::Controller::connect<i2c::Sda::Sda, i2c::Scl::Scl>();
138+
i2c::Controller::initialize<SystemClock, 400_kHz>();
139+
}
140+
141+
inline void
142+
initializeSpi()
143+
{
144+
spi::Controller::connect<spi::Sck::Sck, spi::Sdo::Mosi, spi::Sdi::Miso>();
145+
spi::Controller::initialize<SystemClock, 3_MHz>();
146+
}
111147
/// @}
112148

113149
}

src/modm/board/nucleo_f042k6/module.lb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,16 @@ def prepare(module, options):
2424
if not options[":target"].partname.startswith("stm32f042k6t"):
2525
return False
2626

27-
module.depends(":platform:core", ":platform:gpio", ":platform:clock", ":platform:uart:2",
28-
":debug", ":architecture:clock", ":architecture:clock")
27+
module.depends(
28+
":architecture:clock",
29+
":debug",
30+
":platform:clock",
31+
":platform:core",
32+
":platform:gpio",
33+
":platform:i2c:1",
34+
":platform:spi:1",
35+
":platform:uart:2"
36+
)
2937
return True
3038

3139
def build(env):

src/modm/board/nucleo_f072rb/board.hpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,28 @@ using Uart = Usart2;
9595
/// @}
9696
}
9797

98+
namespace i2c
99+
{
100+
/// @ingroup modm_board_nucleo_f072rb
101+
/// @{
102+
using Sda = D14;
103+
using Scl = D15;
104+
using Controller = I2cMaster1;
105+
/// @}
106+
}
107+
108+
namespace spi
109+
{
110+
/// @ingroup modm_board_nucleo_f072rb
111+
/// @{
112+
using Cs = D10;
113+
using Sck = D13;
114+
using Sdi = D12;
115+
using Sdo = D11;
116+
using Controller = SpiMaster1;
117+
/// @}
118+
}
119+
98120
/// @ingroup modm_board_nucleo_f072rb
99121
/// @{
100122
using LoggerDevice = modm::IODeviceWrapper< stlink::Uart, modm::IOBuffer::BlockIfFull >;
@@ -108,6 +130,20 @@ initialize()
108130
stlink::Uart::connect<stlink::Tx::Tx, stlink::Rx::Rx>();
109131
stlink::Uart::initialize<SystemClock, 115200_Bd>();
110132
}
133+
134+
inline void
135+
initializeI2c()
136+
{
137+
i2c::Controller::connect<i2c::Sda::Sda, i2c::Scl::Scl>();
138+
i2c::Controller::initialize<SystemClock, 400_kHz>();
139+
}
140+
141+
inline void
142+
initializeSpi()
143+
{
144+
spi::Controller::connect<spi::Sck::Sck, spi::Sdo::Mosi, spi::Sdi::Miso>();
145+
spi::Controller::initialize<SystemClock, 3_MHz>();
146+
}
111147
/// @}
112148

113149
}

src/modm/board/nucleo_f072rb/module.lb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ def prepare(module, options):
2323
if not options[":target"].partname.startswith("stm32f072rbt"):
2424
return False
2525

26-
module.depends(":platform:core", ":platform:gpio", ":platform:clock", ":platform:uart:2",
27-
":debug", ":architecture:clock", ":architecture:clock")
26+
module.depends(
27+
":architecture:clock",
28+
":debug",
29+
":platform:clock",
30+
":platform:core",
31+
":platform:gpio",
32+
":platform:i2c:1",
33+
":platform:spi:1",
34+
":platform:uart:2",
35+
)
2836
return True
2937

3038

src/modm/board/nucleo_f091rc/board.hpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,28 @@ using Uart = Usart2;
9494
/// @}
9595
}
9696

97+
namespace i2c
98+
{
99+
/// @ingroup modm_board_nucleo_f091rc
100+
/// @{
101+
using Sda = D14;
102+
using Scl = D15;
103+
using Controller = I2cMaster1;
104+
/// @}
105+
}
106+
107+
namespace spi
108+
{
109+
/// @ingroup modm_board_nucleo_f091rc
110+
/// @{
111+
using Cs = D10;
112+
using Sck = D13;
113+
using Sdi = D12;
114+
using Sdo = D11;
115+
using Controller = SpiMaster1;
116+
/// @}
117+
}
118+
97119
/// @ingroup modm_board_nucleo_f091rc
98120
/// @{
99121
using LoggerDevice = modm::IODeviceWrapper< stlink::Uart, modm::IOBuffer::BlockIfFull >;
@@ -107,6 +129,20 @@ initialize()
107129
stlink::Uart::connect<stlink::Tx::Tx, stlink::Rx::Rx>();
108130
stlink::Uart::initialize<SystemClock, 115200_Bd>();
109131
}
132+
133+
inline void
134+
initializeI2c()
135+
{
136+
i2c::Controller::connect<i2c::Sda::Sda, i2c::Scl::Scl>();
137+
i2c::Controller::initialize<SystemClock, 400_kHz>();
138+
}
139+
140+
inline void
141+
initializeSpi()
142+
{
143+
spi::Controller::connect<spi::Sck::Sck, spi::Sdo::Mosi, spi::Sdi::Miso>();
144+
spi::Controller::initialize<SystemClock, 3_MHz>();
145+
}
110146
/// @}
111147

112148
}

src/modm/board/nucleo_f091rc/module.lb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ def prepare(module, options):
2323
if not options[":target"].partname.startswith("stm32f091rct"):
2424
return False
2525

26-
module.depends(":platform:core", ":platform:gpio", ":platform:clock", ":platform:uart:2",
27-
":debug", ":architecture:clock", ":architecture:clock")
26+
module.depends(
27+
":architecture:clock",
28+
":debug",
29+
":platform:clock",
30+
":platform:core",
31+
":platform:gpio",
32+
":platform:i2c:1",
33+
":platform:spi:1",
34+
":platform:uart:2"
35+
)
2836
return True
2937

3038

src/modm/board/nucleo_f103rb/board.hpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,28 @@ using Uart = Usart2;
106106
/// @}
107107
}
108108

109+
namespace i2c
110+
{
111+
/// @ingroup modm_board_nucleo_f091rc
112+
/// @{
113+
using Sda = D14;
114+
using Scl = D15;
115+
using Controller = I2cMaster1;
116+
/// @}
117+
}
118+
119+
namespace spi
120+
{
121+
/// @ingroup modm_board_nucleo_f091rc
122+
/// @{
123+
using Cs = D10;
124+
using Sck = D13;
125+
using Sdi = D12;
126+
using Sdo = D11;
127+
using Controller = SpiMaster1;
128+
/// @}
129+
}
130+
109131
/// @ingroup modm_board_nucleo_f103rb
110132
/// @{
111133
using LoggerDevice = modm::IODeviceWrapper< stlink::Uart, modm::IOBuffer::BlockIfFull >;
@@ -124,6 +146,20 @@ initialize()
124146
// Enable PB4 as GPIO
125147
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
126148
}
149+
150+
inline void
151+
initializeI2c()
152+
{
153+
i2c::Controller::connect<i2c::Sda::Sda, i2c::Scl::Scl>();
154+
i2c::Controller::initialize<SystemClock, 427_kHz>();
155+
}
156+
157+
inline void
158+
initializeSpi()
159+
{
160+
spi::Controller::connect<spi::Sck::Sck, spi::Sdo::Mosi, spi::Sdi::Miso>();
161+
spi::Controller::initialize<SystemClock, 4_MHz>();
162+
}
127163
/// @}
128164

129165
}

src/modm/board/nucleo_f103rb/module.lb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ def prepare(module, options):
2323
if not options[":target"].partname.startswith("stm32f103rbt"):
2424
return False
2525

26-
module.depends(":platform:core", ":platform:gpio", ":platform:clock", ":platform:uart:2",
27-
":debug", ":architecture:clock")
26+
module.depends(
27+
":architecture:clock",
28+
":debug",
29+
":platform:clock",
30+
":platform:core",
31+
":platform:gpio",
32+
":platform:i2c:1",
33+
":platform:spi:1",
34+
":platform:uart:2",
35+
)
2836
return True
2937

3038
def build(env):

0 commit comments

Comments
 (0)