реклама на сайте
подробности

 
 
> Linux программирование, доступ к SPI
Zelepuk
сообщение Dec 2 2011, 13:56
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



допустим в системе есть
\dev\SPIdev0
как в контектсе Си будет выглядеть запрос и обмен по устройству SPI?
можно ли применить функции работы с файлами из стандартной библиотеки, если SPIdev0 - это файл?
требуется организовать в пользовательском приложении связь по SPI с подчинённым устройством в приложении
незнаю как подступиться
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lampus
сообщение Dec 4 2011, 11:42
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 27-05-11
Пользователь №: 65 310



Цитата(Zelepuk @ Dec 2 2011, 17:56) *
допустим в системе есть
\dev\SPIdev0

Во-первых, скорее всего имеется в виду /dev/spidevB.X,
где B - номер шины, X - номер Chip-Select'а.
Цитата(Zelepuk @ Dec 2 2011, 17:56) *
как в контектсе Си будет выглядеть запрос и обмен по устройству SPI?

Если требуетсмя half-duplex обмен данными, то тупо read()/write() из файла устройства. Если нужен full-duplex обмен данными, то это придётся делать через соответсвующий ioctl(). Ссылки на примеры выше уже привели.
Цитата(Zelepuk @ Dec 2 2011, 17:56) *
можно ли применить функции работы с файлами из стандартной библиотеки, если SPIdev0 - это файл?
требуется организовать в пользовательском приложении связь по SPI с подчинённым устройством в приложении
незнаю как подступиться

Правильный метод - написать модуль ядра, который будет предоставлять userspace прриложению интерфейс через атрибуты sysfs или символьное устройство. Городить огород через spidev не очень светлая мысль, а если понадобится прерывание обрабатывать или GPIO дёргать? Будете /dev/mem мучать?
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Dec 4 2011, 14:03
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(Lampus @ Dec 4 2011, 14:42) *
Во-первых, скорее всего имеется в виду /dev/spidevB.X,
где B - номер шины, X - номер Chip-Select'а.

Если требуетсмя half-duplex обмен данными, то тупо read()/write() из файла устройства. Если нужен full-duplex обмен данными, то это придётся делать через соответсвующий ioctl(). Ссылки на примеры выше уже привели.

Правильный метод - написать модуль ядра, который будет предоставлять userspace прриложению интерфейс через атрибуты sysfs или символьное устройство. Городить огород через spidev не очень светлая мысль, а если понадобится прерывание обрабатывать или GPIO дёргать? Будете /dev/mem мучать?

Интересно, можно подробнее об этом, что такое sysfs ?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 23:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016