Максимизация 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));

и попробовал другие скорости. Но это всегда приводило к черному экрану на дисплее.

, 👍2


1 ответ


2

Чтобы ускорить работу RA8875, вы должны начать с малой тактовой частоты, чтобы инициализировать RA8875, включая конфигурацию pll, а затем вы можете сделать тактовую частоту быстрее. Со мной это работает.

,