SPI – Serial Peripheral Interface Bus Protocol
This class provides bus protocol of serial peripheral interface (SPI) .
Constructor
machine.SPI
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
1
:CPOL=0, CPHA=1
2
:CPOL=1, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:812.5kHz
1
:1.625MHz
2
:3.25MHz
3
:6.5MHz
4
:13MHz
5
:26MHz
6
:52MHz
The 52MHz clock frequency has high requirements for hardware.
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
1
:CPOL=0, CPHA=1
2
:CPOL=1, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:812.5kHz
1
:1.625MHz
2
:3.25MHz
3
:6.5MHz
4
:13MHz
-
[group]
- Select to use SPI on different pins, with a default value of 0.
1
:This group of pins does not support mounting nor flash.
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
1
:CPOL=0, CPHA=1
2
:CPOL=1, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:812.5kHz
1
:1.625MHz
2
:3.25MHz
3
:6.5MHz
4
:13MHz
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
1
:CPOL=0, CPHA=1
2
:CPOL=1, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:781.25KHz
1
:1.5625MHz
2
:3.125MHz
3
:5MHz
4
:6.25MHz
5
:10MHz
6
:12.5MHz
7
:20MHz
8
:25MHz
9
:33.33MHz
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:781.25KHz
X
:XMHz (X in [1,39])
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
0
:97.656kHz
1
:100kHz
2
:812.5kHz
3
:1.3MHz
4
:1.625MHz
5
:2MHz
6
:3.25MHz
7
:4.333MHz
8
:6.6MHz
9
:11.93MHz
10
:13MHz
11
:13.92MHz
12
:16.7MHz
13
:20.875MHz
14
:27.83MHz
class machine.SPI(spi, mode, clk, [group])
Parameter:
-
port
- Integer type. Channel selection: [0,1]. -
mode
- SPI working mode.
Clock polarity CPOL: The pin level of clock signal SCLK when SPI is idle (0: low level; 1: high level)
0
:CPOL=0, CPHA=0
1
:CPOL=0, CPHA=1
2
:CPOL=1, CPHA=0
3
:CPOL=1, CPHA=1
-
clk
- Clock frequency.
0
:500kHz
1
:1MHz
2
:5MHz
3
:10MHz
4
:20MHz
Example:
>>> from machine import SPI
>>> # Creates a SPI object
>>> spi_obj = SPI(1, 0, 1)
SPI Pin Correspondences:
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin4 | pin1 | pin3 | pin2 |
spi1 | pin58 | pin61 | pin59 | pin60 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin134 | pin133 | pin132 | pin131 |
spi1 | pin26 | pin27 | pin24 | pin25 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin31 | pin30 | pin32 | pin33 |
spi1 | pin52 | pin53 | pin50 | pin51 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin6 | pin5 | pin4 | pin3 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin25 | pin26 | pin27 | pin28 |
spi1 | pin41 | pin40 | pin64 | pin65 |
spi2 | pin19 | pin18 | pin23 | pin22 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0
group0 |
pin25 | pin26 | pin27 | pin28 |
spi0
group1 |
pin4 | pin1 | pin3 | pin2 |
spi1
group0 |
pin4 | pin1 | pin3 | pin2 |
spi1
group1 |
pin65 | pin67 | pin66 | pin63 |
spi2 | pin49 | pin54 | pin53 | pin52 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin25 | pin26 | pin64 | pin88 |
spi1 | pin5 | pin4 | pin6 | pin7 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0
group0 |
pin31 | pin30 | pin32 | pin33 |
spi0
group1 |
pin52 | pin53 | pin50 | pin51 |
spi1
group0 |
pin52 | pin53 | pin50 | pin51 |
spi1
group1 |
pin69 | pin68 | pin85 | pin84 |
spi2 | pin76 | pin77 | pin78 | pin16 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0
group0 |
pin31 | pin30 | pin32 | pin33 |
spi0
group1 |
pin52 | pin53 | pin50 | pin51 |
spi1
group0 |
pin52 | pin53 | pin50 | pin51 |
spi1
group1(EG810M_EU unsupported) |
pin69 | pin68 | pin85 | pin84 |
spi2 | pin76 | pin77 | pin78 | pin16 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin25 | pin26 | pin27 | pin28 |
spi1 | pin5 | pin4 | pin6 | pin7 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin37 | pin40 | pin38 | pin39 |
spi1 | pin26 | pin27 | pin25 | pin24 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin37 | pin40 | pin38 | pin39 |
spi1 | pin26 | pin27 | pin25 | pin24 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0(EC600ECN_LE&LQ unsupported) | pin65 | pin67 | pin66 | pin64 |
spi1 | pin69 | pin71 | pin70 | pin72 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin28 | pin39 | pin29 | pin38 |
spi1(EC800ECN_LE&LQ&CG unsupported) | pin52 | pin53 | pin50 | pin51 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin4 | pin1 | pin3 | pin2 |
spi1(EC800ECN_LE&LQ&CG unsupported) | pin53 | pin52 | pin54 | pin51 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi1 | pin79 | pin101 | pin100 | pin108 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0(EG912UGLAA unsupported) | pin25 | pin26 | pin64 | pin88 |
spi1 | pin5 | pin4 | pin6 | pin7 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi1 | pin4 | pin1 | pin3 | pin2 |
spi2 | pin58 | pin61 | pin59 | pin60 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin31 | pin30 | pin32 | pin33 |
spi1 | pin52 | pin53 | pin50 | pin51 |
spi2 | pin74 | pin75 | pin76 | pin77 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin31 | pin30 | pin32 | pin33 |
spi1 | pin52 | pin53 | pin50 | pin51 |
spi2 | pin74 | pin75 | pin76 | pin77 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin21 | pin22 | pin29 | pin23 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin29 | pin30 | pin37 | pin31 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin41 | pin42 | pin43 | pin44 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin41 | pin42 | pin43 | pin44 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin5 | pin4 | pin6 | pin7 |
SPI | CS | CLK | MOSI | MISO |
---|---|---|---|---|
spi0 | pin49 | pin29 | pin101 | pin28 |
spi1 | pin52 | pin53 | pin50 | pin51 |
Methods
SPI.read
SPI.read(recv_data, datalen)
This method reads data.
Parameter:
-
recv_data
- Bytearray type. An array used to receive data. -
datalen
- Integer type. Length of the data to be read.
Return Value:
0
- Successful execution
-1
- Failed execution
SPI.write
SPI.write(data, datalen)
This method writes data.
Parameter:
-
data
- Bytearray type. Data to be written. -
datalen
- Integer type. Length of data to be written.
Return Value:
0
- Successful execution
-1
- Failed execution
SPI.write_read
SPI.write_read(r_data, data, datalen)
This method writes and reads data.
Parameter:
-
r_data
- Bytearray type. An array used to receive data. -
data
- Bytearray type. Data to be sent. -
datalen
- Integer type. Length of data to be read.
Return Value:
0
- Successful execution
-1
- Failed execution
SPI.close
SPI.close()
This method close SPI.
Return Value:
0
- Successful execution
-1
- Failed execution
Example:
Please use this function with the peripherals.
import log
from machine import SPI
import utime
spi_obj = SPI(0, 0, 1)
# Sets the log output level
log.basicConfig(level=log.INFO)
spi_log = log.getLogger("SPI")
if __name__ == '__main__':
r_data = bytearray(5) # Creates a buff for receiving data
data = b"world" # Tests data
ret = spi_obj.write_read(r_data, data, 5) # Writes data and receives data to r_data
spi_log.info(r_data)