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
(http://i.hizliresim.com/6m44Rv.jpg)
@muhittin_kaplan hocam güzel kaynak http://pic18fxx.blogspot.com.tr/2014/12/library-for-128x64-graphical-display.html
Gördüm Hocam
(nicleri yakaladım oradan, Baran123 ve sizin ;) )
@muhittin_kaplan hocam;
Ekran arkasında
4SPI
3SPI secenkleri var.
Hocam nedir bu 4SPI , 3SPI arasında ne fark var. Acaba sizinki dogrumu secili.
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ş
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
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 )
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.
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.
(http://i.hizliresim.com/d8zWQr.png)
ama bu veriler oled de herhangi birşey yapmıyor. Yeni bir Oled mi sipariş geçsem ;)
Muhittin abi ekranı tam bilmiyorum ama clock normalde high konumlumu ayarlı? Belki ekran normalde low yukselende tetiklemeli spi şekline ayarlıdır?
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.
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..
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.
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);
Şimdi baktımda SSD1306 için
SPI mode daki iken CLK yükselen kenar diyor.
Enteresan ?
void OledStart (void) {
OledRes = 1;
OledDc = 0;
OledVdd = 0;
DelayMs(1);
OledCommand(0xAE); // Display off komutu
OledRes = 0;
DelayMs(1);
OledRe = 1;
OLED_Command(0x8D);
OLED_Command(0x14);
OLED_Command(0xD9);
OLED_Command(0xF1);
OledVbat = 0;
DelayMs(100);
OLED_Command(0xA1);
OLED_Command(0xC8);
OLED_Command(0xDA);
OLED_Command(0x20);
OLED_Command(0xAF); // Display on komutu
OLED_ClearDisplay();
}
Muhittin usta,bir tarihte uğraşmıştım,Oled Start için şöyle bir yöntem deneyin.
Komut seti SSD1306 için uymaya bilir.
Ama prosedür bu şekildedir sanırım.Bir deneyin.
Hocam Bahsettiğiniz gibi init ler farklıymış
Allahtan
@FxDev de kullanmış bu oled den, onunda yardımıyla hallettik.
(https://scontent-fra3-1.xx.fbcdn.net/v/t1.0-9/15036269_10154970336452439_188573269887704396_n.jpg?oh=a03a54db2ffc49ba318e412c927fdc24&oe=58D510DE)