Управляем чем угодно откуда угодно

Работа с SPI и CAN шиной

Виртурилка, 3G/4G, WiFi, моторчики, датчики, GPS и прочее - питание, драйвера, совместимость и т.д.

Работа с SPI и CAN шиной

Сообщение korableff » 02 дек 2014, 16:57

Всем привет! Решил использовать виртурилку по прямому назначению и подключить ее к CAN шине моего автомобиля.
Возникло несколько вопросов по программной и аппаратной частям.
1. В SPI используется 4 линии - MOSI, MISO, SCLK и SS. По схеме компонентов из вики на виртурилке нашел GPIO24/SPI0_SCLK, GPIO23/PWM0/SPI0_SS, GPIO22/SPI0_MOSI. Как не вглядывался - не нашел MISO, я что-то проглядел или их реально нет?
2. В модулях я нашел can.ko и прочие, поддержка Socket CAN есть в последней прошивке виртурилки?
3. Может быть есть где-то в дебрях дока или хотя бы намек на то как с ней работать с ентой кан шиной из виртурилки?

Буду рад любой помощи. Заранее спасибо всем ответившим в топике)
korableff
 
Сообщения: 3
Зарегистрирован: 07 окт 2013, 13:47

Re: Работа с SPI и CAN шиной

Сообщение phoenix367 » 10 дек 2014, 10:38

MISO вроде бы на GPIO80/PWM3 сидит, если мне не изменяет память. Единственный момент - его надо включать отдельно правкой файлов ядра. По крайней мере раньше так было. А с can шиной без аппаратного драйвера из виртурилки работать не получится. Т.е. можно нацепить на SPI шину микросхему драйвера, а дальше вы уже сами сможете отправлять и принимать данные либо из user mode, либо с помощью драйвера ядра.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Работа с SPI и CAN шиной

Сообщение korableff » 10 дек 2014, 20:44

Спасибо за ответ!
Аппаратный драйвер имеется в виду что-то типа MCP2515?
А драйвер ядра имеется в виду включить при компиляции can bus?
Может быть где-то есть дока по этому? Если я правильно понял, в виртурилке несколько SPI и нужно указать canbus модулю какой именно SPI обрабатывает эту шину?
И не пинайте сильно за уточнение по поводу "Единственный момент - его надо включать отдельно правкой файлов ядра. " - это где-то можно прочитать?
korableff
 
Сообщения: 3
Зарегистрирован: 07 окт 2013, 13:47

Re: Работа с SPI и CAN шиной

Сообщение phoenix367 » 11 дек 2014, 13:07

В файле virt2real-sdk/kernel/arch/arm/mach-davinci/dm365.c попробуйте закомментировать строку

Код: Выделить всё
MUX_CFG(DM365,  SPI0_SDENA1,    3,   26,    3,    2,     false)


и пересобрать ядро.

После этого вместо SPI0_SS на CON40 должно появиться SPI0_MISO. А для того, чтобы выбирать девайс при передаче данных можно либо дергать какой-нибудь GPIO ручками или в файле virt2real-sdk/kernel/arch/arm/mach-davinci/board-dm365-evm.c заменить

Код: Выделить всё
.chipsel  = BIT(1)


в структуре v2rdac_spi_udesc на

Код: Выделить всё
.chipsel  = BIT(0)


в этом случае сигнал выбора устройства должен появляться на GPIO25. При этом надо будет открывать устройство /dev/spidev0.0, а не /dev/spidev0.1 как в примере на вики.

Вот такая магия. Ну и чтобы было понятно, откуда все это берется скачайте табличку с обозначениями констант и масок pinmux регистров процессора вот отсюда http://processors.wiki.ti.com/index.php/DM365/DM368_Pinmuxing_Spreadsheet_Utility
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19


Вернуться в Железо - заставляем работать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2