взял сишный пример из доки к ядру, положил на плату, скомпилировал, запустил - на пинах тишина.
внес изменения из вышеприведенной ссылки,
скомпилировал, запустил
убрать строчку .controller_data ибо чипселект выбирается через .chip_select - пробовал добавить и пр.. все равно работает..
для очистки совести в файле at91sam9260_devices в п/п at91_add_device_spi() вбить отладочный вывод типа
ну и в логе проверить
всякое бывает..
и на всякий случай (а они разные бывают)
речь идет об этой похожей плате:
слева вверху 40 пиновый разъем. сигнал clk я созерцаю
справа-налево 5 пара нижний (ближе к плате) контакт
при загрузке на нем 3.3в, после инициализации 0..
понятно, попробуйте зайти "с другого угла" - отключите от платы кита свою плату, возьмите в местной wiki пример где управляют пином АРМа
заточите этот пример под свои пины и проконтролируйте осциллом, что электрика живая. если пины не управляются, то возможно вы что-то пожгли, например внешним подключением или кем-нить заняты..
потом можно попробовать изобразить софтовый SPI.
этими нудными действиями вы отсечете неисправность физики соединения и проверите правильность стыковки на уровне SPI
вдогонку - и озвучьте куда на вышеприведенной фотке подключались и каким образом..
!!!! а что за девайсина? надеюсь дальше есть стабилизатор для кормежки на 3.3 вольта или LevelShifter 5<>3. Если нет, то наверно готовьтесь к худшему..
К Х11 подключен AVR (ATMega8). Запитан AVR от Х11. Преобразователь 5-3.3 не поставлен (по недосмотру). Можно считать, что spi-контроллер в ARM мертв ? Это можно как-то проверить ? Как я понимаю, программно через gpio-драйвер spi-пины дергаться будут в любом случае ?
К Х11 подключен AVR (ATMega8). Запитан AVR от Х11. Преобразователь 5-3.3 не поставлен (по недосмотру). Можно считать, что spi-контроллер в ARM мертв ? Это можно как-то проверить ? Как я понимаю, программно через gpio-драйвер spi-пины дергаться будут в любом случае ?
хм.. сложно что-то сказать
для начала все же убедитесь что пины уцелели и управляются.
несложной программы из местной Wiki для подрыгать пинами вполне хватит - контролировать или осциллом или резистор+светодиод или тестер..
для реализации SPI-GPIO можно выбрать почти любые подходящие пины и разумеется перевести свое устройство на питание 3.3в или поставить в разрыв SPI любой чип толерантный к 5в. если надо то поищу название.
если нужен аппаратный SPI, то можно подключиться к оставшемуся SPI_0 с оглядкой на свое питание :)
зы "по уму" надо было ставить мегу на 3.3 (да - потеря быстродействия) да и мега к чему-то была еще подключена..
зы2 может все же питание было 3.3? там на разъеме оба есть и 3.3 и 5..
для начала все же убедитесь что пины уцелели и управляются.
несложной программы из местной Wiki для подрыгать пинами вполне хватит - контролировать или осциллом или резистор+светодиод или тестер..
Проверили - MISO\MOSI управляются, SPCK постоянно в нуле. Видимо все-таки пожгли.
для реализации SPI-GPIO можно выбрать почти любые подходящие пины
Правильно ли понимаю, что нужно использовать ядро версии 34 (вот тут об этом сказано) - т.к. в нем реализован gpio_spi.h, который используется в предлагаемом коде.
И второй вопрос - в файлах Linux/arch/arm/mach-at91/*.c аналога массива *devices[]={...} не нашел - можно ли вместо нее регистрировать структуру sk_spi_gpio_device с помощью функции platform_device_register() ?
Есть ли еще какие-то особенности при подымании gpio_spi на at91sam9260 ?
поставить в разрыв SPI любой чип толерантный к 5в. если надо то поищу название.