MicroPython:Библиотеки/machine/Класс SPI: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" enclose="div"> =...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Класс SPI – протокол шины SPI (со стороны ведущего устройства)<ref>[http://docs.micropython.org/en/latest/library/machine.SPI.html docs.micropython.org - class SPI – a Serial Peripheral Interface bus protocol (master side)]</ref>= | |||
SPI – это протокол синхронной последовательной передачи данных, управляемый ведущим устройством (мастером). На физическом уровне шина SPI состоит из 3 линий: SCK, MOSI и MISO. Одной и той же шиной могут пользоваться несколько устройств, но у каждого устройства должна быть отдельная 4-ая линия SS («Slave Select», что можно перевести как «выбор ведомого устройства»), чтобы выбрать устройство на шине, с которым будет осуществляться коммуникация. Управление SS-сигналом должно осуществляться в коде пользователя (через класс machine.Pin). | |||
==Конструкторы== | |||
* Класс machine.SPI(id, ...) – конструирует объект SPI на шине id. Значение в id зависит от используемых порта и устройства. Значения «0», «1» и т.д. обычно используются для выбора аппаратной SPI-шины #1, #2 и т.д. Чтобы задать программную (bit-banging) SPI-реализацию (если она поддерживается используемым портом), задайте значение «-1». | |||
Если дополнительных аргументов задано не будет, то объект SPI будет создан, но не инициализирован (он получит настройки, заданные при прошлой инициализации шины – если они были заданы). Если дополнительные аргументы будут заданы, шина будет инициализирована. Аргументы для инициализации ищите в описании метода init(). | |||
==Методы== | |||
* SPI.init(baudrate=1000000, *, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=None, mosi=None, miso=None, pins=SCK, MOSI, MISO) – инициализирует шину SPI при помощи заданных параметров: | |||
** baudrate – тактовая частота линии SCK. | |||
** polarity – здесь может быть «0» или «1»; это полярность тактового сигнала, и она задает его состояние в момент, когда передача данных не осуществляется. | |||
** phase – здесь может быть «0» или «1»; это фаза тактового сигнала, и она задает, по какому фронту (он может быть передним или задним) будет считываться значение на линии данных. | |||
** bits – это размер передаваемых данных (в битах). На всех устройствах гарантированно поддерживается только 8 бит. | |||
** firstbit – здесь может быть SPI.MSB (самый старший бит) или SPI.LSB (самый младший бит). | |||
** sck, mosi и miso – это объекты machine.Pin, используемые для линий шины. В большинстве аппаратных SPI-шин (задаваемых в аргументе id в конструкторе) эти контакты фиксированы и поменять их нельзя. В некоторых случаях у аппаратных шин бывает 2-3 альтернативных набора контактов. Произвольное назначение контактов допускаются только при использовании программной (bit-banging) SPI-коммуникации (id = -1). | |||
** pins – порт WiPy не поддерживает аргументы sck, mosi и miso. Вместо этого контакты для SPI-коммуникации для WiPy задаются с помощью кортежа pins. | |||
В случае аппаратной SPI-шины реальная тактовая частота может быть меньше запрошенной – той, что была задана в аргументе baudrate. Это зависит от компонентов, установленных на платформе. Реальную тактовую частоту можно определить, распечатав объект SPI. | |||
* SPI.deinit() – выключает шину SPI. | |||
* SPI.read(nbytes, write=0) – считывает количество байтов, заданное в аргументе nbytes, попутно безостановочно записывая один байт, заданный в аргументе write. Возвращает объект bytes, содержащий считанные данные. | |||
* SPI.readinto(buf, write=0) – считывает данные в буфер buf, попутно безостановочно записывая один байт, заданный в аргументе write. Возвращает None. | |||
Примечание: На WiPy эта функция возвращает количество считанных байтов. | |||
* SPI.write(buf) – записывает байты, содержащиеся в буфере buf. Возвращает None. | |||
Примечание: На WiPy эта функция возвращает количество записанных байтов. | |||
* SPI.write_readinto(write_buf, read_buf) – записывает байты из буфера write_buf, попутно считывая данные в буфер read_buf. В аргументах write_buf и read_buf может быть задан и одинаковый буфер, и разные буферы, но во втором случае эти буферы должны быть одинакового размера. Возвращает None. | |||
Примечание: На WiPy эта функция возвращает количество записанных байтов. | |||
Константы | |||
* SPI.MASTER – для инициализации SPI-шины в режиме ведущего устройства. Используется только на WiPy. | |||
* SPI.MSB – задает, чтобы первым битом был самый старший бит. | |||
* SPI.LSB – задает, чтобы первым битом был самый младший бит. | |||
<syntaxhighlight lang="python" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> |
Версия от 09:00, 20 сентября 2020
Класс SPI – протокол шины SPI (со стороны ведущего устройства)[1]
SPI – это протокол синхронной последовательной передачи данных, управляемый ведущим устройством (мастером). На физическом уровне шина SPI состоит из 3 линий: SCK, MOSI и MISO. Одной и той же шиной могут пользоваться несколько устройств, но у каждого устройства должна быть отдельная 4-ая линия SS («Slave Select», что можно перевести как «выбор ведомого устройства»), чтобы выбрать устройство на шине, с которым будет осуществляться коммуникация. Управление SS-сигналом должно осуществляться в коде пользователя (через класс machine.Pin).
Конструкторы
- Класс machine.SPI(id, ...) – конструирует объект SPI на шине id. Значение в id зависит от используемых порта и устройства. Значения «0», «1» и т.д. обычно используются для выбора аппаратной SPI-шины #1, #2 и т.д. Чтобы задать программную (bit-banging) SPI-реализацию (если она поддерживается используемым портом), задайте значение «-1».
Если дополнительных аргументов задано не будет, то объект SPI будет создан, но не инициализирован (он получит настройки, заданные при прошлой инициализации шины – если они были заданы). Если дополнительные аргументы будут заданы, шина будет инициализирована. Аргументы для инициализации ищите в описании метода init().
Методы
- SPI.init(baudrate=1000000, *, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=None, mosi=None, miso=None, pins=SCK, MOSI, MISO) – инициализирует шину SPI при помощи заданных параметров:
- baudrate – тактовая частота линии SCK.
- polarity – здесь может быть «0» или «1»; это полярность тактового сигнала, и она задает его состояние в момент, когда передача данных не осуществляется.
- phase – здесь может быть «0» или «1»; это фаза тактового сигнала, и она задает, по какому фронту (он может быть передним или задним) будет считываться значение на линии данных.
- bits – это размер передаваемых данных (в битах). На всех устройствах гарантированно поддерживается только 8 бит.
- firstbit – здесь может быть SPI.MSB (самый старший бит) или SPI.LSB (самый младший бит).
- sck, mosi и miso – это объекты machine.Pin, используемые для линий шины. В большинстве аппаратных SPI-шин (задаваемых в аргументе id в конструкторе) эти контакты фиксированы и поменять их нельзя. В некоторых случаях у аппаратных шин бывает 2-3 альтернативных набора контактов. Произвольное назначение контактов допускаются только при использовании программной (bit-banging) SPI-коммуникации (id = -1).
- pins – порт WiPy не поддерживает аргументы sck, mosi и miso. Вместо этого контакты для SPI-коммуникации для WiPy задаются с помощью кортежа pins.
В случае аппаратной SPI-шины реальная тактовая частота может быть меньше запрошенной – той, что была задана в аргументе baudrate. Это зависит от компонентов, установленных на платформе. Реальную тактовую частоту можно определить, распечатав объект SPI.
- SPI.deinit() – выключает шину SPI.
- SPI.read(nbytes, write=0) – считывает количество байтов, заданное в аргументе nbytes, попутно безостановочно записывая один байт, заданный в аргументе write. Возвращает объект bytes, содержащий считанные данные.
- SPI.readinto(buf, write=0) – считывает данные в буфер buf, попутно безостановочно записывая один байт, заданный в аргументе write. Возвращает None.
Примечание: На WiPy эта функция возвращает количество считанных байтов.
- SPI.write(buf) – записывает байты, содержащиеся в буфере buf. Возвращает None.
Примечание: На WiPy эта функция возвращает количество записанных байтов.
- SPI.write_readinto(write_buf, read_buf) – записывает байты из буфера write_buf, попутно считывая данные в буфер read_buf. В аргументах write_buf и read_buf может быть задан и одинаковый буфер, и разные буферы, но во втором случае эти буферы должны быть одинакового размера. Возвращает None.
Примечание: На WiPy эта функция возвращает количество записанных байтов. Константы
- SPI.MASTER – для инициализации SPI-шины в режиме ведущего устройства. Используется только на WiPy.
- SPI.MSB – задает, чтобы первым битом был самый старший бит.
- SPI.LSB – задает, чтобы первым битом был самый младший бит.
<syntaxhighlight lang="python" enclose="div">