Функция использует DMA для обмена данными между SPI-мастером и устройством SPI.
#include <hw/spi-master.h>
int spi_cmdread( int fd,
uint32_t device,
void *cbuf,
int16_t clen,
void *rbuf,
int rlen );
- fd
- Дескриптор файла, который вернула функция spi_open().
- device
- Идентификатор устройства с не более чем одним из следующих флагов, опционально объединенных (см. spi_cmdread() поле device).
- wbuf
- указатель на буфер для отправки или
NULL
, если нет данных для отправки.
- rbuf
- указатель на буфер для получения или
NULL
, если нет данных для получения.
- len
- Длина объема, в байтах.
libspi-master
Функция использует DMA для обмена данными между SPI-мастером и устройством SPI. Драйвер SPI обычно считает ошибкой, если количество байт, возвращаемых этой функцией, не совпадает с количеством байт, которые он попросил функцию обменять.
- nbytes
- Количество успешно обменянных байт.
- -1
- Произошла ошибка, код ошибки записывается в errno.
- EIO
- Запись на устройство не удалась, или произошла аппаратная ошибка.
- EINVAL
- Идентификатор устройства недействителен, или вы пытаетесь разблокировать устройство, которое не заблокировано.
- ENOMEM
- Недостаточно памяти.
- EPERM
- Устройство заблокировано другим подключением.
- ENOTSUP
- DMA не поддерживается.
ЗОСРВ «Нейтрино»
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
errno, spi_open()
Предыдущий раздел: Библиотека разработки SPI драйверов