Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX
AT91SAM9260 - не работает SPI
Pasa
Добавлено 21.11.2009 02:44 Редактировалось 25.11.2009 20:08
0
Сообщение: 1
Pasa
0

Регистрация: 27.05.2009
Процессор AT91SAM9260

Из документации ядра 2.6.28 взял пример работы с SPI - spidev_test.c
В конфигурации ядра сделал все как описывали на форуме. Все подключилось.
В /dev появилось устройство spidev. Пример заработал - обращения к драйверу проходят.
Передача вроде должна идти.А вот данных осцилографом не вижу.

Распечатал на консоль значения портов и регистров SPI - режимы вроде установлены верно.
А передачи нет. При этом датафлэш висящая на SPI работает отлично, и когда идет
обращение к ней, то осцилографом все прекрасно видно.

Подскажите в чем тут загвоздка?
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 22.11.2009 12:27 Сообщение: 2
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
а в /dev/ только одно устройство появилось?
Посмотри здесь http://alfamayonez.ru/2009/10/08/spi-%d0%b8-spidev-%d0%bd%d0%b0-mat91sam9xe512/
Может поможет.
Спуститься к концу Подняться к началу
Персональная информация
Pasa
Добавлено 22.11.2009 14:42 Редактировалось 22.11.2009 14:44 Сообщение: 3
Pasa
0

Регистрация: 27.05.2009
Цитата
а в /dev/ только одно устройство появилось?
Посмотри здесь http://alfamayonez.ru/2009/10/08/spi-%d0%b8-spidev-%d0%bd%d0%b0-mat91sam9xe512/
Может поможет.




{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 0,
},

{
.modalias = "spidev",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 1,
},
{
.modalias = "spidev",
.chip_select = 1,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 0,
},
{
.modalias = "spidev",
.chip_select = 1,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 1,
},

появилось три девайса : spidev1.0,spidev0.1,spidev1.1

посмотрел ссылку.....в конфиге у меня

CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y

#
# SPI Master Controller Drivers
#
CONFIG_SPI_ATMEL=y
# CONFIG_SPI_BITBANG is not set

#
# SPI Protocol Masters
#
# CONFIG_SPI_AT25 is not set
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
# CONFIG_THERMAL_HWMON is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y


распечать из ядра на консоль инициализацию SPI попробую вечером....отпишусь..
Спуститься к концу Подняться к началу
Персональная информация
Pasa
Добавлено 25.11.2009 19:19 Сообщение: 4
Pasa
0

Регистрация: 27.05.2009
Эксперименты привели к следующему: вызовы write и read прекрасно работают. А если через ioctl вызывать spidev_ioctl(для полнодуплексного обмена), то из драйвера SPI (atmel_spi.c) идет возврат с ошибкой опций устновленного протокола. И естественно передачи никакой нет. По исходнику посмотрел - там где анализ на нулевую скорость передачи и ноль бит в слове. В уровень spidev.c структура с параметрами доходит нормально(параметры ставятся в верхнем юзерском слое в самой проге). А потом где-то теряются/затираются/обнуляются и до дравера SPI не доходят. Вот счас пробую проследить всю цепочку...

Мда....вот уж не ожидал таких плясок с бубном....не покидает ощущение, что ну не может быть таких ошибок в ядре и я не совсем правильно пользуюсь вызовами ioctl(). Но ведь все взято из примера в документации которая идет с самим ядром. Хотя с другой стороны в этом самом примере сходу нашел одну описку/опечатку/ошибку.

Может кто сталкивался с таким и подскажет что-нибудь дельное? Уж больно не хочется лезть в потроха ядра, править его и с ужасом думать о следущих "танцах", когда придется браться за сокеты и шину I2C
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 25.11.2009 20:51 Сообщение: 5
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Может стоит под себя переписать atmel_spi? - как это сделал достопочтенный sasa, он уже не раз ругался на реализацию atmel_spi в linux. Я пока сам туда не нырял.
Спуститься к концу Подняться к началу
Персональная информация
Pasa
Добавлено 25.11.2009 22:00 Редактировалось 25.11.2009 22:01 Сообщение: 6
Pasa
0

Регистрация: 27.05.2009
Цитата
Может стоит под себя переписать atmel_spi? - как это сделал достопочтенный sasa, он уже не раз ругался на реализацию atmel_spi в linux. Я пока сам туда не нырял.

Похоже что atmel_spi худо-бедно работает. А вот spidev каким-то образом теряет данные при передаче их от пользовательской программы к atmel_spi, причем только в режиме полнодуплексного обмена. Как я выше написал, зарегенные функции write/read работают...что и проверено осцилографом. Все передется/принимается, все сигналы красивые...А вот фуллдуплекс...

На разбор "кухни" и перепись уровня spidev времени нету. Были мечты - вот...готовая рабочая ось...все есть, сеть, протоколы, поддержка всевозможных шин...бери и пиши сразу прикладное ПО....мда....реалии пока говорят немного о другом...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.11.2009 22:42 Сообщение: 7
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата
Все передется/принимается, все сигналы красивые...А вот фуллдуплекс...


Не спешите с выводами - spi у атмела в linux работает в дуплексе "из коробки", почему spidev не работает - нужно разбираться. С удовольствием бы занялся вашей проблемой но я далеко от дома, нет ни времени ни платы под рукой. Я бы погуглил тщательней и начал бы поиск с архива форума www.at91.com
Спуститься к концу Подняться к началу
Персональная информация
Pasa
Добавлено 26.11.2009 13:11 Сообщение: 8
Pasa
0

Регистрация: 27.05.2009
Проблемка похоже решилась тут:

http://electronix.ru/forum/index.php?showtopic=69824&st=0&gopid=684607&#entry684607
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX