MicroPython:Библиотеки/pyb/Класс SPI: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 9: | Строка 9: | ||
Модель использования шины [[SPI]] похожа на [[I2C]]. Главное различие – в аргументах при инициализации. | Модель использования шины [[SPI]] похожа на [[I2C]]. Главное различие – в аргументах при инициализации. | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
from pyb import SPI | from pyb import SPI | ||
spi = SPI(1, SPI.MASTER, baudrate=600000, polarity=1, phase=0, crc=0x7) | spi = SPI(1, SPI.MASTER, baudrate=600000, polarity=1, phase=0, crc=0x7) | ||
Строка 18: | Строка 18: | ||
Дополнительные методы для класса [[SPI]]: | Дополнительные методы для класса [[SPI]]: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
data = spi.send_recv(b'1234') # отправляем 4 байта и получаем 4 байта | data = spi.send_recv(b'1234') # отправляем 4 байта и получаем 4 байта | ||
buf = bytearray(4) | buf = bytearray(4) | ||
Строка 30: | Строка 30: | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/pyb.SPI()|pyb.SPI(bus, ...)]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/pyb.SPI()|pyb.SPI(bus, ...)]] | ||
==Методы== | ==Методы== | ||
Строка 42: | Строка 36: | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.init()|SPI.init(mode, baudrate=328125, *, prescaler, polarity=1, phase=0, bits=8, firstbit=SPI.MSB, ti=False, crc=None)]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.init()|SPI.init(mode, baudrate=328125, *, prescaler, polarity=1, phase=0, bits=8, firstbit=SPI.MSB, ti=False, crc=None)]] | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.recv()|SPI.recv(recv, *, timeout=5000)]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.recv()|SPI.recv(recv, *, timeout=5000)]] | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.send()|SPI.send(send, *, timeout=5000)]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.send()|SPI.send(send, *, timeout=5000)]] | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.send_recv()|SPI.send_recv(send, recv=None, *, timeout=5000)]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.send_recv()|SPI.send_recv(send, recv=None, *, timeout=5000)]] | ||
==Константы== | ==Константы== | ||
Строка 80: | Строка 45: | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.LSB|SPI.LSB]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.LSB|SPI.LSB]] | ||
* [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.MSB|SPI.MSB]] | * [[MicroPython:Библиотеки/pyb/Класс SPI/SPI.MSB|SPI.MSB]] | ||
=См.также= | =См.также= |
Текущая версия от 17:31, 24 мая 2023
Класс SPI – протокол последовательной коммуникации SPI, управляемый через ведущее устройство (мастера)[1]
SPI – это протокол последовательной передачи данных, управляемый ведущим устройством (мастером). На физическом уровне SPI состоит из 3 линий: SCK, MOSI и MISO.
Модель использования шины SPI похожа на I2C. Главное различие – в аргументах при инициализации.
from pyb import SPI
spi = SPI(1, SPI.MASTER, baudrate=600000, polarity=1, phase=0, crc=0x7)
Единственный обязательный параметр – это mode: SPI.MASTER или SPI.SLAVE. В аргументе для полярности (polarity) можно задать «0» или «1» – это то, на каком логическом уровне начинается сигнал синхронизации. В аргументе для фазы (phase) тоже можно задать «0» или «1» – здесь определяется, по какому фронту сигнала синхронизации будет выполняться выборка: по переднему или заднему. В аргументе crc можно задать None (чтобы выключить CRC) или полином.
Дополнительные методы для класса SPI:
data = spi.send_recv(b'1234') # отправляем 4 байта и получаем 4 байта
buf = bytearray(4)
spi.send_recv(b'1234', buf) # отправляем 4 байта
# и получаем 4 байта в буфер
spi.send_recv(buf, buf) # отправляем/получаем 4 байта из/в буфер
Конструкторы
Методы
- SPI.deinit()
- SPI.init(mode, baudrate=328125, *, prescaler, polarity=1, phase=0, bits=8, firstbit=SPI.MSB, ti=False, crc=None)
- SPI.recv(recv, *, timeout=5000)
- SPI.send(send, *, timeout=5000)
- SPI.send_recv(send, recv=None, *, timeout=5000)