У меня есть проблема с растяжением часов на моей линии I2C, приложенный снимок ниже.
У меня есть плата Kinetis K64, которая обменивается данными с расширителем портов MAX7304 на частоте 400 кГц.
Должен ли я получить драйвер с обходным решением, нужно ли заменить подтягивающий резистор или мне следует поиграть с емкостью? Мне нужен намек, почему я на самом деле растягиваю эти часы.
Со всем чтением я понял, почему это происходит. Я пытаюсь понять, как с этим бороться.
Любая мысль высоко ценится, спасибо
MAX7304 не способен растягивать тактовую частоту, поэтому проблема заключается в вашем драйвере I²C в вашем программном обеспечении.
Соответствующая цитата из таблицы данных :
Линия SCL устройства работает только как вход. Подтягивающий резистор требуется на SCL, если на 2-проводном интерфейсе есть несколько мастеров или если мастер в системе с одним мастером имеет выход SCL с открытым стоком.
(выделено мной)
Таким образом, он не может опустить линию SCL до низкого уровня. Ваше периферийное устройство микроконтроллера делает это, потому что оно недостаточно быстро заполняется данными.
Мой предпочтительный подход к сокращению времени передачи — использовать DMA, который в большинстве случаев обеспечивает оптимальную пропускную способность.
Если DMA не подходит, и вы используете подход, основанный на прерывании, убедитесь, что следующие данные для передачи легко доступны, и ваше прерывание очень быстро помещает следующий байт данных в регистр.
Прочитайте спецификацию IIC. Растяжение часов — это способ ведомого замедлить автобус до скорости, с которой он может справиться. Это не функция резисторов и конденсаторов. Подтягивающие резисторы должны быть такими, какими они должны быть, чтобы подтягивать линию, но не требовать больше, чем максимальный ток, чтобы линия была низкой. Что касается конденсаторов, не ставьте конденсаторы ни на одну из линий IIC.
Растяжка часов не является проблемой для решения. Это система, работающая правильно, позволяющая ведомому устройству функционировать, как задумано. Здесь нечего исправлять. В любом случае, вы не должны находиться здесь на этом уровне, не понимая IIC.
пользователь_1818839
Арсенал
Фотон
Фотон
Арсенал
МаркУ