Вопросы и ответы по SPI-камерам Arducam
Чтобы проблемы при работе с SPI-камерами Arducam решались быстрее, ниже собраны типичные ошибки, с которыми сталкиваются пользователи.
1. После обновления версии камеры первый байт данных изображения ошибочный, и изображение не получается
При переходе с Arducam Mini 2MP и 5MP на Arducam Mini 2MP Plus и 5MP Plus тайминг чтения данных немного изменился, как показано на рисунке ниже.

У SPI-камер старой версии 2MP/5MP первый байт — фиктивные недействительные данные. Поэтому при чтении изображения код должен отбросить первый байт — тогда данные будут корректными. Пример кода для платформы Arduino UNO:

Для 2MP Plus и 5MP Plus отбрасывать первый байт не нужно. Пример кода:

2. Ошибка SPI на некоторых платформах ARM
Для камер новой версии (Arducam 2MP Plus и 5MP Plus) добавьте в код сброс CPLD. Пример кода:
3. Ошибки из-за неточного соблюдения таймингов на разных платформах
- Тестовый код Arducam написан для платформы Arduino UNO, а у многих пользователей на других платформах, например ARM, возникают ошибки. Поэтому нужно чётко соблюдать тайминги шин I2C и SPI.
- Требования к операциям I2C — на примере сенсора OV5640.

- Требования к операциям SPI. Режим SPI 0 (CPOL = 0; CPHA = 0). Рекомендуемая частота SCLK — 4 МГц; 2MP Plus и новая 5MP Plus поддерживают SCLK 8 МГц.
- Команда записи:
regBit[7] = 1; - Команда чтения:
regBit[7] = 0; - Бывает, что данные начинаются с FFD8 и заканчиваются FFD9, но в середине есть ошибки. Скорее всего, провода SPI слишком длинные, а частота тактового сигнала слишком высокая, что и портит данные. Используйте как можно более короткие провода; если провода длинные, снизьте частоту SPI.

4. Не удаётся получить правильное изображение в Host_V2
Чтобы изображение было проще просматривать, Arducam выпустила программу Host_V2. При работе с ней учитывайте следующее:
- Проверьте, что выбран правильный последовательный порт.
- Проверьте, что скорость передачи (бод) совпадает с заданной в коде.
- Иногда USB-порт компьютера выдаёт слишком малый ток, из-за чего данные изображения искажаются. В этом случае установите меньшую скорость передачи и используйте короткий кабель.

5. Ошибка SD-карты
- В коде Arducam вывод SD CS определён как 9. Если вы используете не плату-адаптер Arducam, проверьте, что вывод SD CS в вашем оборудовании совпадает с выводом, заданным в коде.
- Некоторые слоты SD-карт не поддерживают высокоимпедансное состояние. Из-за этого шина SPI остаётся занятой, и SPI-камера одновременно с картой не работает.
6. Сенсор не определяется из-за неверно выбранной аппаратной платформы
- Библиотека Arducam поддерживает много аппаратных платформ, например Mini 2MP или Mini 5MP Plus. Перед компиляцией кода убедитесь, что в файле
memorysaver.hвыбрана правильная платформа. - На рисунке ниже — пример для Mini 2MP Plus.

7. Флаг завершения съёмки есть, а изображения нет
Иногда флаг завершения съёмки устанавливается, но изображение получить не удаётся. Причин может быть много. Обратите внимание на следующее:
- Проверьте, что оборудование подключено правильно и работает стабильно. Нестабильное оборудование вызывает ошибки в данных изображения, а если потерян заголовок изображения JPEG «FFD8» или окончание «FFD9», изображение не получится.
- Сначала проверьте модуль камеры на демонстрационных примерах Arducam. Есть примеры для платформ Arduino UNO и Arducam ESP8266.
- На некоторых платформах, например STM32, следите за частотой SPI. Новые камеры поддерживают частоту до 8 МГц, старые — до 4 МГц.
8. Как скачать программу Arducam Host?
- Для macOS (
ArduCAM_Host_V2.0_Mac.app):ArduCAM_Host_V2.0_Mac.app.zip - Для Linux (
ArduCAM_Mini_V2.0_Linux_x86_64bit):ArduCAM_Mini_V2.0_Linux_x86_64bit.zip