‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

worklog: binbanging to the rescue

Я пока не в состоянии побороть странное поведение конфигуратора I2C, поэтому воспользовался нечестным приёмом - драйвером i2c-gpio.
Привязал его к тем пинам, откуда всё торчит и.. хммм... что такое, вроде всё правильно, но осциллографом видно, что вместо нулевого уровня на месте бита ACK во всех посылках присутствует какой-то напополамный уровень - и не 0, и не 1, а посередине. Контроллер не чует ответа от периферийных устройств и фейлит все пробы. Сначала заподозревал буфер - сдул его феном, заново всё промерял: дефект остался.

Промерял подтягивающие резисторы - я ставлю 1.5 килоома обычно, но вдруг ошибся? Ткнулся мультиметром - нет, всё верно, полтора кила.

Дай, думаю, проверю ток, который нужен, чтобы притянуть пин к нулю - переключаю мультиметр в режим измерения тока, тыкаюсь в разъём и слегка прихуеваю от значения 53 мА.

Тут я начал подозревать уже другое.

В драйвере i2c-gpio есть биндинг, который типа нужен и обязателен - i2c-gpio,sda-open-drain; i2c-gpio,scl-open-drain;. Этой белибердой соответствующие пины переключаются в режим с открытым стоком.. по-идее. Но, судя по току, это нихера не так! Закомментировал их, перезалил - и, о чудо! Ногодрыгательная версия I2C завелась и зашуршала байтиками, а ток, необходимый для установления нулевого уровня, стал всего около 2 мА, каким он и должен быть. Работает это весьма медленно, но так всё равно лучше, чем вообще никак.

Похоже, тем же макаром придётся решать вопрос отсутствия драйверов для QSPI и SD/MMC (причём во втором случае драйвера нет даже в ядре мартовского релиза этого года - и будет ли оно когда-нибудь сделано, вообще непонятно). А вот с USB так уже не выкрутиться - да, есть решения даже для восьмибитных AVR, при помощи которых можно реализовать медленные девайсы (типа эмуляторов клавиатуры и т.п.), но это работает только при исключительном доступе к железу, чтобы точно выдерживать все тайминги -- в многозадачных системах это вряд ли возможно.
Subscribe

  • чёзанах

    В винде изображение на одном из монитором мутное, словно бы размазано на полтора пикселя по вертикали. Но ни монитор, ни видюха в этом не виноваты,…

  • Семь полезных советов

    1. Не надо читать статью. Берегите свое время! По названию всегда можно понять, что исследование плохое, потому что его вывод вам не нравится.…

  • Мёртвый город

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments