реклама на сайте
подробности

 
 
> Проблема с I2C интерфейсом контроллера тачскрина FocalTech FT5306, Нужно увеличить задержку при чтении регистров
Hoodwin
сообщение Jul 10 2014, 20:23
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Вот напоролись тут на следующую проблему. Имеется экран от Newhaven Display с емкостным тачем, основанном на чипе FT5306 от FocalTech. Он отказался работать по I2C в линуксе от TI, поставляемом вместе с стартер китом для AM3359. В процессе разбора полетов выяснилось, что чип немного туповат, и транзакция чтения его регистров на шине I2C вида S Addr|W REG S Addr|R Data P выдает обратно значение адреса регистра REG вместо данных Data. А все потому, что ARM слишком быстро шуршит сигналами, видимо чип (у него внутри 8051 на самом деле) не успевает обработать прерывание у себя там и выставить правильные данные в регистре передачи своего I2C-кора. Когда я переподключил дисплей к микроконтроллеру и стал медленнее сигналы дергать, то все там нормально читается.

В итоге имею такой вопрос. Можно ли научить линукс как-то притормаживать операцию чтения данных после выдачи первой части команды с номером регистра? И если можно, то как? Суть в том, что транзакция на шине состоит из двух частей, и драйвер вызывает ее одним вызовом I2C SMBUS API. Можно наверное попробовать это запатчить в яре, но мне эта идея не очень нравится, так как, по-хорошему, задержка нужна только для вполне конкретного типа i2c клиента, причем я еще даже не знаю точно какая она есть на самом деле. Известно пока, что 100 мкс мало, а 1000 мкс - достаточно. Может быть, можно как-то разбить само операцию на две более примитивные, но неделимые, и между ними вставить задержку? Тогда такой вызов можно будет перенести именно в драйвер для FT5306, и задержка будет только у него.

Еще замечено, что для чипа FT5406 такой задержки нет, и тач на дисплеях большего размера работает нормально.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hoodwin
сообщение Jul 11 2014, 10:39
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



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

Сейчас рабочая гипотеза, что если на старте FT5306 сигналы /INT и /WAKE не притянуты к питанию, то он не заводится. На ките они подключены к GPIO без пуллапов. А линукс или U-Boot начинает ими рулить со значительной задержкой после старта. Когда передергиваем при уже запущенном всем, то работает.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jul 11 2014, 11:12
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Hoodwin @ Jul 11 2014, 14:39) *
Сейчас рабочая гипотеза, что если на старте FT5306 сигналы /INT и /WAKE не притянуты к питанию, то он не заводится. На ките они подключены к GPIO без пуллапов. А линукс или U-Boot начинает ими рулить со значительной задержкой после старта. Когда передергиваем при уже запущенном всем, то работает.

не, гипотезы хороши в астрономии - в случае электроники все должно быть однозначно..
тащим даташит, читаем:

3.5 POWER ON/Reset/Wake Sequence
The GPIO such as Wake, INT and I2C should be pulled down to be low before powering on. The signal of waking up should be set
to be high after powering on. INT signal will be sent to the host after initializing all parameters and then start to report points to the
host.


попробуйте на контакты WAKE и INT навесить резистор 10/100к на gnd.. и в момент инита системы выставить сигнал WAKE в "1", если есть проводок до АРМа.. если нет, то RC цепочку для теста запуска..
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 00:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.03643 секунд с 7
ELECTRONIX ©2004-2016