SSD1306-Stm32f103c8t6 oled

Başlatan muhittin_kaplan, 13 Kasım 2016, 16:36:41

muhittin_kaplan

sistemi SPI dan herhangi bir bilgiyi çıkartacak şekilde düzenledim. SPI da problem  yok. (logic analyzer ile kontrol edip protokol kontrolü yapıyorum). elimde bulunan OLED aşağıdakinden 4wire SPI mış. üzerinde VCC-GND-D0-D1-RES-DC-CS pinleri mevcut
D0-Data-MOSI
D1-clk-SCLK
DC-DataCommand-Kütüphanede belli nereler olduğu
CS-ChipSelect-Kütüphanede belli nereler olduğu
RES-Ne olduğunu Bulamadım Muhtemel reset

Oled e start veremedim ?

@baran123 ün konusundan yararlandım
https://www.picproje.org/index.php/topic,58660.30.html


HeCToR

Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

muhittin_kaplan

Gördüm Hocam
(nicleri yakaladım oradan, Baran123 ve sizin ;) )

M_B

@muhittin_kaplan  hocam;
Ekran arkasında
4SPI
3SPI secenkleri var.
Hocam nedir bu 4SPI , 3SPI arasında ne fark var. Acaba sizinki dogrumu secili.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muhittin_kaplan

dirençlere bakınca doğru seçili gibi görünüyor. 4-3 de direnç var
https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

da 3wire ve 4wire olarak belirtmiş

skara1214

Alıntı yapılan: M_B - 13 Kasım 2016, 17:17:21
@muhittin_kaplan  hocam;
4SPI , 3SPI arasında ne fark var.
Birisi chip select bacaklidir diğeri degildir
Herkes ölür ama herkes gerçekten yaşamaz

M_B

Alıntı yapılan: skara1214 - 13 Kasım 2016, 19:47:44
Birisi chip select bacaklidir diğeri degildir
Tesekkurler Hocam;
egitim serinizi takip ediyorum i2c ye gectiginizde elimde olan yukardaki ekranın 4 pinli modeli var (i2c ) onu surecem.
picle ekranımı calıstırmıstım (i2c )
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

baran123

#7
4 wire dediği MOSI, MISO, SCLK, CS
3 wire ise MOSI, SCLK, CS dir
IIC ise I^2C :)
D/C burada ekstra bu pin veri/komut olayını belirliyor logic duruma göre.
Ben test ettim çalışıyor. Fakat sizin ekranın arka tarafındaki konfigurasyonu anlayamadım.

Ekleme : Şimdi datashetten baktımda
The 4-wire serial interface consists of serial clock: SCLK, serial data: SDIN, D/C#, CS#
The 3-wire serial interface consists of serial clock SCLK, serial data SDIN and CS#
imiş yani DC de dahil olarak burada 4-Wire SPI seçilmeli.

muhittin_kaplan

stm32f103c8t6 ile yaptığım denemelerde

void Init_OLED(void)
{
   Oled_Command(0xAE);
   Oled_Command(0x81);
   Oled_Command(0xCF);
   Oled_Command(0xA4);
   Oled_Command(0xA6);
   Oled_Command(0x20);
   Oled_Command(0x02);
   Oled_Command(0x00);
   Oled_Command(0x10);
   Oled_Command(0xB0);
   Oled_Command(0x40);
   Oled_Command(0xA1);
   Oled_Command(0xA8);
   Oled_Command(0x3F);
   Oled_Command(0xC8);
   Oled_Command(0xD3);
   Oled_Command(0x00);
   Oled_Command(0xDA);
   Oled_Command(0x12);
   Oled_Command(0xD5);
   Oled_Command(0x80);
   Oled_Command(0xD9);
   Oled_Command(0xF1);
   Oled_Command(0xDB);
   Oled_Command(0x40);
   Oled_Command(0x8D);
   Oled_Command(0x14);
   Oled_Command(0xAF);

   Oled_FillScreen(0x00);
}


olan oled init verilerini gönderdiğini görüyorum.



ama bu veriler oled de herhangi birşey yapmıyor. Yeni bir Oled mi sipariş geçsem ;)

skara1214

Muhittin abi ekranı tam bilmiyorum ama clock normalde high konumlumu ayarlı? Belki ekran normalde low yukselende tetiklemeli spi şekline ayarlıdır?
Herkes ölür ama herkes gerçekten yaşamaz

RaMu

Hocam elinizde pic mcu varsa
önce onunla kütüphane sizin elinizdeki ekranı çalıştırabiliyor mu
test etseniz daha kolay olmaz mı.

Birde hocam oled  init ten önce yarım saniye bekleme ile deneyebilirsiniz.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

RaMu

Clock Low dan High a geçerken data biti gönderilmeli,
herhalde önce MSB gönderiliyordu.

..Eskiden mesaj kendiliğinden birleşiyordu şimdi birleşmedi..
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

muhittin_kaplan

Alıntı yapılan: skara1214 - 13 Kasım 2016, 21:11:14
Muhittin abi ekranı tam bilmiyorum ama clock normalde high konumlumu ayarlı? Belki ekran normalde low yukselende tetiklemeli spi şekline ayarlıdır?

    SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_High;


ile denedim, bu high low aktif durumunu.

baran123

STM32F4 için şu ayarlar çalışıyor.
SPI_InitStructure.SPI_Direction         = SPI_Direction_Tx;
    SPI_InitStructure.SPI_Mode              = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize          = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL              = SPI_CPOL_High;
    SPI_InitStructure.SPI_CPHA              = SPI_CPHA_1Edge;
    SPI_InitStructure.SPI_NSS               = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
    SPI_InitStructure.SPI_FirstBit          = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial     = 7;
    SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_RXNE, DISABLE);
    SPI_Init(SPI1, &SPI_InitStructure);
    SPI_Cmd(SPI1, ENABLE);

baran123

Şimdi baktımda SSD1306 için
SPI mode daki iken CLK yükselen kenar diyor.
Enteresan ?