STM32F429 Disco Landscape Mode

Başlatan Mucit23, 05 Şubat 2016, 22:37:26

Mucit23

STM32F429 Discover üzerindeki LCD'yi Landscape olarak yani yatay olarak kullanan oldumu? Ben yatay kullanım için datasheeti inceliyorum.

Tilen kendi web kütüphanesinde yapmış ama yöntemini tam olarak anlayamadım.
http://stm32f4-discovery.com/2014/04/library-08-ili9341-lcd-on-stm32f429-discovery-board/

Anladığım tek şey Memory Access Control(MAC) registerinin 0x28 yapılması gerektiği. Öyle yapınca hafıza yapısı yatay olarak ayarlanıyor ama LCD_Clear gibi fonksiyonlar tam olarak çalışmıyor.

Sonuç aşağıdaki gibi.


Görüldüğü üzere yatay eksende sadece 240 pixel bir alan doldurulmuş. Saymadım ama öyle görünüyor. Başka hangi ayarları düzenlemem gerekiyor çözemedim. Daha önce ILI9341 için uğraşan oldumu?

kantirici

Bu durumda x max ve  y max değerleri de farklı olacağından  fonksiyonlarında buna göre değişmesi gerek bence.

Mucit23

Bende öyle tahmin ediyorum. Sadece Mac registerinin değerini değiştirdim herşey alt üst oldu. Hiç birşey doğru düzgün çalışmıyor.  Hazır bir örnek bulsam iyi olacak. Yoksa işin ucu sıfırdan kütüphane yazmaya kadar gider valla. Çok vakit harcarım o işe.

Tilenin kodlarına bakıyorum ama o sadece MAC registerinin değeriyle oynamış Bunun dışında sabit olarak kullandığı Width ve Height değerlerini değiştirmiş. Ama tabi o kütüphaneyi kendi yazdığı için herşeyi yalayıp yutmuştur.

muhendisbey

Bu kartta emwin'i bir çalıştıramadım gitti. En son derlememde butonlar gözükmüyordu. Bu karta program yazarken "programlamaya dair bir şey bilmiyormuşum" diyorum.

emwin'de eni boyu değiştirip yapılabilir hemencecik. Ama yok.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Mucit23

Stemwin bayağı kısıtlı olarak geliyor. Bende birçok özelliğini çalıştıramamıştım. Belki şuan uğraşsam çalıştırırım muhtemelen ekstra birkaç ayar yapmak gerekiyor. Ama buton checkbox vs bunlarda problem yoktu.

http://arectron.com/arm/stm32f429i-discoveryde-keil-ile-stemwin-kurulumu.html

JKramer

Alıntı yapılan: Mucit23 - 05 Şubat 2016, 23:03:44
Tilenin kodlarına bakıyorum ama o sadece MAC registerinin değeriyle oynamış Bunun dışında sabit olarak kullandığı Width ve Height değerlerini değiştirmiş. Ama tabi o kütüphaneyi kendi yazdığı için herşeyi yalayıp yutmuştur.
Aynen dediğiniz şekilde. Normalde tüm ekranı kaplama fonksiyonunun başında çerçeveyi belirleyen şöyle bir satır olmalı:
SetPos( 0, 0, m_screenWidth - 1, m_screenLength - 1 );

Siz ekran konumunu değiştirdikten sonra sınırları da değiştireceğiniz için sorun olmaması lazım.

Mucit23

Evet hocam tilen pencere açarak yapıyor. Ama orjinal kodlarda doğrudan RAM'e veri yazarak herşeyi yapmışlar. Bu yüzden orjinal kod gerçekten çok hızlı çalışıyor. Bahsettiğiniz değişiklikleri yapmak için kodda birçok yerde oynama yapmak lazım. LCD ltdc ile sürüldüğünden SPI dışından komut gönderilmiyor sanırım. Zaten kendi yazdığı kütüphanede de LTDC kullanılmamış.

void LCD_SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Height, uint16_t Width) fonksiyon var. Ama ILI9341'de bir değişiklik yapmıyor LTDC üzerinde değişiklik yapıyor. Bunu ben denemedim aslında akşam pencere ayarlarını yapmayı deneyeyim.

Baya karışık