К содержимому
  1. Главная
  2. Документация
  3. Камеры для Arduino и MCU
  4. Микросхема Arducam (ArduChip)

Микросхема Arducam (ArduChip)

Документация Arducam · перевод arducam-russia.ru

1. Введение

ArduChip — фирменная технология контроллера камеры от Arducam. Она переносит сложные аппаратные тайминги камеры, ЖК-экрана, памяти и пользовательского интерфейса на уровень микросхемы и предоставляет набор управляющих регистров и простой интерфейс SPI.

Схема ArduChip

2. Временные диаграммы интерфейса SPI

Ведомый интерфейс SPI в Arducam работает только в режиме SPI 0: POL = 0, PHA = 0. Максимальная частота SCLK — 8 МГц, превышать её нельзя. Обмен по SPI состоит из фазы команды и фазы данных переменной длины. Сигнал выбора микросхемы должен оставаться активным весь цикл чтения или записи по SPI. Старший бит bit[7] фазы команды задаёт чтение или запись: «0» — чтение, «1» — запись; биты bit[6:0] — адрес, который читается или записывается в фазе данных.

2.1. Временная диаграмма записи по шине SPI

Запись по шине SPI состоит из фазы команды и фазы данных, пока активен сигнал выбора микросхемы CSn. Первые 8 бит — байт команды, который декодируется как адрес регистра, вторые 8 бит — байт данных, который записывается во внутренние регистры ArduChip.

Временная диаграмма записи по шине SPI
Рис. 1. Временная диаграмма записи по шине SPI

2.2. Временная диаграмма одиночного чтения по шине SPI

Одиночное чтение по шине SPI служит для чтения внутренних регистров ArduChip и для одиночного чтения из FIFO. Оно состоит из фазы команды и фазы данных, пока активен сигнал CSn. Первые 8 бит — байт команды, который декодируется как адрес регистра; вторые 8 бит — фиктивный байт, который передаётся по линии MOSI, а содержимое регистра в это время возвращается по линии MISO.

Временная диаграмма одиночного чтения по шине SPI
Рис. 2. Временная диаграмма одиночного чтения по шине SPI

2.3. Временная диаграмма пакетного чтения по шине SPI

Пакетное чтение по шине SPI применяется только для пакетного чтения FIFO. Оно состоит из фазы команды пакетного чтения и нескольких фаз данных и даёт вдвое большую пропускную способность, чем одиночное чтение FIFO. (Примечание: у старых SPI-камер Arducam первый байт, прочитанный из FIFO, — фиктивный, действительные данные начинаются со следующего байта.)

Временная диаграмма пакетного чтения по шине SPI
Рис. 3. Временная диаграмма пакетного чтения по шине SPI

3. Таблица регистров

Тайминги сенсора и FIFO задаются набором регистров, реализованных в ArduChip. Команды съёмки и чтение данных изображения выполняются через простой ведомый интерфейс SPI. Подробное описание битов регистров — в этом разделе.

Как говорилось выше, старший бит bit[7] фазы команды задаёт чтение или запись: «0» — чтение, «1» — запись; биты bit[6:0] — адрес для чтения или записи в фазе данных. Поэтому 8-битный адрес нужно составлять в зависимости от того, какую команду — чтения или записи — вы отправляете.

На разных платформах Arducam стоят разные версии ArduChip с разным набором функций. Список возможных аппаратных платформ:

Аппаратная платформаОдиночная съёмка / чтениеПакетное чтениеМногокадровая съёмкаПовторное чтениеПониженное энергопотреблениеЗапись короткого видео
ArduCAM Shield Rev.C√
ArduCAM Shield Rev.C+√√√√
ArduCAM-Mini-2MP√√√√
ArduCAM-Mini-5MP√√√√√
ArduCAM-Mini-5MP (Bit-Rotation-Fixed)√√√√√
ArduCAM Shield V2√√√√√
ArduCAM-Mini-5MP-Plus (OV5642)√√√√√√
ArduCAM-Mini-5MP-Plus (OV5640)√√√√√√

Одиночная съёмка — базовая функция ArduChip. Код команды съёмки — 0 × 84: запишите «1» в bit[1], чтобы запустить съёмку. Затем опрашивайте bit[3] — флаг завершения съёмки, — отправляя код команды 0 × 41. После завершения съёмки, перед следующей командой съёмки, сбросьте этот флаг: отправьте код команды 0 × 41 и запишите «1» в bit[0].

Многокадровая съёмка: перед запуском съёмки (в том же порядке, что и при одиночной съёмке) отправьте код команды 0 × 81 и запишите в bit[2:0] число кадров. Подбирайте разрешение и число кадров так, чтобы не переполнить буфер кадров.

Запись короткого видео использует ту же команду, что и многокадровая съёмка. Если значение bit[2:0] равно 7, Arducam снимает кадры непрерывно, пока буфер кадров не заполнится целиком. Снятый поток MJPEG можно сохранить в файлы AVI и получить короткие видеоролики.

Одиночное чтение — базовая функция чтения памяти: за одну операцию читается один байт. Отправьте код команды 0 × 3D, чтобы запустить одиночное чтение, — из буфера кадров будет считан один байт.

Пакетное чтение — расширенная функция: несколько байтов считываются из буфера кадров после отправки всего одного кода команды 0 × 3C.

Обратите внимание: на платформах ArduCAM Shield Rev.C+, ArduCAM-Mini-2MP и ArduCAM-Mini-5MP первый байт в первой транзакции чтения нужно пропустить — он фиктивный. В каждой следующей транзакции первым считывается последний байт предыдущей транзакции — это очень важно. Между транзакциями пакетного чтения не отправляйте другие команды SPI. Подробная временная диаграмма — на рис. 5.

Временная диаграмма пакетного чтения, вариант 1
Рис. 5. Временная диаграмма пакетного чтения, вариант 1

На платформах ArduCAM-Shield-V2 и ArduCAM-Mini-5MP-Plus о первом байте беспокоиться не нужно. Подробная временная диаграмма — на рис. 6.

Временная диаграмма пакетного чтения, вариант 2
Рис. 6. Временная диаграмма пакетного чтения, вариант 2

Повторное чтение (rewind) пригодится приложениям, которым нужно обращаться к одним и тем же данным пикселей несколько раз. Отправьте код команды 0 × 84 и запишите «1» в bit[5] в фазе данных — указатель чтения памяти сбросится в ноль. После этого данные изображения можно снова читать с начала памяти.

Для устройств с батарейным питанием энергопотребление очень важно. Режим пониженного энергопотребления реализован на двух уровнях; комбинируйте их в соответствии со своей стратегией питания.

Отключение питания сенсора реализовано через вывод включения встроенных LDO-стабилизаторов. Этим выводом управляет GPIO[2] ArduChip. Отправьте код команды 0 × 86 и запишите «1» в bit[2], чтобы включить LDO, или «0» в bit[2], чтобы выключить их и сэкономить энергию. При отключении питания сенсора настройки камеры теряются: после повторного включения сенсор нужно инициализировать заново.

Режим ожидания сенсора реализован через вывод включения встроенных LDO-стабилизаторов. Этим выводом управляет GPIO[1] ArduChip. Отправьте код команды 0 × 86 и запишите «1» в bit[1], чтобы перевести сенсор в режим ожидания, или «0» в bit[1], чтобы вывести его из этого режима. В режиме ожидания настройки сенсора сохраняются, повторная инициализация не нужна.

Таблица регистров

Тайминги сенсора и FIFO задаются набором регистров, реализованных в ArduChip. Команды съёмки и чтение данных изображения выполняются через простой ведомый интерфейс SPI. Подробное описание битов регистров — в программном разделе этого документа. На конкретной аппаратной платформе реализованы не все регистры: подробное описание регистров для вашего оборудования смотрите в руководстве по его разработке. Как говорилось выше, старший бит bit[7] фазы команды задаёт чтение или запись: «0» — чтение, «1» — запись; биты bit[6:0] — адрес для чтения или записи в фазе данных. Поэтому 8-битный адрес нужно составлять в зависимости от того, какую команду — чтения или записи — вы отправляете.

Таблица регистров ArduChip, часть 1
Таблица регистров ArduChip, часть 2
Таблица регистров ArduChip, часть 3

Запросить цену

Укажите количество — пришлём коммерческое предложение.