Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Разработка драйверов и драйверные библиотеки > Драйверные библиотеки > Библиотека разработки SPI драйверов (libspi-master) > API библиотеки > spi_dma_xchange()



spi_dma_xchange()

Функция использует 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 драйверов