Установить режим SPI на Arduino Uno R4
Я переношу код с Arduino Uno R3 на Arduino Uno R4 Wifi из-за ограничений оперативной памяти на R3. Я использую шилд термопары и шилд чтения/записи SD-карты, что требует переключения между режимами 3 и 0 на R3. Однако при попытке выполнить следующий код на R4:
SPI.setDataMode(SPI_MODE3);
IDE сообщила мне, что в SPI нет функции setDataMode. Я попробовал запустить программу без setDataMode, но, похоже, она работает некорректно (SD-карты с пустыми данными).
Compilation error: 'class arduino::ArduinoSPI' has no member named 'setDataMode'
Спасибо всем за помощь. Проблема решена с помощью переменной SPISettings вместе с SPI.beginTransaction(SPISettings) и SPI.endTransaction(SPISettings)
@Bh4, 👍0
Обсуждение1 ответ
Лучший ответ:
Я посмотрел на SPI.h в ядре R4 здесь: https://github.com/arduino/ArduinoCore-renesas/blob/main/libraries/SPI/SPI.h
Похоже, вам нужно настроить структуру конфигурации и передать ее другой функции:
arduino::SPISettings const DEFAULT_SPI_SETTINGS = arduino::SPISettings(1000000, MSBFIRST, arduino::SPI_MODE0);
arduino::SPISettings _settings = arduino::SPISettings(0, MSBFIRST, arduino::SPI_MODE0);
Затем в beginTransaction у вас есть возможность передать эти настройки:
virtual void beginTransaction(arduino::SPISettings settings);
Я не на 100% уверен, как все это работает, но, по крайней мере, это должно направить вас в правильном направлении.
Спасибо за помощь. Вы можете ответить мне здесь или на форуме. Я рассмотрю обе стороны и опубликую решения либо на форуме, либо здесь, как только найду решение., @Bh4
Было бы лучше, если бы у вас был только один пост. На обоих сайтах, по сути, одни и те же люди. Ваш пост, вероятно, лучше, потому что некоторые из нас действительно глубоко изучили R4., @Delta_G
Вы пробовали это? Создайте необходимые настройки, следуя модели из этого ответа, а затем попробуйте передать их в beginTransaction., @Delta_G
- Как увеличить скорость записи на SD-карту в Ардуино
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Использование экрана SD-карты на Arduino Due
- Загрузить сайт с SD-карты
- Отобразить изображение с SD-карты на ЖК-дисплей ILI9486
- Аппаратный SPI Arduino NANO не работает
- Не удалось установить SD-карту с Waveshare ESP32 с использованием Arduino IDE
Текст в значительной степени соответствует описанию в вопросе, в нем говорится: Ошибка компиляции: «class arduino::ArduinoSPI» не имеет члена с именем «setDataMode», который является командой для изменения режима данных с помощью Arduino UNO R3, @Bh4
текст сообщения должен быть в вопросе, а не в комментарии ... добавил его для вас ... вы можете удалить комментарий, @jsotola
В первом абзаце документации [SPI.setDataMode()](https://reference.arduino.cc/reference/en/language/functions/communication/spi/setdatamode/) сказано: «Эта функция **не должна использоваться** в новых проектах. Используйте SPISettings с SPI.beginTransaction() для настройки параметров SPI». Хотелось бы, чтобы было более чётко указано: «Эта функция **устарела с 2014 года** и существует только для обеспечения обратной совместимости»., @hcheung
Более подробное объяснение см. в моем ответе на аналогичный вопрос., @hcheung
Спасибо за помощь @hcheung, проблема решена с помощью «SPISettings» и SPI.beginTransaction(SPISettings), @Bh4