Ник:
Пароль:

Контакты

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
Эмуляция master-контроллера spi через gpio в linux
Sol
Добавлено 12.07.2010 12:58 Редактировалось 12.07.2010 13:00 Сообщение: 21
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Смотрю голодными глазами на фразу "отличная работа! все как обычно - просто и доходчиво расписано."

..."просто" им, ээх
Прошу помощи хотя бы в кратце прояснить детали этих манипуляций. Задача - на iMX233 пообщаться в внешней микросхемой по spi. Записать в ее регистры, считать из ее регистров, среагировать на внешнее пришедшее от нее прерывание аналогично pen-irq.
Пост от Александра понятен только на первые 50% - знаю и понимаю куда прописывать его первую половину, но вот начиная с слов "Для примера - тачскрин описан в таблице ведомых устройств таким образом:" идет темный лес, помогите плз вникнуть :)
Чем является вторая часть поста - это выдержки из некого самодельного драйвера, правка исходников tslib или правка исходников ядра?
И как мне лучше поступить в моей задаче если нужно общаться не с контроллером тачскрина а с другой микросхемой? Тревожит еще такой вопрос - смогу ли я хотя бы 100кбит чепрез bitbang вытащить и насколько это загрузит проц?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.07.2010 13:10 Сообщение: 22
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
в первой половине описывается, как объяснить линуксу о существование интерфейса SPI - делаете тоже самое с поправкой на свои пины
во второй половине линуксу объясняется о существование некоего чипа на определенном интерфейсе. далее запускается драйвер чипа и если есть совпадение имен то происходит вызов функции probe в драйвере, где производятся необходимые манипуляции с чипом и линуксом. тут, помимо существования драйвера под вашу микросхему надо менять имена и параметры в похожей структуре:
Код
#if defined(CONFIG_TOUCHSCREEN_ADS7846)
[1] = { /* Touchscreen support */
.modalias = "ads7846",
.max_speed_hz = 100 * 1000, /* 100 кГц вполне хватает */
.bus_num = 3, /* этим мы сообщаем что устройство подключено к шине с id = 3 */
.controller_data = (void *) PINID_SSP1_DATA2, /* это описан gpio-пин для cs */
.platform_data = &ads_info,
},
#endif
};


PS если требуется серьезная скорость доступа к "другой микросхеме", то имеет смысл терзать запуск штатного SPI-контроллера iMX

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 12.07.2010 14:36 Редактировалось 12.07.2010 14:37 Сообщение: 23
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Цитата
PS если требуется серьезная скорость доступа к "другой микросхеме", то имеет смысл терзать запуск штатного SPI-контроллера iMX

Штатный SPI в iMX - звучит очень заманчиво, но как я понимаю в iMX233 их всего два, и на плате от Павла первый занят NAND/SD, второй - идет на KSZ8851. Что-то проглядел?
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 12.07.2010 14:56 Сообщение: 24
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
В Линукс на SPI шину можно повесить много устройств - сколько угодно ;) Для этого есть чип-селекты (CS)
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 12.07.2010 15:07 Редактировалось 12.07.2010 15:30 Сообщение: 25
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Цитата
В Линукс на SPI шину можно повесить много устройств - сколько угодно ;) Для этого есть чип-селекты (CS)


О, не знал, спасибо за ценную информацию! Правда посмотрел повнимательней на плату - подпаяться к нужным ногам KSZ практически нереально. Ушел учиться писать модули ядра
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.07.2010 17:04 Сообщение: 26
sasamy
4.70

Пункты: 77159
Регистрация: 14.08.2009
Цитата
Тревожит еще такой вопрос - смогу ли я хотя бы 100кбит чепрез bitbang вытащить и насколько это загрузит проц?


Сейчас у меня 100 кГц на тачскрине но там данных немного бегает и нечасто, поэтому какой либо нагрузки на систему от битбанга не заметно.
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 13.07.2010 16:27 Редактировалось 13.07.2010 16:28 Сообщение: 27
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Завел на imx233 на выходной гребенке spi_gpio битбангом, на нем поднял драйвер spidev для работы с spi как с char-device'ом.
Работает, но напрягает один момент - как ни кручу параметр max_speed_hz и в драйвере и в настройках порта - по логическому анализатору физически на выходе всегда одна и та же скорость примерно в 1.2МГц

Отсюда вопрос прежде всего к Александру (aka sasamy) - то что скорость на выходе выставлена 100кГц - это вживую проверялось? Не могу понять в чем дело, видимо опыта работы с подобными драйверами совсесм мало

Содержимое spi_board_info:
Код
.modalias = "spidev",
.max_speed_hz = 100 * 1000,
.bus_num = 3,
.controller_data = (void *) PINID_LCD_D04, //chipselect pin
.chip_select = 0,
.mode = SPI_MODE_0
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 06.08.2010 18:23 Сообщение: 28
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
Юр, ви таки будете смеяться, но я завел SPI GPIO на нюке. и он вроде даже работает. осцилла дома нет. бодаюсь с ADS7843 и PENIRQ на nIRQ1.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 06.08.2010 21:15 Сообщение: 29
sasamy
4.70

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

то что скорость на выходе выставлена 100кГц - это вживую проверялось?


"Была у меня таможня, были контрабандисты" :) Сейчас у меня из приборов только сурер-тестер M-838 - я лично ничего не измерял, но тачскрин работает справно.

Цитата

Не могу понять в чем дело, видимо опыта работы с подобными драйверами совсесм мало


Аналогично - искал достойный способ без напрягов прикрутить тачскрин и нашел.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.08.2010 01:40 Сообщение: 30
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Юр, ви таки будете смеяться, но я завел SPI GPIO на нюке. и он вроде даже работает. осцилла дома нет. бодаюсь с ADS7843 и PENIRQ на nIRQ1.

Да ты просто нереально крут!!!
Я в командировке неделю долбался с проклятым SPI. И убалтывал и уговаривал и обманывал - однофигственно конфетти выдавал :-/
Путем фейковых пинов я поднял интерфейс и даже проходил вызов драйвера и в системе оно появлялось - разумеется без физического обмена. Застрял (неасилил) куда проваливались вызовы что-то-там-spi-tail, если бы отловил то прописал бы свое пиномахательство..
О многогомудрый - раскрой же секрет КАК ты смог это сделать?!?! Под линух или QNX? Объясни мне - недотепе, как прописывать эти долбанные пины.
Вместе пободаемся с прерываниями :)
Прикинь, как Саше плохо - бодаться и трахаться не с чем - ску-у-чно :-P

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux