Pull to refresh

Comments 14

Странно, мне казалось, что трансрефлективный дисплей по определению должен быть LCD, никак не OLED.
Именно так.
И вопрос автору: так TFT или OLED? Если OLED, то зачем ему подсветка?
Да-да, помню, на изиэлектрониксе его «раскуривали», но так и не «раскурили». И SSD1238 действительно контроллер для TFT
И в 2020 году мы по прежнему будем видеть тексты вроде
GPIOA->MODER |= (GPIO_MODER_MODE5_1 | GPIO_MODER_MODE6_1 | GPIO_MODER_MODE7_1);
мда.
Похоже имеют ввиду, что даже CubeMX научился генерировать define по имени пина, чтобы не было этих безымянных MODEX_Y.
Я бы предпочел выражение вроде
PortA(5,6,7)=PortOutput;

void stm32f407_spi::stm32f407_spi_send(uint8_t data)
{
SPI1->DR = data;
while((SPI1->SR & SPI_SR_BSY)) continue;
}


Этого достаточно чтобы SPI заработал в нужном нам режиме и передавал данные на максимально возможной скорости.


К сожалению здесь максимально возможная скорость не будет достигнута

Вы про бит TX is empty? С ним, к сожалению, с данным экраном работать не получается, хотя осциллограммы корректные.
Тут (на хабре) некоторое время назад была статья про то, как достигать максимальной скорости из SPI (даже без DMA). Сколько помню, все свелось к тому, что нужно проверять флаг того, что данные передались из DR во внутренний сдвиговый и сам DR сейчас «пуст» (в него можно писать). И, по сути, за счет этого достигается эффект непрерывной передачи. Типа данные еще передаются, а мы уже заготовили в DR следующую пачку. Ну а вообще лучше DMA конечно. Но это чуть усложнит пример (ИМХО).
А, и самое главное. Проверять перед отправкой, а не после. Чтобы по-максимуму использовать SPI время.
Да, так оно и есть, я об этом писал. Ну и настроить SPI нужно правильно, многие дефолтные настройки делают его времянку 9-тактовой (а иногда и 10-тактовой) с рабочими 8 тактами и паузами между ними.
Зачем это шаманство с кучей массивов и указателями на массивы, когда можно делать так, как делают другие уже сто лет? Цифра ноль это код 48 в формате asc2. Далее делаем двумерный массив, где нулевой элемент это цифра ноль, первый элемент цифра один, второй элементы цифра два и так далее. При парсинге строки *char мы просто вычитаем из символа значение 48 и подставляем в массив.
Sign up to leave a comment.

Articles

Change theme settings