На фотографии приведена плата классического Psion Revo, причем ранняя редакция платы с местами для установки Flash-памяти.
Вид платы со стороны клавиатуры:
Ниже приводится описание компонентов платы:
(1) Центральный процессор.
Маркировка: | NEC 3509-0230-02 |
Архитектура: | ARM710T |
Частота функционирования: | 18/36МГц |
Аналог: | Cirruis Logic CL-PS7110 |
Очень странно, но в данном процессоре не реализован отладочный интерфейс JTAG. На плате Revo выведены пины, судя по всему для отладки/прошивки, но какой они реализуют интерфейс непонятно.
Данная диаграмма из даташита на процессор позволяет примерно понять внутреннюю структуру машинки:
Поизучал сам проц и имеющуюся периферию. Очень интересно, периферия упрощена по максимому, создается впечатление, что процессор затачивался под конкретные устройства. Само ядро полноценное, имеет MMU (модуль управления памятью), а вот периферия максимально простая.
(2) Модуль оперативной памяти.
Маркировка: | SEC KM416V4104CS-L6 |
Тип: | SDRAM |
Объем: | 64МБит |
Организация: | 4 банка по 1МБит |
Разрядность доступа: | 16 бит |
Аналоги: | Samsung K4E6416120-TL50 |
Примечание: в Psion Revo Plus плата пледусматривает установку 2 микросхем SDRAM. Обычно в них установлены чипы по 8Мб. Каждый чип имеет шину доступа по 16 бит. Процессорная шина имеет ширину 32 бита. Отсюда напрашивается предположение, что чипы работают параллельно и обеспечивают 32 битный доступ к ОЗУ. Однако, элементарная прозвонка показывает, что шина данных у микросхем ОЗУ одна, т.е. доступ к памяти 16 битный.
Примечание: максимальный теоретический объем микросхем в корпусе TSOP-50 - 2^(12*2) * 4 * 2 (A0-A11, BANK0,1, 16 бит) = 128Мб, собственно это максимум, который аппаратно поддерживает процессор для одного чипа. Очень интересно посмотреть на поведение операционной системы, если заменить чип памяти более емким. К примеру поставить чип на 32Мб. Конечно, вероятно, что глюки на 32Мб вызваны ограничением самой ОС и все объемы больше чем 32Мб так же корректно работать не будут, но попробовать все-равно было бы интересно, тем более сотня мегабайт в машинке избавит от дефицита памяти вообще. Основная проблема - это дефицит памяти в таких корпусах, в основном из планарных сейчас встречаются чипы в корпусах TSOP-54, а в TSOP-50 мне вообще не попадались микросхемы более 8Мб.
(3)Место для установки масочного ПЗУ с прошивкой.
Маркировка: | MX E004316 3506-0167-03 |
Корпус: | TQFP-100 |
Аналоги: | Отсутствуют |
Комментарии: | В маркировке скорее всего закодирован номер заказа, так что она будет отличаться для различных версий: Psion Revo/Psion Revo Plus/Diamond Mako. |
(4)Место для установки Flash памяти или ОЗУ (32-битный доступ).
Макриковка: | неизвестна |
Корпус: | TSOP-86 |
Разрядность доступа: | 32 бит |
Описание: | Место для установки микросхемы Flash или ОЗУ с 32-битным доступом. |
(5) Микросхемы Flash-памяти.
Маркировка: | ... |
Объем: | 64Мбит |
Разрядность доступа: | 16 бит |
Тип: | NOR FLASH |
Корпус: | BGA-56 (48?) |
(6) Кварцевый резонатор.
Маркировка: | KDS 9G 3.686 |
Частота: | 3.686МГц |
Описание: | Используется для тактирования центрального процессора. |
(7) Часовой кварцевый резонатор (32768Гц). Используется в встроенном модуле RTC микроконтроллера.
(8) Контроллер TouchScreen.
Маркировка: | AD ADS7843 |
Корпус: | SSOP-16 |
Тип: | контроллер 4х проводного тачскрина |
(9) Микросхема последовательного EEPROM.
Маркировка: | 95AB 93S46 LZM8 |
Интерфейс: | MicroWire |
Тип: | EEPROM |
Корпус: | SO-8 |
Объем: | 64бит |
Аналог: | 93C64 |
Функции: | хранение ID машинки |
(10) Разъем для подключения матрицы.
Маркировка: | - |
Аналог: | ... |
Распиновка: | см. в таблицу ХХ |
Число контактов: | 26 |
(11) Механический датчик открытия.
(12) Аудио-кодек.
Маркировка: | OKI M7717-01 |
Функции: | Простой аппаратный аудио кодек |
Корпус: | SSOP-20 |
(13) Драйвер RS-232.
Маркировка: | MAXIM C78266 |
Функции: | Согласование логических уровней с RS-232 (COM-порт) |
Корпус: | SOP-28L |
Аналог: | MAX3243 |
(14) Разъем для подключения кредла.
Маркировка: | - |
Функции: | коммуникации с PC |
Аналог: | - |
(15) Разъем для подключения дочерней платы.
Аналог разъема: | ... |
Число контактов: | 12 |
Распиновка: | представлена в таблице ХХ |
(16) Контроллер заряда Ni-Mh аккумулятора.
Маркировка: | BQ2018 9938-E1 |
Корпус: | SO-8 |
Описание: | интеллектуальный счетчик заряд/разряд для аккумулятора |
(17) Сдвоенный операционный усилитель.
Маркировка: | 3V912 |
корпус: | SO-8 |
Аналоги: | Большинство ОУ в аналогичном корпусе. |
Описание: | Сдвоенный операционный усилитель |
(18) Входной DROP-DOWN преобразователь.
Маркировка: | 2907A |
Аналог: | LM1117-ADJ (возможный) |
Тип: | линейный преобразователь |
Корпус: | SOT-223 |
Комментарии: | Данный преобразователь судя по всему включен по схеме источника тока и работает в паре с BQ2002. |
(19) Кнопки сброса. Выполнены печатным способом.
(20) Микросхема логики.
Маркировка: | 9822W HC74 |
Аналог: | 74HC74 |
Тип: | D-триггер |
Корпус: | SO-14 |
Назначение: | Неизвестно, предположительно управление в цепях питания. |
(21) Контроллер быстрого заряда Ni-Mh аккумулятора.
Маркировка: | BQ2002 9913T |
Корпус: | SO-8 |
(22) Низкоомный резистор. Предположительно для контроля тока заряда.
(23) Контактные площадки динамика. Выполнены печатным способом.
(24) Светодиодные индикаторы. Тип светодиодов не определен.
(25) Микросхема аудиоусилителя для динамика.
Маркировка: | OKI С1192 |
Описание: | аудиоусилитель для динамика |
Аналог: | OKI MSC1192 |
(26) Операционный усилитель. Назначение непонятно.
Маркировка: | 3V3704 |
Описание: | Счетверенный операционный усилитель |
(27) Контактные площадки для подключения некоего отладочного интерфейса.
Интерфейс JTAG в документации на процессор не упоминается совсем. Мало того, нет заявленных пинов для JTAG. Данные контактные площадки идут к процессору следующим образом:
Что они реализуют за интерфейс я не имею ни малейшего понятия. Вряд ли это недокументированный JTAG процессора (к примеру, не подключен Reset), скорее некий программный уровень отладчика, вполне возможно что для отладки производитель использовал GDB-сервер (или свой функциональный аналог), а через данные пины общался с ним.
Инвертор для питания матрицы (1)
Маркировка: | ? |
Функции: | Генерация напряжения -15В |
Возможный аналог: | ? |
Инвертор для питания матрицы (2)
Маркировка: | ? |
Функции: | Генерация напряжения 18В |
Возможный аналог: | ? |
Попытки расшифровки маркировок компонентов, в которых указаны не непосредственные наименования, по которым без проблем ищутся даташиты, а некие буквенно-цифровые индексы. Такая практика маркировок очень распространена для компактных корпусов: на них порой просто нет необходимого места, чтобы полностью отразить реальную маркировку.
Номер контакта | Обозначение | Описание |
1 | - | Тачскрин |
2 | - | Тачскрин |
3 | - | Тачскрин |
4 | - | Тачскрин |
5 | - | GND |
6 | - | 3.3В |
7 | - | 18В |
8 | - | -15В |
9 | - | 2.5В |
10 | - | 1.3В |
11 | - | GND |
12 | - | HSYNC ~11.6KГц (горизонтальная синхронизация) |
13 | - | CLK, однако частота 1.33МГц, ровно в 4 раза меньше расчетной 5.4МГц (480*160*70) для данной развертки. Вполне возможно надо перепроверить еще раз. |
14 | - | GND |
15 | - | DATA |
16 | - | DATA |
17 | - | DATA |
18 | - | DATA |
19 | - | GND |
20 | - | VSYNC 70Гц (вертикальная синхронизация) |
21 | - | 3.3V |
22 | - | 450Гц, скважность 50% |
23 | - | n/c (Psion 5mx использует для питания подсветки) |
24 | - | n/c (Psion 5mx использует для питания подсветки) |
25 | - | n/c (Psion 5mx использует для питания подсветки) |
26 | - | n/c (Psion 5mx использует для питания подсветки) |
Номер контакта | Обозначение | Описание |
15 | - | PWR Ext |
14 | - | PWR Ext |
13 | - | GND |
12 | - | GND |
11 | - | GND |
10 | - | GND |
9 | - | GND |
8 | - | IrDA xxx |
7 | - | IrDA xxx |
6 | - | IrDA xxx |
5 | - | IrDA xxx |
4 | - | BATT Temp |
3 | - | BATT+ |
2 | - | BATT+ |
1 | - | BATT+ |
Для зарядки Ni-Mh аккумулятора в Psion Revo используется микросхема BQ2002. Это интеллектуальный контроллер быстрой зарядки Ni-Mh аккумуляторов.
На рисунке представлена схема включения данной микросхемы:
Чтобы предотвратить вредный для Ni-Mh перезаряд, контроллер использует следующие факторы для прекращения зарядки аккумулятора:
Так как контроллер интеллектуальный, он способен самостоятельно полностью зарядить Ni-Mh аккумулятор без помощи посторонней логики, мало того, зарядка аккумулятора может производиться большим током до самого конца.
Если поставить в машинку аккумуляторы с емкостью большей, чем заводская, то процесс зарядки может прерываться по таймеру. Машинка заряжает аккумулятор током 0.5C, поэтому значение таймера 160 минут. Это дает около 40 минут запаса (если не брать в рассчет погрешность самого таймера).
Но прерывание по таймеру легко обойти: достаточно просто снять машинку с зарядки и поставить на нее еще раз. После таких манипуляций таймер сбросится и зарядка дойдет до конца, прервавшись уже по одному из других факторов. Еще зарядку можно прервать по сигналу INH, его может подавать сама операционная система. Но, в принцпе, если будут проблемы связанные с этим сигналом, его можно отключить, чтобы логика верхнего уровня не могла им управлять.
Но остается вопрос: если же использовать более емкие аккумуляторы, будет ли машинка использовать их емкость полностью? Кривая разряда у Ni-Mh в отличие от литиевых батарей довольно пологая и резкое изменение напряжения наблюдается только в самом конце разряда. Т.е. явно преобразовать напряжение на банках в остаточную емкость в процентах не получится.
Для ответа на этот вопрос можно провести следующий эксперимент: подключить вместо штатных AAA-аккумуляторов блок из заряженных AA аккумуляторов. Их емкость в несколько раз больше, чем у AAA, так что по времени работы машинки будет явно видно, вышла ли она за пределы стандартной емкости.
Вторым чипом, отвечающим за зарядку аккумулятора является BQ2018. Это счетчик циклов заряд-разряд, имеющий дополнительную RAM-память. Сначала я предполагал что именно он (т.к. именно он снимает падение напряжения на шунте (низкоомном резисторе). Однако, изучение даташита показало, что данной функции в нем нет. Это именно счетчик, он считает циклы заряд-разряд, так же имеет некоторые таймерные функции. В данной микросхеме по всей видимости хранится информация об остаточной емкости аккумулятора.
Самое интересное, после отключения пина данных (по которому процессор общается с данным чипом), в свойствах батареи перестают отображаться корректные значения токов зарядки и разрядки аккумулятора, всегда отображается 100мА, заряд от разряда уже не отличает (все время отображает что работает от аккумулятора, при этом аккумулятор заряжает нормально). Но через какое-то время (от 5 до 15 минут) отрубается. После чего включить ее можно только если дать плате отлежаться от 5 до 20 минут с отключенным аккумулятором и внешним питанием. Полученное поведение не имеет никакого смысла и не дает никакой информации для конструктивных выводов.
При закорачивании входов аналогового компаратора на чипе BQ2018, внешне имеем следующее поведение: машинка нормально заряжается, разряжается, показывает разрядные и зарядные токи. Однако, показания индикатора заряда застыло на месте, в моем случае это оказалось 64%.
Спустя полтора часа индикатор все-таки сдвинулся и показал 63%. Закралось подозрение, что после разряда аккумуляторов информация будет потеряна. Однако, оставив устройство на ночь, утром обнаружил его выключившимся. При этом удалось включить, данные были на месте, вот только довольно быстро оно опять вырубилось. Аккумулятор показывал 62%. Самое интересное, предупреждений машинка не давала, просто гасла.
После установки на зарядку, в неопределенный момент (предположительно на окончании быстрой зарядки) показания аккумулятора скакнули на 78%.
Интересное поведение было замечено при установке новых аккумуляторов: машинка встала на быструю зарядку, зарядила аккумуляторы приблизительно до 85%. Затем светодиод погас, машинка стояла на малом токе и вроде бы дошла до 100%. Дальше продолжала стоять в кредле. Самое странное, что произошло: через какой-то промежуток времени, снова загорелся светодиод, сигнализирующий быструю зарядку, но аккумулятор пополз ВНИЗ! Шел он со скоростью около 2% в минуту, при этом машинка сигнализировала, что заряжает аккумулятор током 400мА. При достижении 40% индикатор резко скакнул на 100%. К сожалению в тот момент питалась Revo не от лабораторного источника, так что сколько она потребляла в данном режиме неизвестно.
Одно из предположений о причинах возникновения батарейного глюка - это нарушение (ухудшение) контакта с блоком аккумуляторов. Плата питания (так в Revo называют маленькую платку, с разъемом для аккумулятора и модулем ИК-порта) соединяется с основной платой плоским шлейфом с шагом контактов 0.5мм. При быстрой зарядке аккумулятора по данному шлейфу проходят приличные токи (до 400мА). Даже несмотря на то, что на питание в шлейфе выделено 3 дорожки, все-равно возможно подгорание контактов, осовенно если учесть движение шлейфа при открытии/закрытии мащинки. При подаче питания не через кредл, а через штырьевой разъем, ситуация еще хуже.
Вот к примеру во что может превратиться шлейф, особенно после нескольких замен аккумулятора:
А вот так выглядит более-менее нормальный шлейф:
В Revo Plus поздних версий были добавлены дополнительные наклейки, фиксирующие данный шлейф, чтобы хотя бы исключить его движение. По слухам (от людей занимавшихся ремонтом машинок), надежная фиксация шлейфа (а еще лучше напаивание его прямо на плату) намного уменьшало вероятность возникновения батарейного глюка, если и вовсе не избавляла от него.
Вообще, физика процесса следующая: при нарушении контакта в разъеме, сопротивление на контакте возрастает. При малом токе, к примеру, при работе машинки от аккумулятора, падение на контакте не существенно, машинка нормально работает. Проблемы начинаются, когда происходит попытка зарядить машинку. Начинает течь большой ток, падение на контакте возрастает. Данное падение суммируется с напряжением на аккумуляторе, поэтому может произойти ранняя отсечка по напряжению, в дальнейшем заряжаться малым током, составляющим от C/32 до C/64, т.е. 25 или вовсе 13мА. Таким током разряженный аккумулятор надо заряжать больше суток. Т.е. машинка может банально не зарядиться.
Кстати, при разрядке, при повышении тока потребления, падение напряжения на контакте так же возрастает (соответственно, машинке достается еще меньше), что может вырубить машинку. Особенно велика вероятность отрубания на сигналах будильника, когда потребление возрастает до максимального значения примерно в 200мА.
Усугубляется это умной схемой заряда/разряда, которая прогнозирует остаточную емкость аккумулятора. При таких недозарядах и вырубаниях, вполне может сбиваться калибровка и остаточная емкость, ну и в дальнейшем начинаются всякие чудеса.
В настоящий момент данная версия имеет немного подтверждений. В 2х случаях машинки с новыми аккумуляторами рано снимались с быстрой зарядки и при проигрывании будильников стабильно отрубались. Сбросы и отключения батарей эффекта не давали. После разборки и чистки контактов со стороны материнской платы, в обоих случая устройства стали нормально функционировать. Надеюсь, позднее получу статистику, какое время они проработали стабильно.