Перейти к содержанию
    

I2C и SPI - как использовать под Линуксом ?

Вообщем опять у меня вопрос - хочу общаться с вышеуказанными интерфейсами. Желательно из шелла.

 

Подскажите направление поиска ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообщем опять у меня вопрос - хочу общаться с вышеуказанными интерфейсами. Желательно из шелла.

 

Подскажите направление поиска ...

 

Работаю с i2c через ioctl /dev/i2c (c 89 0), spi не пользую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос работы из shell с i2c и spi - интерфейсами меня тоже интересует. С нетерпением жду продолжения топика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как устроийство SPI видно, из под консоли у вас под Linux не густо средств чтобы поработать с устройисвами, можно записать, считать

 

Пример использования последовательной flash, подцепленной к SPI интерфейсу лежит на:

http://www.heavy-online.ru/arm-linux/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 dch

 

Интересует нечто вроде программы gpio для чтения/записи состояния выводов general purpose input /output процессора ( см. http://electronix.ru/forum/index.php?showtopic=34444 ) , но только для интерфейсов i2c и spi процессора AT91RM9200 - средство, которое можно было бы использовать вместе с платой Rainbow для подключения к другим устройствам в качестве логического анализотора их i2c, spi интерфейсов.

Это теоретически. Практически видна опасность повреждения DataFlash на плате Rainbow при подключении к интерфейсу spi процессора случайного потока данных. Но против этого можно принять меры аппаратного характера.

 

P.S. В описании u-boot'a такие средства для i2c и spi вроде бы есть, но в том варианте u-boot, который пропатчен в соотвестввии с http://www.heavy-online.ru/arm-linux/ этого нет. Надо будет как-нибудь попробовать собрать u-boot с поддержкой этих тестовых функций.

Изменено пользователем Vishay

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. В описании u-boot'a такие средства для i2c и spi вроде бы есть, но в том варианте u-boot, который пропатчен в соотвестввии с http://www.heavy-online.ru/arm-linux/ этого нет.

Начиная с 1.1.1 в u-boot есть поддержка SPI flash - в конфигурационном файле нужно раскомментировать строчку. Даете коман дочку flinfo если SPI флэш не видна - лезете в конфигурационный файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фирма ST для поддержки своего выпускаемого железа содержит свой STLinux, и в документации на него есть примеры программ для работы с i2c и spi интерфейсами :

 

i2c:

http://www.stlinux.com/docs/manual/distrib...tion_guide6.php

 

spi:

http://www.stlinux.com/docs/manual/distrib...tion_guide7.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для тренировки работы с i2c интерфейсом платы Rainbow я припаял к ней на проводках микросхему EEPROM M24256 фирмы ST с неким примерно известным запрограммированным до меня содержимым, с закороченными на землю адресными выводами ( адрес на шине i2c 0x50 ) и резистором 5 кОм на выводе /WC для защиты от записи.

Попробовал считать ее содержимое при помощи готовых средств Linux'а, для чего первоначально использовал ядро с поддержкой EEPROM - в каталоге /sys/bus/i2c/devices/0-0050/eeprom видны первые 256 байт EEPROM'а.

 

cat /sys/bus/i2c/devices/0-0050/eeprom | hexdump -C

 

Далее попробовал почитать другие адреса EEPOMa при помощи утилит из пакета lm-sensors: i2cdump считала те-же 256 байт, а выше по адресам считывала не совсем-то, что ожидалось.

 

i=0; /usr/sbin/i2cdump -y 0 0x50 c $i; while [ "$i" -le 128 ]; do echo "i=$i" ; /usr/sbin/i2cdump -y 0 0x50 c $i; let i+=1; done;

 

Для верификации содержимого EEPROMa пришлось считать его без Linux'а модифицированной программой BasicTWIEeprom из тестовых примеров для AT91RM9200 от Atmel (файл eeprom_read.zip).

 

Имея т.о точное содержимое EEPROMa в файле, я предпринял еще несколько попыток стандартными средствами Linux'a считать все содержимое EEPROM'a, но они оказались безуспешными.

 

Далее, я попробовал написать свою программу на Си для решения этой задачи ( файл i2c_program.zip ). Для еe работы необходимо ядро с выключенной поддержкой EEPROM, иначе в адреса 0x50 ... 0x57 шины i2c ничего нельзя записать при помощи вызова ioctl.

 

Вот скрипт, который я использую для создания устройства /dev/i2c и загрузки программы из компьютера в файловую систему платы Rainbow на ram-диске:

 

if [ ! -c "/dev/i2c" ] ; then mknod -m 600 /dev/i2c c 89 0 ; fi ; cd /home ; prgn="./i2c_program"; echo -e "binary\nget $prgn" | ./tftp 192.168.2.41 ; if [ -e $prgn ] ; then chmod 544 $prgn ; fi ; ls -l ;

 

Команда для запуска программы:

 

#./i2c_program 50 0 255

где параметры командной строки: address_i2c, mem_addr, nbytes.

 

 

P.S.

Начал я практическое изучение i2c - интерфейса под Linux-ом на плате Rainbow с такого скрипта:

mknod /dev/i2c c 89 0

ls -l /dev/i2c

dmesg > /dev/i2c

, но при просмотре сигналов интерфейса i2c в осциллограф выяснилось, что текст из dmesg пишется в i2c-адрес 0x7f. ):- .

i2c_program.zip

eeprom_read.zip

Изменено пользователем Vishay

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

/sys/bus/i2c/devices/0-0050/eeprom видны первые 256 байт EEPROM'а.

 

cat /sys/bus/i2c/devices/0-0050/eeprom | hexdump -C

остальные части eeprom должны быть:

/sys/bus/i2c/devices/0-0051/eeprom

/sys/bus/i2c/devices/0-0052/eeprom

 

и так далее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...