Skocz do zawartości

[C] STM32F3, ILI9341, brak reakcji


Sowa

Pomocna odpowiedź

Witam.

Z obsługą SPI morduje się już bardzo długo i jestem na tyle zirytowany, że muszę poprosić o pomoc.

Korzystam z płytki STM32F3 discovery, Atollic True Studio oraz bibliotek HAL. Chce nauczyć się obsługiwać SPI, pod ręką mam wyświetlacz oparty na ILI9341, więc od tego zaczynam.

W załączniku wysyłam pliki z projektem. Funkcja TM_ILI9341_Init() inicjuje wyświetlacz i ma go wypełnić kolorem czerwonym, jednak ekran cały czas jest biały.

Ktoś może mnie nakierować dlaczego wyświetlacz nie działa?

Klik1 lub

Klik2

Moje przypuszczenia to:

void TM_ILI9341_SendCommand(uint8_t data) {
ILI9341_WRX_RESET;
ILI9341_CS_RESET;
HAL_SPI_Transmit(&hspi2, data, sizeof(data), 5000);
//TM_SPI_Send(ILI9341_SPI, data);
ILI9341_CS_SET;
}

Czy zapis sizeof(data) jest poprawny w tym wypadku?

Dziękuje, pozdrawiam Kamil

Link do komentarza
Share on other sites

pod ręką mam wyświetlacz oparty na ILI9341

Masz 100% pewności, że wyświetlacz jest oparty właśnie o ten sterownik? Chińczycy potrafią robić głównie kopiuj wklej i sam niedawno spotkałem się z tym, że wszystkie sprzedawane wyświetlacze były oparte o ILI9341 choć prawda była zupełnie inna.

Link do komentarza
Share on other sites

Nie mogę znaleźć żadnego przykładu pod F3 discovery więc pewności nie mam, jednak sprzedający ma same pozytywy.. Chwile temu walczyłem z wyświetlaczem od nokii - na softowym SPI działało, na sprzętowym nie. Dlatego sądzę, że problem jest z programem i poprostu coś źle konfiguruję.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To typowy chiński wyświetlacz, czy ma ILI9341 tego nie wie nikt 😉. Biały wyświetlacz to brak poprawnej inicjalizacji. Wiem, że są gotowe kody na arduino, które odczytują z rejestrów wyświetlacza numer oznaczający typ sterownika. Spróbuj może jakiegoś gotowca na arduino.

Link do komentarza
Share on other sites

Wykluczyłem problem sprzętowy. Mam też LCD PCD8544. Na takim kodzie:

void WriteSPI(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++){
	if((data&0x80)==0x80)
		SetBit(DATA);
	else
		ClrBit(DATA);
	SetBit(CLK);
	ClrBit(CLK);
	data<<=1;
}
}

Na pinach które wykorzystuje sprzętowe SPI wszystko działa. Po przepisaniu kodu do postaci:

void WriteSPI(unsigned char data)
{
uint8_t dane;
dane=(uint8_t)data;
  switch(HAL_SPI_Transmit(&hspi2, dane, sizeof(data), 5000))
  {
    case HAL_BUSY: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8,GPIO_PIN_SET); break;
    case HAL_ERROR:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9,GPIO_PIN_SET);break;
    case HAL_TIMEOUT:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10,GPIO_PIN_SET) ; break;
    case HAL_OK:HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11,GPIO_PIN_SET) ; break;
  }


}
void LCDInit(void)
{
(...)
WriteCmd(0x21);//komendy rozszerzone
(...)
}

Ekran nie działa.

🙁

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.