1.. _b_l4s5i_iot01a_board:
2
3ST B_L4S5I_IOT01A Discovery kit
4###############################
5
6Overview
7********
8
9The B_L4S5I_IOT01A Discovery kit features an ARM Cortex-M4 based STM32L4S5VI MCU
10with a wide range of connectivity support and configurations. Here are
11some highlights of the B_L4S5I_IOT01A Discovery kit:
12
13
14- STM32L4S5VIT6 microcontroller featuring 2 Mbyte of Flash memory, 640 Kbytes of RAM in LQFP100 package
15- On-board ST-LINK/V2-1 supporting USB re-enumeration capability
16- Three different interfaces supported on USB:
17
18    - Virtual com port
19    - Mass storage
20    - Debug port
21
22- ARDUINO ® Uno V3  and Pmod TM expansion connector
23- 4 LEDs (2 for user, wifi, BLE)
24- 2 push-buttons (user and reset)
25- USB OTG FS with micro-AB connector
26- Dynamic NFC tag
27- 2 digital omnidirectional microphones
28- Capacitive digital sensor for relative humidity and temperature
29- Time-of-flight and gesture-detection sensors
30- High-performance 3-axis magnetometer
31- 3D accelerometer and 3D gyroscope
32- 64-Mbit Quad-SPI Flash memory
33- Bluetooth ® 4.1 module
34- 802.11 b/g/n compliant Wi‐Fi ® module
35- MCU current ammeter with 4 ranges and auto-calibration
36
37- Flexible power supply options:
38    - ST-LINK/V2-1
39    - USB FS connector
40    - External 5 V
41
42
43.. image:: img/b-l4s5i_iot01a.jpg
44     :align: center
45     :alt: B_L4S5I_IOT01A Discovery kit
46
47More information about the board can be found at the `B L4S5I IOT01A Discovery kit website`_.
48
49Hardware
50********
51
52The STM32L4S5VI SoC provides the following hardware features:
53
54- Ultra-low-power with FlexPowerControl (down to 130 nA Standby mode and 100 uA/MHz run mode)
55- Core: ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU, frequency up to 120 MHz, 100DMIPS/1.25DMIPS/MHz (Dhrystone 2.1)
56- Clock Sources:
57    - 4 to 48 MHz crystal oscillator
58    - 32 kHz crystal oscillator for RTC (LSE)
59    - Internal 16 MHz factory-trimmed RC ( |plusminus| 1%)
60    - Internal low-power 32 kHz RC ( |plusminus| 5%)
61    - Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by
62      LSE (better than  |plusminus| 0.25 % accuracy)
63    - 3 PLLs for system clock, USB, audio, ADC
64- RTC with HW calendar, alarms and calibration
65- Up to 21 capacitive sensing channels: support touchkey, linear and rotary touch sensors
66- 16x timers:
67    - 2x 16-bit advanced control
68    - 2x 32-bit and 5x 16-bit general purpose
69    - 2x 16-bit basic
70    - 2x low-power 16-bit timers (available in Stop mode)
71    - 2x watchdogs
72    - SysTick timer
73- Up to 83 fast I/Os, most 5 V-tolerant
74- Memories
75    - Up to 2 MB Flash, 2 banks read-while-write, proprietary code readout protection
76    - Up to 640 KB of SRAM including 32 KB with hardware parity check
77    - External memory interface for static memories supporting SRAM, PSRAM, NOR and NAND memories
78    - Octo SPI memory interface
79- 4x digital filters for sigma delta modulator
80- Rich analog peripherals (independent supply)
81    - 1x 12-bit ADC 5 MSPS, up to 16-bit with hardware oversampling, 200 uA/MSPS
82    - 2x 12-bit DAC, low-power sample and hold
83    - 2x operational amplifiers with built-in PGA
84    - 2x ultra-low-power comparators
85- 18x communication interfaces
86    - USB OTG 2.0 full-speed, LPM and BCD
87    - 2x SAIs (serial audio interface)
88    - 4x I2C FM+(1 Mbit/s), SMBus/PMBus
89    - 6x USARTs (ISO 7816, LIN, IrDA, modem)
90    - 3x SPIs (4x SPIs with the Quad SPI)
91    - CAN (2.0B Active) and SDMMC interface
92    - SDMMC I/F
93    - DCMI camera interface
94- 14-channel DMA controller with multiplex request router
95- True random number generator
96- CRC calculation unit, 96-bit unique ID
97- AES and HASH hardware accelerators
98- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade|
99
100
101More information about STM32L4S5VI can be found here:
102       - `STM32L4S5VI on www.st.com`_
103       - `STM32L4S5 reference manual`_
104
105
106Supported Features
107==================
108
109The Zephyr b_l4s5i_iot01a board configuration supports the following hardware features:
110
111+-----------+------------+-------------------------------------+
112| Interface | Controller | Driver/Component                    |
113+===========+============+=====================================+
114| NVIC      | on-chip    | nested vector interrupt controller  |
115+-----------+------------+-------------------------------------+
116| UART      | on-chip    | serial port-polling;                |
117|           |            | serial port-interrupt               |
118+-----------+------------+-------------------------------------+
119| PINMUX    | on-chip    | pinmux                              |
120+-----------+------------+-------------------------------------+
121| GPIO      | on-chip    | gpio                                |
122+-----------+------------+-------------------------------------+
123| I2C       | on-chip    | i2c                                 |
124+-----------+------------+-------------------------------------+
125| SPI       | on-chip    | spi                                 |
126+-----------+------------+-------------------------------------+
127| PWM       | on-chip    | pwm                                 |
128+-----------+------------+-------------------------------------+
129| WATCHDOG  | on-chip    | independent watchdog                |
130+-----------+------------+-------------------------------------+
131| BLE       | module     | bluetooth                           |
132+-----------+------------+-------------------------------------+
133| WIFI      | module     | es-wifi                             |
134+-----------+------------+-------------------------------------+
135
136The default configuration can be found in the defconfig file:
137
138	``boards/arm/b_l4s5i_iot01a/b_l4s5i_iot01a_defconfig``
139
140
141Connections and IOs
142===================
143
144B_L4S5I_IOT01A Discovery kit has 9 GPIO controllers (from A to I). These controllers are responsible for pin muxing,
145input/output, pull-up, etc.
146
147For mode details please refer to `B L47S5I IOT01A board User Manual`_.
148
149Default Zephyr Peripheral Mapping:
150----------------------------------
151
152- UART_1 TX/RX : PB6/PB7 (ST-Link Virtual Port Com)
153- UART_4 TX/RX : PA0/PA1 (Arduino Serial)
154- I2C1 SCL/SDA : PB8/PB9 (Arduino I2C)
155- I2C2 SCL/SDA : PB10/PB11 (Sensor I2C bus)
156- SPI1 NSS/SCK/MISO/MOSI : PA2/PA5/PA6/PA7 (Arduino SPI)
157- SPI3 SCK/MISO/MOSI : PC10/PC11/PC12 (BT SPI bus)
158- PWM_2_CH1 : PA15
159- LD1 : PA5
160- LD2 : PB14
161- user button : PC13
162
163System Clock
164------------
165
166B_L4S5I_IOT01A Discovery System Clock could be driven by an internal or external oscillator,
167as well as the main PLL clock. By default the System clock is driven by the PLL clock at 80MHz,
168driven by 16MHz high speed internal oscillator.
169
170Serial Port
171-----------
172
173B_L4S5I_IOT01A Discovery kit has 4 U(S)ARTs. The Zephyr console output is assigned to UART1.
174Default settings are 115200 8N1.
175
176
177Programming and Debugging
178*************************
179
180Flashing
181========
182
183B_L4S5I_IOT01A Discovery kit includes an ST-LINK/V2-1 embedded debug tool interface.
184This interface is supported by the openocd version included in Zephyr SDK.
185
186Flashing an application to B_L4S5I_IOT01A Discovery kit
187-------------------------------------------------------
188
189Connect the B_L4S5I_IOT01A Discovery kit to your host computer using the USB
190port, then run a serial host program to connect with your Discovery
191board. For example:
192
193.. code-block:: console
194
195   $ minicom -D /dev/ttyACM0
196
197Then, build and flash in the usual way. Here is an example for the
198:ref:`hello_world` application.
199
200.. zephyr-app-commands::
201   :zephyr-app: samples/hello_world
202   :board: b_l4s5i_iot01a
203   :goals: build flash
204
205You should see the following message on the console:
206
207.. code-block:: console
208
209   Hello World! arm
210
211Debugging
212=========
213
214You can debug an application in the usual way.  Here is an example for the
215:ref:`hello_world` application.
216
217.. zephyr-app-commands::
218   :zephyr-app: samples/hello_world
219   :board: b_l4s5i_iot01a
220   :maybe-skip-config:
221   :goals: debug
222
223.. _B L4S5I IOT01A Discovery kit website:
224   https://www.st.com/en/evaluation-tools/b-l4s5i-iot01a.html
225
226.. _B L47S5I IOT01A board User Manual:
227   https://www.st.com/resource/en/user_manual/dm00698410.pdf
228
229.. _STM32L4S5VI on www.st.com:
230   https://www.st.com/en/microcontrollers-microprocessors/stm32l4s5vi.html
231
232.. _STM32L4S5 reference manual:
233   https://www.st.com/resource/en/reference_manual/dm00310109.pdf
234