Top.Mail.Ru
Уведомления
Очистить все

[Решено] дисплей 5110 SPI HAL

(@andrej)
New member

все никак не получается добиться работы от дисплея, кто использовал 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);
}

Цитата
Создатель темы Размещено : 06.02.2016 00:09
Aveal
(@aveal)
Top level Admin

А чип селект в нуле? SCE вывод этого дисплея, насколько я помню.

ОтветитьЦитата
Размещено : 06.02.2016 02:01
(@andrej)
New member

и на gnd и на 3.3v сажал нефига(

ОтветитьЦитата
Создатель темы Размещено : 06.02.2016 15:33
Aveal
(@aveal)
Top level Admin

Можно смело на землю замкнуть и пусть там сидит всегда.

Надо настройками попробовать поиграть, к примеру, мне почему-то кажется, что clk должно быть в High. Еще один момент - скорость SPI, 4 МГц максимум, что поддерживает дисплей. На этом вроде бы с "электрическими" настройками все заканчивается, и если ничего не поможет, надо попробовать другую процедуру инициализации. Вот я, к примеру, наткнулся в интернете:

1. Выполнить аппаратный сброс, установив на линии R̅E̅S̅ низкий уровень минимум на 100нс;
2. Включить дисплей и выбрать расширенный набор команд, послав 0x21;
3. Установить схему смещения напряжения, команда 0x13;
4. Установить режим температурной коррекции, команда 0x04;
5. Включить генератор повышенного напряжения на уровне 6.42 Вольта, команда 0xB8;
6. Вернуться в стандартный набор команд, послав 0x20;
7. Включить вывод графической информации на дисплей командой 0x0C.

ОтветитьЦитата
Размещено : 06.02.2016 20:18
 Alex
(@alex-2)
New member

Потестируй с разным напряжением смещения.

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);	// Нормальное отображение
}

Я брал на пробу два таких дисплея. Один работал более-менее, второй ловил изображения сменой напряжения смещения. Так игрушка, не более.

ОтветитьЦитата
Размещено : 18.02.2016 03:37
Поделиться: