@@ -8,6 +8,265 @@ to extend its features and services for easier and modularized prototyping.
8
8
In Zephyr, the shield feature provides Zephyr-formatted shield
9
9
descriptions for easier compatibility with applications.
10
10
11
+ Shield activation
12
+ *****************
13
+
14
+ Activate support for one or more shields by adding the matching ``--shield `` arguments
15
+ to the west command:
16
+
17
+ .. zephyr-app-commands ::
18
+ :app: your_app
19
+ :board: your_board
20
+ :shield: x_nucleo_idb05a1,x_nucleo_iks01a1
21
+ :goals: build
22
+
23
+
24
+ Alternatively, it could be set by default in a project's CMakeLists.txt:
25
+
26
+ .. code-block :: cmake
27
+
28
+ set(SHIELD x_nucleo_iks01a1)
29
+
30
+
31
+ Shield hardware interfaces (form factors)
32
+ *****************************************
33
+
34
+ Zephyr supports a number of shield interfaces, for example the well-known Arduino
35
+ form factor.
36
+
37
+ Note that some boards and shields only support a subset of the features of a shield
38
+ hardware interface.
39
+
40
+
41
+ Arduino Uno R3
42
+ --------------
43
+
44
+ This is the form factor of the Arduino Uno R3 board.
45
+
46
+ .. figure :: ../../../boards/shields/mcp2515/doc/keyestudio_can_bus_ks0411.jpg
47
+ :align: center
48
+ :width: 300px
49
+ :alt: Keyestudio CAN-BUS Shield (KS0411)
50
+
51
+ Keyestudio CAN-BUS, an example of an Arduino shield (Credit: Keyestudio)
52
+
53
+ Relevant devicetree node labels:
54
+
55
+ - ``arduino_header `` See :dtcompatible: `arduino-header-r3 ` for details on GPIO pin definitions
56
+ and includes for use in devicetree files.
57
+ - ``arduino_adc `` See :dtcompatible: `arduino,uno-adc `
58
+ - ``arduino_pwm `` See :dtcompatible: `arduino-header-pwm `
59
+ - ``arduino_serial ``
60
+ - ``arduino_i2c ``
61
+ - ``arduino_spi ``
62
+
63
+ For technical details, see `Arduino Uno R3 pinout `_.
64
+
65
+
66
+ Arduino MKR
67
+ -----------
68
+
69
+ This is the form factor of the Arduino MKR boards.
70
+
71
+ .. figure :: ../../../boards/arduino/mkrzero/doc/img/arduino_mkrzero.jpg
72
+ :align: center
73
+ :width: 200px
74
+ :alt: Arduino MKR Zero
75
+
76
+ Arduino MKR Zero, an example of a board with the Arduino MKR shield interface
77
+
78
+ Relevant devicetree node labels:
79
+
80
+ - ``arduino_mkr_header `` See :dtcompatible: `arduino-mkr-header ` for details on GPIO pin definitions
81
+ and includes for use in devicetree files.
82
+ - ``arduino_mkr_i2c ``
83
+ - ``arduino_mkr_spi ``
84
+ - ``arduino_mkr_serial ``
85
+
86
+
87
+ Arduino Nano
88
+ ------------
89
+
90
+ This is the form factor of the Arduino Nano boards.
91
+
92
+ .. figure :: ../../../boards/arduino/nano_33_iot/doc/img/nano_33_iot.jpg
93
+ :align: center
94
+ :width: 300px
95
+ :alt: Arduino Nano 33 IOT
96
+
97
+ Arduino Nano 33 IOT, an example of a board with the Arduino Nano shield interface
98
+
99
+ Relevant devicetree node labels:
100
+
101
+ - ``arduino_nano_header `` See :dtcompatible: `arduino-nano-header ` for details on GPIO pin definitions
102
+ and includes for use in devicetree files.
103
+ - ``arduino_nano_i2c ``
104
+ - ``arduino_nano_spi ``
105
+ - ``arduino_nano_serial ``
106
+
107
+
108
+ mikroBUS |trade |
109
+ ----------------
110
+
111
+ This is an interface standard for add-on boards, developed by Mikroe.
112
+
113
+ .. figure :: ../../../boards/shields/mikroe_3d_hall_3_click/doc/images/mikroe_3d_hall_3_click.webp
114
+ :align: center
115
+ :alt: 3D Hall 3 Click
116
+ :height: 300px
117
+
118
+ 3D Hall 3 Click, an example of a mikroBUS |trade | shield
119
+
120
+ Relevant devicetree node labels:
121
+
122
+ - ``mikrobus_header `` See :dtcompatible: `mikro-bus ` for GPIO pin definitions and links to
123
+ technical specifications.
124
+ - ``mikrobus_adc ``
125
+ - ``mikrobus_i2c ``
126
+ - ``mikrobus_spi ``
127
+ - ``mikrobus_serial ``
128
+
129
+ Note that boards with several mikroBUS |trade | connectors might define for
130
+ example ``mikrobus_2_spi ``.
131
+
132
+
133
+ Pico
134
+ ----
135
+
136
+ This is the form factor of the Raspberry Pi Pico boards.
137
+
138
+ .. figure :: ../../../boards/shields/waveshare_ups/doc/waveshare_pico_ups_b.jpg
139
+ :align: center
140
+ :width: 300px
141
+ :alt: Waveshare Pico UPS-B shield
142
+
143
+ Waveshare Pico UPS-B, an example of a Pico shield
144
+
145
+ Relevant devicetree node labels:
146
+
147
+ - ``pico_header `` See :dtcompatible: `raspberrypi,pico-header ` for GPIO pin definitions.
148
+ - ``pico_i2c0 ``
149
+ - ``pico_i2c1 ``
150
+ - ``pico_serial ``
151
+ - ``pico_spi ``
152
+
153
+
154
+ Feather
155
+ -------
156
+
157
+ This is the formfactor of the Adafruit Feather series of boards.
158
+ Shields intended for Feather boards are called Featherwings.
159
+
160
+ .. figure :: ../../../boards/shields/adafruit_adalogger_featherwing/doc/adafruit_adalogger_featherwing.webp
161
+ :align: center
162
+ :width: 300px
163
+ :alt: Adafruit Adalogger Featherwing Shield
164
+
165
+ Adafruit Adalogger, an example of a Featherwing (Credit: Adafruit)
166
+
167
+ Relevant devicetree node labels:
168
+
169
+ - ``feather_header `` See :dtcompatible: `adafruit-feather-header ` for GPIO pin definitions.
170
+ - ``feather_adc ``
171
+ - ``feather_i2c ``
172
+ - ``feather_serial ``
173
+ - ``feather_spi ``
174
+
175
+
176
+ Stemma QT / Quiic / zephyr_i2c
177
+ ------------------------------
178
+
179
+ These are four-pin I2C connectors. Sparkfun calls these connectors "Qwiic", and Adafruit
180
+ calls them "Stemma QT". The I2C connectors have four pins; GND, +3.3 Volt, I2C data and I2C
181
+ clock. The most common physical connector is the 1.0 mm pitch JST-SH.
182
+
183
+ Due to the different brand names, the interface is labeled "zephyr_i2c".
184
+
185
+ .. figure :: ../../../boards/shields/adafruit_vcnl4040/doc/adafruit_vcnl4040.webp
186
+ :align: center
187
+ :width: 200px
188
+ :alt: Adafruit VCNL4040 Shield
189
+
190
+ Adafruit VCNL4040, an example of a zephyr_i2c shield (Credit: Adafruit)
191
+
192
+ See :dtcompatible: `stemma-qt-connector ` and :dtcompatible: `grove-header ` for descriptions
193
+ and links to further details.
194
+
195
+ Relevant devicetree node labels:
196
+
197
+ - ``zephyr_i2c `` Introduced in Zephyr 4.2
198
+
199
+
200
+ ST Morpho
201
+ ---------
202
+
203
+ Development boards from ST Microelectronics often uses the ST Morpho shield interface.
204
+
205
+ .. figure :: ../../../boards/shields/x_nucleo_gfx01m2/doc/x_nucleo_gfx01m2.webp
206
+ :align: center
207
+ :width: 300px
208
+ :alt: X-NUCLEO-GFX01M2
209
+
210
+ X-NUCLEO-GFX01M2, an example of an ST Morpho shield
211
+
212
+ Relevant devicetree node labels:
213
+
214
+ - ``st_morpho_header `` See :dtcompatible: `st-morpho-header ` for details on GPIO pin definitions
215
+ and includes for use in devicetree files.
216
+ - ``st_morpho_lcd_spi ``
217
+ - ``st_morpho_flash_spi ``
218
+
219
+
220
+ Xiao
221
+ ----
222
+
223
+ This is the formfactor of the Seeeduino XIAO boards.
224
+
225
+ .. figure :: ../../../boards/shields/seeed_xiao_expansion_board/doc/img/seeed_xiao_expansion_board.webp
226
+ :align: center
227
+ :width: 300px
228
+ :alt: Seeed Studio XIAO Expansion Board
229
+
230
+ Seeed Studio XIAO Expansion Board, an example of a Xiao shield (Credit: Seeed Studio)
231
+
232
+ Relevant devicetree node labels:
233
+
234
+ - ``xiao_d `` See :dtcompatible: `seeed,xiao-gpio ` for GPIO pin definitions.
235
+ - ``xiao_spi ``
236
+ - ``xiao_i2c ``
237
+ - ``xiao_serial ``
238
+ - ``xiao_adc ``
239
+ - ``xiao_dac ``
240
+
241
+
242
+ Microbit
243
+ --------
244
+
245
+ This is for the edge connector of the Microbit boards.
246
+
247
+ .. figure :: ../../../boards/bbc/microbit_v2/doc/img/bbc_microbit2.jpg
248
+ :align: center
249
+ :width: 500px
250
+ :alt: Microbit V2 board
251
+
252
+ Microbit V2 board uses the Microbit shield interface
253
+
254
+ See :dtcompatible: `microbit,edge-connector ` for GPIO pin definitions and
255
+ links to technical requirements.
256
+
257
+
258
+ Camera and display connectors
259
+ -----------------------------
260
+
261
+ These describes connections to cameras and displays (strictly speaking not shields).
262
+
263
+ - :dtcompatible: `arducam,dvp-20pin-connector `
264
+ - :dtcompatible: `nxp,cam-44pins-connector `
265
+ - :dtcompatible: `nxp,parallel-lcd-connector `
266
+ - :dtcompatible: `raspberrypi,csi-connector `
267
+ - :dtcompatible: `weact,dcmi-camera-connector `
268
+
269
+
11
270
.. _shield_porting_guide :
12
271
13
272
Shield porting and configuration
@@ -134,24 +393,6 @@ board or board revision overriding files to a shield, as follows:
134
393
└── <board>.conf
135
394
136
395
137
- Shield activation
138
- *****************
139
-
140
- Activate support for one or more shields by adding the matching ``--shield `` arguments
141
- to the west command:
142
-
143
- .. zephyr-app-commands ::
144
- :app: your_app
145
- :shield: x_nucleo_idb05a1,x_nucleo_iks01a1
146
- :goals: build
147
-
148
-
149
- Alternatively, it could be set by default in a project's CMakeLists.txt:
150
-
151
- .. code-block :: cmake
152
-
153
- set(SHIELD x_nucleo_iks01a1)
154
-
155
396
Shield variants
156
397
***************
157
398
@@ -254,3 +495,7 @@ bits of the flags are copied over, so the SOC GPIO reference becomes
254
495
``<&gpiob 4 1> `` as intended.
255
496
256
497
See `nexus node `_ for more information about this capability.
498
+
499
+
500
+ .. _Arduino Uno R3 pinout :
501
+ https://docs.arduino.cc/resources/pinouts/A000066-full-pinout.pdf
0 commit comments