Максимизация SPI-скорости между Arduino DUE и драйвером дисплея RA8875
Для проекта я хотел бы как можно быстрее управлять драйвером дисплея RA8875 с помощью Arduino due.
Я начал с библиотеки Adafruit и заменил все "digitalWrites" прямой манипуляцией портом.
Кроме того, я хотел также использовать эту максимально возможную скорость вращения. В таблице данных adafruit я не нашел никакой спецификации максимальной скорости вращения контроллера. В более старой таблице данных я нашел только максимальную скорость по отношению к системным часам. Но я понятия не имею, что это такое. .
После поиска в Google максимальная скорость spi RA8875 кажется 12 МГц (источник).
Поэтому я решил просто попробовать разные скорости вращения. Хотя я действительно нашел библиотеку Adafruit_RA8875.cpp файл немного сбивает с толку, так как он определяет uint32_t spi_speed несколько раз в зависимости от архитектуры.
- Один раз начиная со строки 48
- Один раз начиная с строки 134
- Один раз начиная со строки 164
И выбранные скорости для каждой архитектуры не согласуются между этими 3 назначениями.
Я решил заменить строку 66:
SPI.beginTransaction(SPISettings(spi_speed, MSBFIRST, SPI_MODE0));
с:
SPI.beginTransaction(SPISettings (12000000, MSBFIRST, SPI_MODE0));
и попробовал другие скорости. Но это всегда приводило к черному экрану на дисплее.
@Sven Onderbeke, 👍2
1 ответ
Чтобы ускорить работу RA8875, вы должны начать с малой тактовой частоты, чтобы инициализировать RA8875, включая конфигурацию pll, а затем вы можете сделать тактовую частоту быстрее. Со мной это работает.
- Arduino Due vs Mega 2560
- Как приглушить фоновые светодиоды на TFT дисплее с помощью ILI9341
- Точность часов времени Arduino
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- Построение графика на Python с использованием Tkinter Canvas
- Построение графика данных датчика Arduino в реальном времени на Processing, MatLab или Python
- Ручная установка Arduino Due
- analogRead всегда 1023 на Arduino Due