Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
использование SPI на SK-AT91SAM9G45
Hoksmur
Добавлено 12.08.2013 07:25
0
Сообщение: 1
Hoksmur
0

Пункты: 2034
Регистрация: 20.05.2013
Доброго дня, All!
Подскажите, как работать с SPI под Linux? Надо будет из программы пару раз обратиться к внешнему устройству. Можно ли обойтись без пересборки ядра, и как обращаться к устройству? Вполне достаточно будет, если можно через внешние утилиты, по типу i2c-tools Ну или через перенаправление на/из устройства. И правильно ли я понял, что SPI3 реализован через "дрыг-нога"?
Поддержка на плате вроде есть, вот для информации, чтобы предметно общаться:
Скрытый текст
Скрытый текст виден только зарегистрированным пользователям.

Скрытый текст
Скрытый текст виден только зарегистрированным пользователям.

Скрытый текст
Скрытый текст виден только зарегистрированным пользователям.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.08.2013 12:46 Редактировалось 12.08.2013 12:49 Сообщение: 2
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Цитата

Надо будет из программы пару раз обратиться к внешнему устройству.


http://lxr.free-electrons.com/source/Documentation/spi/spidev

Цитата

Можно ли обойтись без пересборки ядра, и как обращаться к устройству?


Если spidev прописан в board-файле то не надо.

Цитата

правильно ли я понял, что SPI3 реализован через "дрыг-нога"?


Да - он специально для тачскрина сделан
Спуститься к концу Подняться к началу
Персональная информация
Hoksmur
Добавлено 12.08.2013 14:09 Сообщение: 3
Hoksmur
0

Пункты: 2034
Регистрация: 20.05.2013
Цитата

Можно ли обойтись без пересборки ядра, и как обращаться к устройству?

Если spidev прописан в board-файле то не надо.

А где его искать?
Спасибо, что опять помогаете.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.08.2013 19:00 Редактировалось 13.08.2013 09:47 Сообщение: 4
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Цитата

А где его искать?


http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-sam9m10g45ek.c

пропишите по аналогии как тут

http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-pcontrol-g20.c#L175

примеры как работать из юзерспейс тут
http://lxr.free-electrons.com/source/Documentation/spi/spidev_fdx.c
http://lxr.free-electrons.com/source/Documentation/spi/spidev_test.c

нужно еще включить spidev в menuconfig
Device Drivers --->
[*] SPI support --->
<*> User mode SPI device driver support
Спуститься к концу Подняться к началу
Персональная информация
Hoksmur
Добавлено 13.08.2013 10:24 Редактировалось 13.08.2013 10:24 Сообщение: 5
Hoksmur
0

Пункты: 2034
Регистрация: 20.05.2013
Покопался, чёт как-то сложно пока. Поправьте, если где ошибся.
SPI устройства можно наращивать последовательно, но тогда системе надо знать, сколько байт считать/записать. А задаётся это в структурах, пример по ссылке привели. А значит - надо пересобрать ядро. SPI0 и SPI1 уже заняты, на 0 висит датафлеш, на втором нехилая такая горстка переферии. SPI 3 сделан через GPIO, что тоже имеет свои минусы, хоть и не критичные в моём случае. (мне надо коммутировать неспешно внешние цепи) В любом случае - работать из userspace простыми способами не получится (например, просто подключив в свою программу библиотеки).
Поэтому делать буду на i2c, благо есть и i2c-tools.
Буду признателен, если кинете в меня примерами с описаниями на русском (english читаю, но не свободно).
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.08.2013 13:41 Сообщение: 6
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Цитата

SPI0 и SPI1 уже заняты, на 0 висит датафлеш


У каждого канала SPI до 4 слэйвов может быть, а датафлеша на местных платах с 9g45 вообще нет.

Цитата

работать из userspace простыми способами


к слову i2c (TWI) на атмеловских процессорах не рекомендутся использовать, по умолчанию включена софтовая эмуляция на GPIO, как и в случае 3-го spi-мастера, но с i2c в юзерспейс конечно проще работать без пересборки ядра чем с spi.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 13.08.2013 13:52 Сообщение: 7
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Чтобы под себя надостроить SPI придется ядро пересобраать в любом случае (вернее файл board-9g45.c чутка подкорректировать).
А на счет сложности работы - не понятно, что именно сложно? Там три вызова для файлов /dev/spidev*.*- read, write и ioctl, первые два в полудуплексе, последний - в полном. Т.е. работа происходит как с любыми другими файлами.
Я иногда и просто эхом не гнушаюсь слать в spi команды.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux