From 4a3f09ca2b88d428f4c3b1b8115c9277a0c0fdce Mon Sep 17 00:00:00 2001 From: pedromsousalima <32345730+pedromsousalima@users.noreply.github.com> Date: Mon, 3 Feb 2025 19:11:33 +0100 Subject: [PATCH 1/4] Added SPI info and wiring guide --- .../06.communication/spi/assets/spi.png | Bin 0 -> 23022 bytes .../micropython/06.communication/spi/spi.md | 97 ++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 content/micropython/06.communication/spi/assets/spi.png create mode 100644 content/micropython/06.communication/spi/spi.md diff --git a/content/micropython/06.communication/spi/assets/spi.png b/content/micropython/06.communication/spi/assets/spi.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f0c535b2c3b0ad8d4e27d952147a8ab763641c GIT binary patch literal 23022 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 literal 0 HcmV?d00001 diff --git a/content/micropython/06.communication/spi/spi.md b/content/micropython/06.communication/spi/spi.md new file mode 100644 index 0000000000..e1332859b0 --- /dev/null +++ b/content/micropython/06.communication/spi/spi.md @@ -0,0 +1,97 @@ +--- +title: Serial Peripheral Interface (SPI) +description: Learn how to use SPI with Micropython +author: Pedro Sousa Lima +--- + +Serial Peripheral Interface, or **SPI**, is a widely used communication protocol for connecting devices. It enables high-speed, full-duplex communication over four primary wires, making it an excellent choice for applications requiring fast data exchange between microcontrollers and peripherals. + +## How SPI Works + +SPI communication relies on: + +- **MOSI** (Controller Out, Peripheral In): Sends data from the controller to the peripheral. + +- **MISO** (Peripheral Out, Controller In): Receives data from the peripheral to the controller. + +- **SCLK** (Serial Clock): Synchronizes data transmission. + +- **CS** (Chip Select): Selects which peripheral device to communicate with. + +![SPI Wiring](assets/spi.png) + +Unlike UART, SPI is synchronous, meaning it uses a clock signal for precise data timing. This enables faster and more reliable data exchange. SPI operates in a master-peripheral architecture, where a single controller device can communicate with one or multiple peripheral devices. Each peripheral is selected using the Chip Select (CS) line, ensuring that only the intended device responds to communication. + +## Key Features of SPI + +-**High-Speed Communication:** Supports much higher data rates than UART, making it suitable for applications requiring rapid data transfer. + +-**Multi-Peripheral Support:** Multiple devices can share the SPI bus, each being activated by a separate Chip Select line. + +-**Full-Duplex Data Transfer:** Unlike I2C, SPI allows data to be transmitted and received simultaneously, improving efficiency. + +-**Flexible Configuration:** SPI supports various clock phase and polarity settings, allowing it to be tailored to different peripheral requirements. + +## Common Use Cases + +SPI is commonly used in a variety of applications, including: + +-**Interfacing with Sensors:** Many modern sensors, such as temperature and accelerometers, communicate using SPI. + +-**Display Modules:** OLED, LCD, and LED matrix displays often rely on SPI for data transfer. + +-**Memory Storage:** Flash memory and SD card modules utilize SPI for high-speed data access. + +Embedded Communication: SPI is often used in microcontroller-based projects to enable communication between different modules. + +## Testing SPI Communication + +You can easily test SPI communication without an external device by performing a loopback test. This involves connecting the MOSI and MISO pins together so that data sent out is received back, verifying that the SPI interface is working correctly. + +### SPI Loopback Test Example + +```python +from machine import SPI, Pin +import time + +# Configure the SPI bus. +# Adjust these parameters as needed for your setup. +spi = SPI(1, + baudrate=500000, + polarity=0, + phase=0, + sck=Pin(7), + mosi=Pin(8), + miso=Pin(9)) + +# Set up the chip-select pin (active low) +cs = Pin(10, Pin.OUT) +cs.value(1) # start with CS inactive + +def loopback_test(command): + """ + Sends a command (as bytes) over SPI. + IF MOSI and MISO are connected together (loopback), the respons + will be identical to the command. + """ + # Prepare a response buffer of the same length as the command. + response = bytearray(len(command)) + + cs.value(0) # Activate communication (CS low). + spi.write_readinto(command, response) + cs.value(1) # End communication (CS high). + + return response + +while True: + command = b'ping' + response = loopback_test(command) + print("Sent:", command, "Received:", response) + time.sleep(1) +``` + +This method allows you to verify that SPI data transmission and reception are functioning correctly. Unfortunately, MicroPython does not currently support configuring SPI as a peripheral device, meaning only controller mode is available for communication. + +## Conclusion + +SPI is a powerful and efficient protocol for high-speed data communication between microcontrollers and peripherals. Its flexibility, full-duplex operation, and support for multiple devices make it a preferred choice for many embedded applications. Performing a loopback test is an effective way to validate SPI communication, especially when external peripherals are unavailable. From 8aa868175fb6dab09798e594c355b1e2ef106e9b Mon Sep 17 00:00:00 2001 From: pedromsousalima <32345730+pedromsousalima@users.noreply.github.com> Date: Mon, 3 Feb 2025 19:16:17 +0100 Subject: [PATCH 2/4] Fixed typo --- content/micropython/06.communication/spi/spi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/micropython/06.communication/spi/spi.md b/content/micropython/06.communication/spi/spi.md index e1332859b0..f13ec8ae87 100644 --- a/content/micropython/06.communication/spi/spi.md +++ b/content/micropython/06.communication/spi/spi.md @@ -71,7 +71,7 @@ cs.value(1) # start with CS inactive def loopback_test(command): """ Sends a command (as bytes) over SPI. - IF MOSI and MISO are connected together (loopback), the respons + IF MOSI and MISO are connected together (loopback), the response will be identical to the command. """ # Prepare a response buffer of the same length as the command. From f2d47d1d486b0aeae59d7bc0f0f1067aacdeb0b0 Mon Sep 17 00:00:00 2001 From: pedromsousalima <32345730+pedromsousalima@users.noreply.github.com> Date: Fri, 28 Feb 2025 09:51:47 +0100 Subject: [PATCH 3/4] Lists fixed Fixed Lists --- content/micropython/06.communication/spi/spi.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/micropython/06.communication/spi/spi.md b/content/micropython/06.communication/spi/spi.md index f13ec8ae87..be97219c4c 100644 --- a/content/micropython/06.communication/spi/spi.md +++ b/content/micropython/06.communication/spi/spi.md @@ -24,13 +24,13 @@ Unlike UART, SPI is synchronous, meaning it uses a clock signal for precise data ## Key Features of SPI --**High-Speed Communication:** Supports much higher data rates than UART, making it suitable for applications requiring rapid data transfer. +- **High-Speed Communication:** Supports much higher data rates than UART, making it suitable for applications requiring rapid data transfer. --**Multi-Peripheral Support:** Multiple devices can share the SPI bus, each being activated by a separate Chip Select line. +- **Multi-Peripheral Support:** Multiple devices can share the SPI bus, each being activated by a separate Chip Select line. --**Full-Duplex Data Transfer:** Unlike I2C, SPI allows data to be transmitted and received simultaneously, improving efficiency. +- **Full-Duplex Data Transfer:** Unlike I2C, SPI allows data to be transmitted and received simultaneously, improving efficiency. --**Flexible Configuration:** SPI supports various clock phase and polarity settings, allowing it to be tailored to different peripheral requirements. +- **Flexible Configuration:** SPI supports various clock phase and polarity settings, allowing it to be tailored to different peripheral requirements. ## Common Use Cases From be0fbb763c93fb71a3aac7ce8ab19673fe2462c8 Mon Sep 17 00:00:00 2001 From: pedromsousalima <32345730+pedromsousalima@users.noreply.github.com> Date: Fri, 28 Feb 2025 15:00:17 +0100 Subject: [PATCH 4/4] lixed list --- content/micropython/06.communication/spi/spi.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/micropython/06.communication/spi/spi.md b/content/micropython/06.communication/spi/spi.md index be97219c4c..45a070c702 100644 --- a/content/micropython/06.communication/spi/spi.md +++ b/content/micropython/06.communication/spi/spi.md @@ -36,11 +36,11 @@ Unlike UART, SPI is synchronous, meaning it uses a clock signal for precise data SPI is commonly used in a variety of applications, including: --**Interfacing with Sensors:** Many modern sensors, such as temperature and accelerometers, communicate using SPI. +- **Interfacing with Sensors:** Many modern sensors, such as temperature and accelerometers, communicate using SPI. --**Display Modules:** OLED, LCD, and LED matrix displays often rely on SPI for data transfer. +- **Display Modules:** OLED, LCD, and LED matrix displays often rely on SPI for data transfer. --**Memory Storage:** Flash memory and SD card modules utilize SPI for high-speed data access. +- **Memory Storage:** Flash memory and SD card modules utilize SPI for high-speed data access. Embedded Communication: SPI is often used in microcontroller-based projects to enable communication between different modules.