LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

KAMAMI ZL31ARM: OLED w SmartSwitch’u i STM32F103

Jedna linia SW przycisku jest dołączona do napięcia zasilania (pin +3,3V złącza Con2 płytki ZL31ARM) druga linia SW jest dołączona do linii PA3 mikrokontrolera (pin PA3 złącza Con2). Naciśnięcie przycisku obsługiwane jest przez przerwanie EXTI konfigurowane w funkcji ConfigEXTI,  nie się zagłębiał w temat obsługi przerwań mikrokontrolera STM32 ponieważ jest mnóstwo materiałów na ten temat.
Linie interfejsu SPI przycisku są dołączone do interfejsu SPI1 mikrokontrolera, dodatkowo linia PA1 mikrokontrolera dołączona jest do wejścia D/C kontrolera wyświetlacza przycisku, w zależności od jej stanu dane przesyłane interfejsem SPI są traktowane jako: instrukcje dla kontrolera (dla D/C = 0) lub dane do wyświetlenia (dla D/C = 1). Przebieg czasowy ramki danych SPI przestawiono na rysunku 3.

 

Rys. 3. Ramka danych wysyłanych do kontrolera wyświetlacza ISC15ANP4

Rys. 3. Ramka danych wysyłanych do kontrolera wyświetlacza ISC15ANP4

 

 

Przed użyciem przycisku należy skonfigurować sterownik wyświetlacza, zadanie to wykonywane jest w funkcji ISC15ANP4_Init. Dokumentacja nie opisuje funkcji poszczególnych instrukcji, zawiera tylko dwa zestawy instrukcji konfiguracyjnych, z czego jedna zapewnia wyższą jasność obrazu i 15000 godzin działania, druga – niższą jasność i 30000 godzin działania, ja wykorzystałem tę pierwszą:

 

	DC_Low();
	
	SS_Low();
	SPI_Transmit(0x81); SPI_Transmit(0x19); // Contras for color A
	SS_High();

	SS_Low();
	SPI_Transmit(0x82); SPI_Transmit(0x14);	// Contras for color B
	SS_High();

	SS_Low();
	SPI_Transmit(0x83); SPI_Transmit(0x24);	// Contras for color C
	SS_High();

	SS_Low();
	SPI_Transmit(0x87); SPI_Transmit(0x0F);	// Master current control
	SS_High();

	SS_Low();
	SPI_Transmit(0xA0); SPI_Transmit(0x70);	// Remap & color depth setting
	SS_High();

	SS_Low();
	SPI_Transmit(0xA1); SPI_Transmit(0x00);	// Set display start line
	SS_High();

	SS_Low();
	SPI_Transmit(0xA2); SPI_Transmit(0x10);	// Set display offset
	SS_High();

	SS_Low();
	SPI_Transmit(0xA4); 					// Normal display
	SS_High();

	SS_Low();
	SPI_Transmit(0xA8); SPI_Transmit(0x2F);	// Multiplex ratio
	SS_High();

	SS_Low();
	SPI_Transmit(0xAB); SPI_Transmit(0x00); SPI_Transmit(0x12); SPI_Transmit(0x0C); SPI_Transmit(0x14); SPI_Transmit(0x12); //Dim mode setting for color A, B &C
	SS_High();

	SS_Low();
	SPI_Transmit(0xAD); SPI_Transmit(0x8E);	// Master configuration
	SS_High();

	SS_Low();
	SPI_Transmit(0xB0); SPI_Transmit(0x0B);	// Power save mode
	SS_High();

	SS_Low();
	SPI_Transmit(0xB1); SPI_Transmit(0x44);	// Phase 1 and 2 period adjustment
	SS_High();

	SS_Low();
	SPI_Transmit(0xB3); SPI_Transmit(0xA0);	// Display clock divider/ oscillator frequency
	SS_High();

	SS_Low();
	SPI_Transmit(0xB9);						// Enable linear gray scale
	SS_High();

	SS_Low();
	SPI_Transmit(0xBB); SPI_Transmit(0x12);	// Pre charge level
	SS_High();

	SS_Low();
	SPI_Transmit(0xBE); SPI_Transmit(0x28);	// Set Vcomh
	SS_High();

	SS_Low();
	SPI_Transmit(0xAF); 					// Display on in normal mode
	SS_High();

	DC_High();

 

Do pobrania