Как использовать ArduCAM с платой Arduino Due
Пользователи часто сообщали, что плата-шилд ArduCAM не работает с платой Due. Теперь это известная проблема.
В Arducam выяснили, что на плате Due библиотека SD по умолчанию работает на гораздо большей скорости, чем поддерживает шилд ArduCAM. Текущие тайминги SPI шилда ArduCAM поддерживают скорость менее 10 Мбит/с. Поэтому, чтобы ArduCAM и Due работали вместе, SPI нужно настроить на меньшую скорость.
Чтобы обойти проблему, измените библиотеку SD, как описано ниже.
1. Добавьте последнюю строку в файл \libraries\SD\utility\Sd2Card.h, как показано ниже:
/** Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate(). */
uint8_t const SPI_FULL_SPEED = 0;
/** Set SCK rate to F_CPU/4. See Sd2Card::setSckRate(). */
uint8_t const SPI_HALF_SPEED = 1;
/** Set SCK rate to F_CPU/8. Sd2Card::setSckRate(). */
uint8_t const SPI_QUARTER_SPEED = 2;
uint8_t const SPI_ARDUCAM_SPEED = 3;
2. Измените функцию SDClass::begin() в файле \libraries\SD\SD.cpp следующим образом:
boolean SDClass::begin(uint8_t csPin) {
/*
Performs the initialisation required by the sdfatlib library.
Return true if initialization succeeds, false otherwise.
*/
//return card.init( SPI_FULL_SPEED, csPin) &&
//return card.init(SPI_HALF_SPEED, csPin) &&
//return card.init(SPI_QUARTER_SPEED, csPin) &&
return card.init(SPI_ARDUCAM_SPEED, csPin) &&
volume.init(card) &&
root.openRoot(volume);
}


