Processing:Библиотеки/Hardware I/O/Класс SPI: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 10: | Строка 10: | ||
==Обозначение== | ==Обозначение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
SPI | SPI | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 34: | Строка 34: | ||
==Конструктор== | ==Конструктор== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
SPI(dev) | SPI(dev) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 40: | Строка 40: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
dev – название SPI-устройства. Тип данных – String | dev – название SPI-устройства. Тип данных – String | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 46: | Строка 46: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 52: | Строка 52: | ||
==Пример== | ==Пример== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
import processing.io.*; | import processing.io.*; | ||
SPI adc; | SPI adc; |
Версия от 18:10, 14 мая 2023
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Черновик |
Класс SPI[1]
Обозначение
SPI
Описание
Этот класс открывает интерфейс SPI и делает устройство, на котором он открыт, ведущим SPI-устройством.
Интерфейс SPI (сокр. «serial peripheral interface», т.е. «последовательный периферийный интерфейс») – это последовательная шина, часто используемая для коммуникации с датчиками и устройствами памяти. Она использует 4 контакта: MOSI (сокр. от «master out slave in», т.е. «ведущее устройство отправляет данные, ведомое устройство – получает»), MISO («master in slave out», т.е. «ведущее устройство получает данные, ведомое – отправляет») и SCLK (для тактового сигнала), которые используются всеми устройствами шины, а также один или более контактов SS («slave select», т.е. «выбор ведомого устройства»), которые используются ведущим устройством для сообщения какому-либо ведомому устройству, что именно оно выбрано для следующей коммуникации.
Ведущее устройство («мастер») инициирует коммуникацию, подавая на SS-контакт ведомого устройства («раба») значение LOW, а затем начинает генерировать тактовый сигнал. В интерфейсе SPI «мастер» и «раб» передают данные одновременно. Следовательно, вы не можете прочитать данные, при этом не выполнив запись каких-либо данных (даже если это значит отправить просто нули или какую-то другую «мусорную» информацию).
У интерфейса SPI много разных настроек, и их можно задать при помощи функции settings(). Класс SPI поддерживает создание нескольких объектов SPI для одного и того же интерфейса SPI.
Методы
Конструктор
SPI(dev)
Параметры
dev – название SPI-устройства. Тип данных – String
Возвращаемое значение
Пример
import processing.io.*;
SPI adc;
void setup() {
//printArray(SPI.list());
adc = new SPI(SPI.list()[0]);
adc.settings(500000, SPI.MSBFIRST, SPI.MODE0);
}
void draw() {
// считывает значения через интерфейс SPI,
// присланные от цифроаналогового преобразователя;
// отправляемые данные, по сути, могут ничего не значить:
byte[] out = { 0, 0 };
byte[] in = adc.transfer(out);
// согласно «даташиту», нужно сделать сдвиг входящих битов влево:
int val = ((in[0] & 0x1f) << 5) | ((in[1] & 0xf8) >> 3);
// значение в диапазоне от «0» до «1023»:
println(val);
}