все никак не получается добиться работы от дисплея, кто использовал 5110?
SPI2 - 8bit,MSB first, скорость низкая , clk поляность low, NSS хардварный
Код иницилизации:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);//DC
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);//RST
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);//RST
HAL_Delay(15);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);//RST
HAL_Delay(500);
HAL_SPI_Transmit(&hspi2, (uint8_t *)0x21, 1, 0x100);
HAL_SPI_Transmit(&hspi2, (uint8_t *)0x90, 1, 0x100);
HAL_SPI_Transmit(&hspi2, (uint8_t *)0x20, 1, 0x100);
HAL_SPI_Transmit(&hspi2, (uint8_t *)0x0C, 1, 0x100);
HAL_SPI_Transmit(&hspi2, (uint8_t *)0x13, 1, 0x100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);//DC
for (int i=1; i<6; i++){
HAL_SPI_Transmit(&hspi2, (uint8_t*)0x1F, 1, 0x100);
}
А чип селект в нуле? SCE вывод этого дисплея, насколько я помню.
и на gnd и на 3.3v сажал нефига(
Можно смело на землю замкнуть и пусть там сидит всегда.
Надо настройками попробовать поиграть, к примеру, мне почему-то кажется, что clk должно быть в High. Еще один момент - скорость SPI, 4 МГц максимум, что поддерживает дисплей. На этом вроде бы с "электрическими" настройками все заканчивается, и если ничего не поможет, надо попробовать другую процедуру инициализации. Вот я, к примеру, наткнулся в интернете:
1. Выполнить аппаратный сброс, установив на линии R̅E̅S̅ низкий уровень минимум на 100нс;
2. Включить дисплей и выбрать расширенный набор команд, послав 0x21;
3. Установить схему смещения напряжения, команда 0x13;
4. Установить режим температурной коррекции, команда 0x04;
5. Включить генератор повышенного напряжения на уровне 6.42 Вольта, команда 0xB8;
6. Вернуться в стандартный набор команд, послав 0x20;
7. Включить вывод графической информации на дисплей командой 0x0C.
Потестируй с разным напряжением смещения.
void display_init() {
pcd8544_init_ports();
RES_LOW();
RES_HIGH();
send_cmd(0x21); // расширенный набор команд
//send_cmd(0x80 + 56); // напряжение смещения
// 65 for blue
send_cmd(0x80+70); // напряжение смещения 0x80+90 max!!!!!
send_cmd(0x04); // Режим температурной коррекции 0
send_cmd(0x13); // схема смещения 1:48
send_cmd(0x20);
send_cmd(0x0c); // Нормальное отображение
//send_cmd(0x0d); // Нормальное отображение
}
Я брал на пробу два таких дисплея. Один работал более-менее, второй ловил изображения сменой напряжения смещения. Так игрушка, не более.