STM32, ILI9486 ve FSMC

TunahanC

SbX
Katılım
31 Mayıs 2024
Mesajlar
85
Biraz karışık bir soru olacak. Eklerde kullandığım kütüphaneler mevcut elimde 1 adet Arduino Mega için shieldlanmış 3.5 inc TFT ekran (sürücüsü ili9486) var. Kütüphaneleri internetten buldum sağolsun (link(github)) birisi çok güzel ve görece anlaşılır şekilde yazmış. FSMC nedir ne değildir öğrenmek için çıktığım bu yolda bu bağlantıyı 3+ kere yaptığım halde beyaz ekran görmekten öteye geçemedim. Bu shieldda RD pini eksik. Tanım yaparken;
Kod:
FSMC_NEx<-LCD_CS), FSMC_NOE<-LCD_RD, FSMC_NWE<-LCD_WR, FSMC_Ax<-LCD_RS
şeklinde bir tanım yapılmış. Sorum şu sadece RD pinim eksik diye aşağıdaki kod çalışmıyor olabilir mi? Fakat bu durumda Arduino Mega için nasıl çalışıyor? Biraz Arduino kütüphanesine baktım orada da gözüme RD pini çarpmadı.

Deneme Kodu:
void demo_ciz() {

    // Düz mavi bir arka plan çiz
    ili9486_FillRect(0, 0, ili9486_GetLcdPixelWidth(), ili9486_GetLcdPixelHeight(), 0x001F); // Mavi Renk (RGB565)

    // Ekranın ortasına yatay ve dikey çizgi çiz
    uint16_t x_center = ili9486_GetLcdPixelWidth() / 2;
    uint16_t y_center = ili9486_GetLcdPixelHeight() / 2;

    ili9486_DrawHLine(0xF800, 0, y_center, ili9486_GetLcdPixelWidth()); // Kırmızı yatay çizgi
    ili9486_DrawVLine(0x07E0, x_center, 0, ili9486_GetLcdPixelHeight()); // Yeşil dikey çizgi
}

void demo_ciz1() {

    // Düz beyaz bir arka plan çiz
    ili9486_FillRect(0, 0, ili9486_GetLcdPixelWidth(), ili9486_GetLcdPixelHeight(), 0xFFFF); // Beyaz Renk (RGB565)

    // Ekranın ortasında bir kırmızı dikdörtgen çiz
    uint16_t x_center = ili9486_GetLcdPixelWidth() / 2;
    uint16_t y_center = ili9486_GetLcdPixelHeight() / 2;

    ili9486_FillRect(x_center - 50, y_center - 30, 100, 60, 0xF800); // Kırmızı dikdörtgen

    // Dikdörtgenin üzerine bir yeşil çapraz çizgi ekle
    for (uint16_t i = 0; i < 60; i++) {
        ili9486_WritePixel(x_center - 50 + i, y_center - 30 + i, 0x07E0); // Yeşil renk (RGB565)
        ili9486_WritePixel(x_center + 50 - i, y_center - 30 + i, 0x07E0); // Yeşil renk (RGB565)
    }
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_FSMC_Init();
  /* USER CODE BEGIN 2 */
  ili9486_Init();  // LCD ekranı başlat
  ili9486_DisplayOn();  // LCD ekranı aç
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      demo_ciz();
      HAL_Delay(1000);
      demo_ciz1();
      HAL_Delay(1000);

  }
  /* USER CODE END 3 */
}

şeklinde olan kodu deniyorum, aşağıda ise ekranın bir fotosu var. Kullandığım stm32 ise Stm32f407 - disc board.

WhatsApp Image 2024-10-30 at 17.06.57.jpeg
 

Ekler

  • ili9486.c
    23.7 KB · Görüntüleme: 6
  • lcd.h
    3.9 KB · Görüntüleme: 5
  • lcd_io_fsmc16.h
    2.8 KB · Görüntüleme: 7
  • bmp.h
    960 bytes · Görüntüleme: 5
  • ili9486.h
    2.6 KB · Görüntüleme: 6
  • lcd_io_fsmc16.c
    37 KB · Görüntüleme: 5
Son düzenleme:
Ben bir projede bu kontrolcüyü kullanan bir TFT ekran kullanmıştım. Bus hızı 70 MHz gibiydi. Bunun da bus hızı böyle yüksek ise o uzun kablolarla iletişim doğru çalışmıyordur.
 
Ben bir projede bu kontrolcüyü kullanan bir TFT ekran kullanmıştım. Bus hızı 70 MHz gibiydi. Bunun da bus hızı böyle yüksek ise o uzun kablolarla iletişim doğru çalışmıyordur.
CubeMX'te stm32f407'nin FSMC'si için ayrı bir hız seçimi yok maalesef yoksa dediğiniz aklıma gelmişt. Eğer çözemezsem bunu suçlarım.
 
Son düzenleme:
rs3-jpg.37556


Sanırım ekran sorunlu. Stm32'den aldığım FMSC için sinyaller tutarlı görünüyor. Ufak da bir video ekledim. Sanırım sorun ekranda ama yine de karar veremedim. Alternatif bir ekran alıp tekrar denemem gerekli sanırım. Bu arada programı biraz değiştirdim. Her saniye arka plan rengini değiştiren bir kod. (İlk fotoğraf ns ölçeğinde ikinci fotoğraf ms ölçeğinde)
RS2.JPG
 

Ekler

  • Logic 2 [Logic - Connected] [Session 0] 2024-10-31 12-03-56.mp4
    10.5 MB
  • Rs3.JPG
    Rs3.JPG
    57.6 KB · Görüntüleme: 55
Bu ekranı normal olarak sürebildiniz mi?

F407'nin FSMC clock hızı en fazla 60MHz.
1730367487333.png
 
Bu ekranı normal olarak sürebildiniz mi?

F407'nin FSMC clock hızı en fazla 60MHz.
37559 eklentisine bak
GPIO üzerinden sürmeyi denemedim. Clock hızını da önce 168MHz için denedim. 48MHz ve 36MHz olarak denedim. En son attığım görüntüler 36Mhz içindi. ABP2 hattına bağlı yanlış bilmiyorsam.
 
Şimdi GPIO bağlantısı olarak da yaptım. Yine sadece beyaz ekran görüyorum. Sorunun kodda olmadığından hemen hemen emin gibi oldum.
 
Uzak geçmişte STM32F407 discovery ile FSMC üzerinden 7" SSD1963 LCD çalıştırmıştım.

Ne zaman bir LCD kullanmaya kalksam asla ilk seferde çalışmaz. Sorun genelde LCD yi init eden kodda bazı değerleri değiştirerek çözülür.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,847
Mesajlar
116,797
Üyeler
2,779
Son üye
Kersoyu

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top