ILI9488 SPI Problemi (MISO her zaman lojik 0)

CStarling

Yeni Üye
Katılım
25 Ocak 2025
Mesajlar
4
Merhaba,

ILI9488 FPC konnektörlü bir kart yaptım. Kart üzerinde bulunan SPI hattından 3 tane aygıt mevcut. SD/TFT/Touch
İlk etapda bir problem olduğunu görünce SD kartı lehimlerinden söktüm. Ardından TFT yi de sökerek Touch ile iletişim kurdum ve dokunmatiği algılayabildim.
Fakat TFT de bir sorun var. TFT yi taktığım anda MISO hattı 0 oluyor ve hiç bir aygıt ile iletişim kuramıyorum. ILI94888 MISO çıkışı Tri state değilmiş. Bu sebeple bir buffer istiyor.
Sorun şurada olacak ki her şeyi söküp sadece TFT yi bağladığımda yine iletişim kuramıyorum. Hat yine 0 da kalıyor. İlgili bağlantılarımı ve ekleri aşağıda bırakıyorum.

Mod Seçimim
IM0 = 1
IM1 = 1
IM2 = 1

C:
static void ILI9488_SendCommand(uint8_t cmd)
{
    GPIO_CLEAR_PIN(TFT_DC_GPIO, TFT_DC_PIN);
    USPI_CS_Low(TFT_CS_GPIO, TFT_CS_PIN);
    USPI_Write_Byte(TFT_SPIx, cmd);
    USPI_CS_High(TFT_CS_GPIO, TFT_CS_PIN);
}

static void ILI9488_ReadData(uint8_t *data, uint16_t len)
{
    GPIO_SET_PIN(TFT_DC_GPIO, TFT_DC_PIN);
    USPI_CS_Low(TFT_CS_GPIO, TFT_CS_PIN);
    USPI_Read_Multi(TFT_SPIx, data, len);
    USPI_CS_High(TFT_CS_GPIO, TFT_CS_PIN);
}

static void ILI9488_Reset(void)
{
    GPIO_CLEAR_PIN(TFT_RESET_GPIO, TFT_RESET_PIN);
    Delay_ms(10);
    GPIO_SET_PIN(TFT_RESET_GPIO, TFT_RESET_PIN);
    Delay_ms(120);
}

void TFT_ReadID(uint8_t* id)
{
    ILI9488_Reset();
    ILI9488_SendCommand(ILI9488_CMD_READ_ID);
    ILI9488_ReadData(id, 3);
}

1737813823477.png
TFT SPI Line.png
 
Eğer hem paralel RGB arabirimine hem de SPI arabirimine sahip ise, ILI9488_Reset içerisinde doğru arabirim modunu yapılandırman gerekiyor olabilir.
 
Eğer hem paralel RGB arabirimine hem de SPI arabirimine sahip ise, ILI9488_Reset içerisinde doğru arabirim modunu yapılandırman gerekiyor olabilir.
Bunu nasıl yapacağım? Zaten IM pinlerinin hepsini direnç ile +3.3V'a bağlayarak 4-Line SPI moduna geçiriyorum. Ekstra bir yazılımsal ihtiyaç var mı?
 
Hmm tamam hardware pinleri ile yapılandırılıyormuş. Doğru modu da seçmişsin. Ama okuma timing'i datasheet'e uymuyor. Datasheet'deki diagramda CS hep asserted kalıyor, ama senin timing'de CS anlık olarak deassert oluyor

1737815316730.png
 
Aşağıdaki gibi düzelttim fakat hala 0x00 0x00 0x00 okuması yapıyor.
void TFT_ReadID(uint8_t* id)
{
GPIO_CLEAR_PIN(TFT_RESET_GPIO, TFT_RESET_PIN);
Delay_ms(10);
GPIO_SET_PIN(TFT_RESET_GPIO, TFT_RESET_PIN);
Delay_ms(120);
USPI_CS_Low(TFT_CS_GPIO, TFT_CS_PIN);
GPIO_CLEAR_PIN(TFT_DC_GPIO, TFT_DC_PIN);
USPI_Write_Byte(TFT_SPIx, 0x04);
GPIO_SET_PIN(TFT_DC_GPIO, TFT_DC_PIN);
USPI_Read_Multi(TFT_SPIx, id, 3);
USPI_CS_High(TFT_CS_GPIO, TFT_CS_PIN);
}
 
Ayrıca datasheet'te SDA nın HiZ olduğu belirtiliyor, ama sen HiZ olmuyor diyorsun. Bu biraz şüphe uyandırıyor. İstersen bir 10 k direnç ile SDA yı pull et Vcc ve GND ye. Eğer her zaman sıfır kalıyorsa o zaman belki de pin arızalı ve şaseye kaçmış.
 
10k direnç ile hattı pull-up yaptım.
Ekran takılı değilken 0xFF okuyorum.
Ekran takılı iken 0x00 okuyorum.
Ne oluyorda TFT hattı 0 a çekiyor anlamış değilim.
 
Son düzenleme:

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,264
Mesajlar
122,809
Üyeler
2,931
Son üye
kadirCN

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top