Настройка и использование SPI


При установке или использовании SPI требуется всего лишь вызвать функцию pid_ioctl. Доступными командами функции pid_ioctl для SPI являются слудующие команды:

Команда Sub-команда Описание
set lsb 0 установить порядок передачи бита: сначала MSB
1 установить порядок передачи бита: сначала LSB
data 8 установить размер юнита данных: 8 битов
16 установить размер юнита данных: 16 битов
div [N] установить деление: 2/4/8/16/32/64/128/256
mode [M] установить режим SPI: 0/1/2/3
get rxlen получить количество ожидающих байтов в буфере приема
txlen получить количество ожидающих байтов в буфере отправки
req start запрос на запись данных
reset запрос на сброс bus

Настройка SPI

Вы можете установить режим SPI, порядок передачи битов, размер юнита данных и деление про помощи команды "set".

Настройка порядка передачи битов

Вы можете установить 0 или 1 для настройки порядка передачи битов SPI, и значением по умолчанию является 0. Если данное значение установлено на 0, то сначала будет передаваться MSB. Настройка порядка передачи битов следующая:

Порядок передачи битов Синтаксис
MSB > LSB pid_ioctl($pid, "set lsb 0");
LSB > MSB pid_ioctl($pid, "set lsb 1");

Настройка размера юнита передачи данных

Вы можете установить 8 до 16 в качестве установки размера блока данных, а значение по умолчанию - 8. How to set the size of data unit is as follows:

Размер юнита данных Синтаксис
8 бит pid_ioctl($pid, "set data 8");
16 бит pid_ioctl($pid, "set data 16");

Установка скорости передачи данных

Скорость передачи данных зависит от деления базовых часов PHPoC. Вы можете выбрать одно из значений скорости деления 2 / 4 / 8 / 16 / 32 / 64 / 128 / 256. Значением по умолчанию является 256. Установить скорость передачи данных можно следующим образом:

Скорость деления Синтаксис
1 of N pid_ioctl($pid, "set div N");

※ Базовые часы P4S-341/P4S-342 составляют 42MHz. Таким образом, скорость передачи данных составляет приблизительно 164Kbps, если скорость деления установлена на 256.

Режим SPI

Вы можете установить один из режимов SPI от 0 до 3, а значение по умолчанию - 3. Как установить режим SPI:

Режим SPI Синтаксис
mode 0 pid_ioctl($pid, "set mode 0");
mode 1 pid_ioctl($pid, "set mode 1");
mode 2 pid_ioctl($pid, "set mode 2");
mode 3 pid_ioctl($pid, "set mode 3");

Получение состояния/статуса SPI

Вы можете получить статус SPI, используя команду "get".

Получить количество ожидающих байтов в буфере приема и отправки

Получить количество отложеннных байтов в буфере обмена и отправки можно следующим образом:

Подразделение Синтаксис
Буфер отправки/Send buffer pid_ioctl($pid, "get txlen");
Буфер приема/Receive buffer pid_ioctl($pid, "get rxlen");

Использование SPI

Запрос на запись данных

Вы можете запросить запись данных при помощи команды, указанной ниже. Перед использованием данной команды вы должны внести данные для отправки буфера. После записи данных вы должны считать столько данных с ведомого SPI, сколько вы отправляли. Использование команды выглядит следующим образом:

Команда Синтаксис
Запрос на запись данных/Write Data pid_ioctl($pid, "req start");

Запрос на сброс Bus

Если связь плохая, вы можете сбросить щину SPI при помощи данной команды.

Команда Синтаксис
Запрос на сброс шины/Request Bus pid_ioctl($pid, "req reset");