ssd1306 hakkında yardım

Başlatan esdevhk, 30 Haziran 2018, 15:29:56

esdevhk




Arkadaşle iyi günler,
Elimde 6pin 0.96" 12864 Oled Ekran var. Direnç .net den aldım bu ekranı. SPI uyumlu olarak aldım. Piyasada ki cogu 6pin ekranların pin adları farklı kafam karıştı benim de. Datasheet i detaylı inceledim fakat DC pinine ne bağlayacağımı anlamadım. Kullanan varsa aranızda yardım edebilir mi?
Araştırdığım kadarıyla
D0 >> SCL
D1 >> MOSI
RES >> 0~Reset / 1~Normal Mode
DC >> ??

muhittin_kaplan

#define SSD1306_RES_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);		//RC0
#define SSD1306_RES_OFF 	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
#define SSD1306_DC_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET);		//RC4
#define SSD1306_DC_OFF 		GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET);
#define SSD1306_CS_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_2,Bit_SET);		//RC5
#define SSD1306_CS_OFF		GPIO_WriteBit(GPIOA,GPIO_Pin_2,Bit_RESET);

yapmışım ben.
ssd1306.c içerisinde

devrecii

#2
DC pinine Eğer 0 verirsen Komut gönderirsin


DC pinine Eğer 1 verirsen Data gönderirsin

C dosyası içinde setcommand  yazan yerlere gpio ilgili pinini reset yap   senddata ise reset yap fonksiyon ilk başta içince.


Bir de CS  (CardSelect) pini olması lazım Cs pinini direk negatife bağla yada bir gpio ya  CS 0 ise bu module bilgi gider.  (Galiba CS pini yok direk negatifde demekki)

 


esdevhk

#3
Alıntı yapılan: iboibo - 01 Temmuz 2018, 18:27:43DC pinine Eğer 0 verirsen Komut gönderirsin


DC pinine Eğer 1 verirsen Data gönderirsin

C dosyası içinde setcommand  yazan yerlere gpio ilgili pinini reset yap   senddata ise reset yap fonksiyon ilk başta içince.


Bir de CS  (CardSelect) pini olması lazım Cs pinini direk negatife bağla yada bir gpio ya  CS 0 ise bu module bilgi gider.  (Galiba CS pini yok direk negatifde demekki)

 



Hocam aldığım sitede SPI uyumlu yazıyordu. Slave select pini göremeyince acaba I2C mi diye şüphelendim. I2C ile yapmayı denedim. Dediğiniz gibi eğer DC pini low çekilirse command gönderiyorsun ve ona göre de slave adress değişiyor çünkü datasheet okuduğumda I2C mode da DC pini SA0 pini oluyor ve slave adress bitlerinden biri SA0 tarafından belirleniyor yazıyor. Aynı şekilde DC pinini high çekersek de pixel datası gönderiyoruz. Yine buna göre de slave adress de değişiklik olmaz mı? Ben indirdiğim kütüphane de buna göre bir ayar çektim. Fakat OLED bir türlü çalışmadı.

Bu OLED SPI ile de çalışıyor mudur yani dediğini gibi CS pini gömülü olarak 0 da mıdır?

esdevhk

Alıntı yapılan: muhittin_kaplan - 01 Temmuz 2018, 18:15:53
#define SSD1306_RES_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);		//RC0
#define SSD1306_RES_OFF 	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
#define SSD1306_DC_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET);		//RC4
#define SSD1306_DC_OFF 		GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET);
#define SSD1306_CS_ON 		GPIO_WriteBit(GPIOA,GPIO_Pin_2,Bit_SET);		//RC5
#define SSD1306_CS_OFF		GPIO_WriteBit(GPIOA,GPIO_Pin_2,Bit_RESET);

yapmışım ben.
ssd1306.c içerisinde

Hocam ben I2C ile çalıştırmaya çalıştım CS pini olmayınca.

I2C modunda DC pininin SA0 olduğunu yazıyordu datasheet de. Slave adress bitlerinden birini de SA0 belirlediği için bende Command gönderilen yerlerde DC pininin ilgili gpio pinini low a çektim. Aynı şekilde data gönderdiğimiz yerlerde ilgili pini high yaptım. Yine aynı şekilde high/low durumuna göre slave adress değiştim. Bir yanlışlık var mı?

ipek

aynı yerden 4 pin .96 i2c aldım kusursuz çalıştı,görüntü biraz ufak tatmin edici değil, paraya kıyıp 1.3 4 pin i2c olanı aldım,hiç çalışmadı,baya araştırdım onun çipi SH1106 imiş ,ulen şunu satarken söylesenize.....

MC_Skywalker

Oled için kullandığınız lib SPI rutinleri içermiyor olabilir.

kullandığım lib ---> http://elektronark.org/index.php?topic=672.0


esdevhk

Alıntı yapılan: MC_Skywalker - 02 Temmuz 2018, 09:56:31Oled için kullandığınız lib SPI rutinleri içermiyor olabilir.

kullandığım lib ---> http://elektronark.org/index.php?topic=672.0


peki hocam fotoğraftaki oled aldığım sitede SPI uyumlu yazıyordu. Fakat CS pini bulunmuyor. Gömülü olarak toprağa çekilmişmidir? SPI uyumlu değilse de I2C ye göre attığınız kütüphanenin aynısını denedim fakat bir sonuç alamadım.

MC_Skywalker

LCD'nin bulunduğu kartın üzerinde gerekli değişiklikler yapılmış.



Adafruit in kütüpanesinde I2C ve SPI tanımlı onu kukllana bilirsiniz.

esdevhk

Alıntı yapılan: MC_Skywalker - 02 Temmuz 2018, 10:57:00LCD'nin bulunduğu kartın üzerinde gerekli değişiklikler yapılmış.

(Resim gizlendi görmek için tıklayın.)

Adafruit in kütüpanesinde I2C ve SPI tanımlı onu kukllana bilirsiniz.

Hallettim teşekkürler. OLED ekranım SPI uyumlu sadece. Kütüphanede gerekli değişiklikleri yaptım SPIa göre.
Bir sorum olucak sadece benim şuanki OLED üzerinde CS pini bulunmamakta vede SPI_Transmit fonk'da herhangi bir control adress göndermemize gerek yok mu? Direkt gerekli komutları transmit ile yolladığımda çalışmalı mı?

algorist

Alıntı yapılan: huseyink - 02 Temmuz 2018, 11:01:41Hallettim teşekkürler. OLED ekranım SPI uyumlu sadece. Kütüphanede gerekli değişiklikleri yaptım SPIa göre.
Bir sorum olucak sadece benim şuanki OLED üzerinde CS pini bulunmamakta vede SPI_Transmit fonk'da herhangi bir control adress göndermemize gerek yok mu? Direkt gerekli komutları transmit ile yolladığımda çalışmalı mı?
Kullandığınız kütüphaneyi paylaşabilir misiniz?
e-e-e