Добрый день, уважаемые коллеги!
Изделие SK-iMX6S-SODIMM, совместное использование с SK-iMX6-MB-SODIMM.
Прописал в dts файле 4 устройства, сидящие на одном SPI, они появились в каталоге /dev с именами spidev0.0, spidev0.1, spidev0.2 и spidev0.3.
Открываются все устройства без ошибок.
Обращение к spidev0.0 идет нормально, к остальным устройствам доступа нет (сигналы chip_select сидят в неактивном состоянии).
Структура spi_ioc_transfer имеет вид:
struct spi_ioc_transfer tr = {
tr.tx_buf = (unsigned long)tx,
tr.rx_buf = (unsigned long)rx,
tr.len = 2,
tr.delay_usecs = delay,
tr.speed_hz = speed,
tr.bits_per_word = bits,
};
При сборке программного проекта вылезают сообщения о том,
что не инициализированы должным образом члены класса
spi_ioc_transfer::cs_change и spi_ioc_transfer::pad.
Подскажите люди добрые, что я не доделал.
Искренне благодарю.
У меня в этой секции все порты ввода вывода описаны: клавиатура, порты RS-485 и др. Все работает.
Пины эти были ранее привязаны к другим устройствам, которые я не использую - я эти устройства закомментил.
Sasamy добрый день еще раз.
А попробовал для примера по управлять через команды:
echo 16 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio16/direction
echo 1 > /sys/class/gpio/gpio16/value
echo 0 > /sys/class/gpio/gpio16/value
два пина: gpio3_0 и gpio7_12, они у меня в dts прописаны одинаково.
Так вот: оба пина ведут себя одинаково - если они распределены как CS за SPI устройством, то они не управляются через GPIO - это понятно - они заняты драйвером SPI. Но когда они свободны, они управляются оба как положено. Т.е. по какой то причине они оба не хотят работать именно с SPI устройством, хотя пин gpio5_25 работает с SPI замечательно (он там работает как сигнал CS0).