Работа шины I2C у iPhone
Шина I2C (Inter-Integrated Circuit) — представляет собой двухпроводную последовательную шину, разработанную PHILIPS для подключения микроконтроллера и его периферийных устройств.
Это стандарт шины, широко используемый в области управления микроэлектронной связью. Это особая форма синхронной связи, которая имеет преимущества, заключающиеся в меньшем количестве интерфейсных линий, простом режиме управления, малой форме пакета устройства и высокой скорости связи. Шина I2C поддерживает любой процесс производства микросхем (CMOS, биполярный). Информация передается между устройствами, подключенными к шине, через линии последовательной передачи данных (SDA) и линии последовательной синхронизации (SCL). Каждое устройство имеет уникальную идентификацию адреса (будь то микроконтроллер — MCU, драйвер ЖК-дисплея, интерфейс памяти или клавиатуры) и может использоваться в качестве передатчика или приемника (в зависимости от функции устройства). Драйвер ЖК-дисплея может действовать только как приемник, тогда как память может принимать и передавать данные. В дополнение к передатчику и приемнику устройство также может считаться ведущим или ведомым при выполнении передачи данных. Хост — это устройство, которое инициирует передачу данных по шине и генерирует тактовый сигнал, который разрешено передавать. На этом этапе любое адресуемое устройство считается подчиненным.
Адресация каждого узла — это режим мягкой адресации, который сохраняет строку выбора микросхемы. Стандартный байт SLAM адресации составляет 7 бит и может адресовать 127 ячеек. Шина I2C имеет три скорости передачи данных: стандартный, быстрый и высокоскоростной. Стандарт — 100 Кбит / с, быстрый режим — 400 Кбит / с, а высокоскоростной режим поддерживает скорости до 3,4 Мбит / с. Все режимы передачи со второй скоростью передачи совместимы. Шина I2C поддерживает 7-разрядные и 10-разрядные устройства адресного пространства и устройства, работающие при различных напряжениях.
Распространенные сбои шины I2C приводят к: перезагрузке белого яблока, повторной перезагрузке загрузки белого яблока, мобильный телефон не загружается, ошибка 9, 4013 и т. д .; связь шины I2C с микросхемой вызыват синий экран, красный экран и другие неисправности.
Обычно значение сопротивления заземления на двух линиях шины I2C одинаково. Шина I2C должна выполнять самодиагностику после включения питания. Если она не проходит самодиагностику, она не вызывает включения питания. Необходимо устранить сбой, вызванный шиной I2C. В большинстве случаев нам необходимо использовать метод исключения для технического обслуживания.
Почему шина I2C приводит к загрузке белого яблока и перезагрузке белого яблока?
Вот краткое описание принципа самопроверки. Сначала посмотрим на фазу запуска:
Первая фаза — это фаза загрузки низкого уровня, мы нажимаем кнопку включения, чтобы отправить устойчивое напряжение AP_TO_PMU_KEEPACT на микросхему управления питанием. В этот момент нижняя фаза загрузки заканчивается и переходит в следующую фазу.
Вторая фаза загрузки системы. В это время вовлечен процесс самопроверки. Плохая система также вызывает перезагрузку белого яблока, IC памяти также вызывает перезагрузку белого яблока, а затем компонент, связанный с самопроверкой, также вызывает перезагрузку белого яблока.
После входа в фазу загрузки системы CPU должен выполнить самотестирование на каждом чипе. Конечно, некоторые драйверы в системном файле загружаются в эти чипы одновременно. В это время CPU будет выполнять самотестирование каждого чипа один за другим.
Процесс самотестирования считается процессом, который CPU запрашивает для каждого чипа. «Вы в порядке!» Чипы, прошедшие самопроверку, должны ответить «ОК». В противном случае процессор будет постоянно спрашивать, пока чип не ответит. Если они не отвечают в течение длительного времени, запускается программа перезапуска системы, чтобы устранить проблему, вызванную системой. В это время белое яблоко будет перезагружаться повторно.
Схема шины I2C является одной из типичных схем применения в типовой схеме логического управления.
Рассмотрим это на примере работы камер в мобильном телефоне.
Камеры работают на линиях данных, называемых MIPI (высокая скорость) и шиной I2C (медленная скорость, линии идентификации камеры)
ШИНА I2C — это двухпроводная цепь и работает от 100 кб / с до 5 Мбит /с
Эти схемы состоят из следующего состава:
I2C — Сигналы: Стартовый сигнал; Сигнал окончания; Ответный сигнал / или ACK.
SCL — CLOCK SIGNAL
SDA — DATA
- SCL — CLOCK SIGNAL:
I2C — является синхронным протоколом, и поэтому сигнал CLOCK — SCL синхронизирует все биты данных с тактовым сигналом.
Первое, на что мы смотрим, это линия CLOCK — SCL на iPhone 6, которую мы находим на выводе 13 разъема FPC для передней камеры, и она называется:
AP_TO_FCAM_CLK_CONN — это часы, могут быть измерены с помощью осциллографа, когда они вкл или выкл.
Например если часы работают на на частоте, то тактовый выход питания шины должен показать 1,8 В, если нет напряжения или частоты, то камера выключена, если 1,8 В на частоте присутствует, то камера включена.
Метод напряжения не так точен, по сравнению с использованием осциллографа.
Питание шины будет 1,8 В, и это все, что касается измерения . остальное измеряется импульсами формы волны. Помните сигналы START — END и RESPONSE (старт-конец и ответ)?
Как вы можете видеть, к шине I2C подключено довольно много микросхем, и все они имеют уникальные адреса, похожие на mac-адреса на внутренней локальной сети (см.рисунок 1)
Они также разделены на разные узлы шины, всего 4 .
1) I2C
2) I2C0
3) I2C1
4) I2C2
Обратите внимание на схемы камеры, а также на tristar, хотя он и не включен, но я уверен, что основная шина также соединяется с tristar, есть последовательный порт для передачи и получения данных через модем базовой полосы… и иногда это является причиной ошибок восстановления, таких как -1, 53 и т. д.
2. SDA — DATA — это главная линия обмена и является линией данных I2C для передачи битовых данных по одному проводу или трассе, линии и т. д.
Шина должна поддерживаться на высоком уровне, и поэтому на каждой линии должен быть установлен резистор, который поднимает ее до тех пор, пока линия данных подключенного устройства (IC) не понижает ее до уровня, называемого ОТКРЫТАЯ ЛИНИЯ ОТКЛЮЧЕНИЯ. Если резистор 1,8 В неисправен, то линия шины будет находиться в низком состоянии, так как устройства, подключенные к шине, не могут поднять ее, а только опускают, и, следовательно, шина не может функционировать (см. рисунок 2).
Однобайтовый фрейм сообщения работает в неком ускоренном состоянии (network security). Именно здесь линия SDA переключается с высокого на низкое напряжение, прежде чем SCL завершит то же действие.
AP_TO _FCAM_SCL — эта строка представляет собой часы шины I2C, которые запрашивают информацию об идентификаторе камеры на шине. Например, шина должна знать, является ли ее передняя или задняя камера разрешением, вспышкой и т. д. Эта линия шины является медленной линией передачи данных и предназначена только для идентификации типа камеры.
Шина данных MIPI обрабатывает основную рабочую нагрузку — это изображения, благодаря своим высоким скоростям.
Это коммуникации, как своего рода разъем VGA / HDMI, который позволяет передавать данные цифрового изображения с вашего настольного компьютера на монитор. Модуль камеры к дисплею является ИНТЕРФЕЙСОМ, способом сопряжения двух . в качестве соединения последовательной шины.
AP_BI_FCAM_SDA — это линия данных шины I2C передней камеры, которая является той же линией, которая передает информацию об идентификаторе камеры. Если это повреждено, то будут отсутствовать функций работы камеры.
Операционные функции:
Откройте приложение камеры, и оно отправит сигнал от CPU, чтобы включить питание передней камеры и поднять сигнал разрешения LDO.
ON U2301 VCC_MAIN / 2v85. Включить 1v8.
Затем он пытается определить идентификатор камеры через I2C.
Примечание: это сообщение не для высокоскоростных данных, а только для начальной настройки.
Таким образом, он идентифицирует камеру через I2C.
По шагам MIPI INTERFACING:
Как только условия соблюдены, и связь установлена как NORMAL, CPU затем инициирует высокоскоростную передачу данных (делает фотографии, иные изображения) по линиям DATA MIPI.
Чем больше полос, тем больше пропускная способность, поэтому на задней камере больше дросселей с более высоким разрешением, чем на передней, включая один дополнительный сигнал для сигнала вспышки I2C.
Эти полосы данных, включая часы, имеют одинаковый тип и маршрутизацию и следовательно, теоретически все должны иметь одинаковые значения сопротивления при тестировании — около 433 мВ (калибровка).
Это первая часть, так как я хотел бы более подробно остановиться на пуске, ответных сигналов и на том, как вообще работает шина I2C, и как она может влиять на другие интегрированные контроллеры, как в этом же узле, так и на другие цепи.
iPhone 6s Bootloop I2C:
У нас есть i6s с неустойчивым током потребления загрузки около 0,70 мА, после запуска получаем потребление 1 200 мА, затем 0,01 мА и повторяется снова!
Сразу видно, что ток CPU достиг 70 мА, поэтому мы можем заключить, что он получает питание.
Таким образом, у нас есть 1,8 В, так как без него CPU не будет функционировать, а также напряжение VCC MAIN и Display / BL, поскольку у нас был логотип apple.
Можем предположить несколько причин, по которым ТА перезагружается, но если будем следовать последовательности запуска, то значительно сузим их.
CPU проходит свою тестовую программу до того, как PMIC выдаст остальные напряжения, а затем, если все в порядке, он отправит сигнал KEEP_ALIVE на PMIC для продолжения вывода всех остальных напряжений.
У 6s есть тепловой выключатель находящийся в PMIC, срабатывает защита от короткого замыкания и он отключается или CPU не удовлетворен результатами предварительной проверки и устройство перезагружается.
Причина, по которой устройство получает на некоторое время напряжение и какое-то время работает, связана с тем, что в какой-то момент во время загрузки есть активная точка срабатывания, которая приводит к короткому замыканию (т.е. выход подключается к закороченной линии)
Давайте вернемся к нашему устройству, поврежденному водой и выясним, что это такое .
На устройствах, поврежденных водой, кроме короткого замыкания на VCC Main, смотрим другие наиболее вероятные и уязвимые места:
- Блок питания подсветки
2. Блок питания дисплея
3. IС для зарядки, USB
4. IС аудио
Для начала делаем фотографию поврежденных участков перед очисткой в качестве пометки для дальнейшей работы.
После очистки наше устройство потребляет 20 мА без триггера включения и многократно вызывает 70 мА — 0 мА.
Далее проверяем питание CPU, которое имеет допустимые отклонения, напряжение и сопротивление.
Линия I2C0_AP_SCL держится на 0,9 В, вместо положенных 1,8 В (чтобы шина удерживалась на достаточно высоком уровне), что-то тянет её в низ.
Резисторы в диодном режиме показывают около 410-433, что является нормой, также проверяем их в омах для подтверждения значения .
Выглядит так, как будто это короткое замыкание, появляется при подаче питания, а затем активируются элементы управления, вызывающие функцию шины, отключают устройство, и происходит сбой.
Что еще может находится на шине и быть поврежденным коррозией?
1 ATIGUA PMU
2. КАШТАН / ПОДСВЕТКА IC
3. MUON 2.
КАШТАН хоть и чистый, но на задней панели IC отмечена локальная коррозия, в то время как у двух других — нет.
Каштан был удален, и проведя повторное тестирование, получили те же результаты в отношении потребления, но зато у нас появилось 1,8 В на R0900 и R0901.
Так что Каштан БЫЛ на низком уровне.
Следующим логическим шагом является проверка IC подсветки, так как она также подключена:
- I2C0 на шине В2
2. DWI шины для регулировки яркости по линии связи к PMIC, а также управления CPU:
DWI_PMGR_TO_BACKLIGHT_SCLK, DWI_PMGR_TO_PMU_BACKLIGHT_MOSI, I2C0_AP_SCL_MUON, AP_TO_MUON_BL_STROBE_EN
Мы можем проверить любую линию перед удалением IC.
IC подсветки SCLK:
PMIC: DWI_PMGR_TO_PMU_BACKLIGHT_MOSI
Находим на схеме контрольную точку, указанную выше, так как она единственная, которая позволяет проводить тестирование, не удаляя ни одну из подключенных микросхем .
Резистор на DWI_PMGR_TO_BACKLIGHT_SCLK был в коротком 0,00 мВ
Помните о подключенных устройствах к шине — ANTIGUA PMU
Микросхема подсветки была удалена, так же как и блок питания для нее, далее они были заменены.
Теперь холодная загрузка до 1,2 ампер и устойчиво уменьшающаяся по мере зарядки.
Таким образом, неисправность I2C0 вывела несколько микросхем, не обязательно повредив, но отключив их.
У нас был каштан, тянущий шину I2C0 на низкий уровень через коррозийные контактные площадки, а также отключение PMIC из-за короткого замыкания шины DWI / SPI.
Таким образом, процессор делал свою работу или пытался, но маленькие «козочки» из клана I2C сунули свой нос и все испортили .
iPhone 7 Bootloop / Ошибка -1, 53 и т. д
Итак , давайте начнем с обычными подозреваемыми:
Baseband (модем)
Baseband PMIIC (контролер питания модема)
————————————— —
TriStar (контролер USB)
19,2 МГц Часы (кварц)
U0700 —— I2C3_AP_SDA — R4701 (PP1V8) ВЫСОК . .J4101
Последние три специально игнорируются (давайте подумаем об этом на мгновение).
Вы сняли основную IС модема — короткое замыкание на LDO / VREG / SMPS отсутствуют и вам не нужны перемычки.
Вы сняли PMIC модема. Никаких коротких замыканий или необходимости в перемычках.
Вы перекомпоновали их оба, и у вас есть напряжение, но все еще есть циклы загрузки и ошибки.
Так что напряжения в порядке.
TriStar проверяет наличие напряжения, так как у нас определяется USB-порт для неудачного восстановления.
Остаются часы и I2C
Часы могут быть неисправны, но на этот раз это линия шины I2C3.
Глядя на R4710 через разъем аккумулятора, мы находим его линию 1,8 на ZXW, но у нас есть 1,8 и в другом месте.
Резистор может иметь свой вход 1,8, но другой конец подключается к линии SDA I2C, если резистор выходит из строя, то же самое происходит и с шиной, включая все устройства, подключенные к этой шине.
В этом случае I2C3_AP_SCL / I2C_DISP_EEPROM_SDA подключен к рассматриваемой шине.
Ссылка на схему дает нам больше информации для работы (см. рисунок 7,8).
Источник