M25P05 RAM'i SPI ile kullanmak

Başlatan alabora, 17 Haziran 2007, 01:46:57

alabora

Arkadaşlar;
16F877 kullandığım bir devrede ST 'nin ürünü M25P05 512 KBit RAM memory'i kullanmak istiyorum. Zaten bilirsiniz SPI ile haberleşiyor. Ben datasheeti inceledim ama nasıl programlanacağına dair yazılanları tam çözemedim. mesela bir byte yazıp okumak için izlenecek algoritma nedir?

asm ile olmasını tercih ederim ama fikir vermesi açısından başka dilelrde yazılmış kod parçaları verirmisiniz ve ya işleyişi hakkında bilgi, link?

Yada bol dökümanı olan başka bir ürün de olabilir.
Şimdiden Teşekkürler...

ustad

Merhaba

İlk olarak benim bildiğim ST nin  m25p05 i ram değilde flash memory olması lazım.

Buna göre söylersek yapılacak işlemleri, 877 ile kullandığınıza göre sistem I/O larını birbirine denkleştirmeniz lazım. M25p05 3.3V beslemeye sahip, 877 den çıkan SPI uçlarını buraya uygun dirençler vasıtasıyla girmeniz gerekmektedir.

Eğerki SPI ı daha önce kullanmış iseniz aynı metodla burada da kullanabilirsiniz.

Kolay Gelsin...

CLR

@alabora

Daha önce birçok normal(5V) ve low voltage(3V3)  RAM'in tester'larını yaptım. (Motorola,ericsson,nokia gibi RF taşıyıcı(cep telefonu değil, baz istasyonlarında kullanılan yaklaşık 30W'lık taşıyıcılar) modullerin üzerinde bulunan statik 16bit,24bit RAM'lerin)

Pic içindeki SPI modulunu kullanabilmen için pic ,ram ile aynı voltaja sahip olmalı(3V3 olmalı) LF serisi kullanmalısın. Yok ben 5V olan pic kullanmak istemiyorum dersen(3V3'a çekilmiş pull-up'larla lojik high yapacaksın) o zaman da kolay, daha önce 74hc595'e seri 8 bit yazdıysan , aynı şekilde yazıyorsun, zaten datashette ki data akış diyagramlarında zamanlamalar görülüyor. Ram ,20Mhz'e kadar çalıştığı için geciktirme falan kullanmana gerek yok.

Clk = yükselen kenar tetiklemeli

****Power-up'ta ilk önce WRDI (yazma disable yapmalısın)
Yani WRDI komutunu(04H) göndermelisin(figure 9) (Aslında bu komut ram'e pil bağlarsan gerekli)

Belirli bir adrese data yazmak için,(figure 13)
1) WREN komutunu(06) göndermelisin (tüm yazma işlemi gereken yerlerde ilk önce bu komut gönderilir ve RAM, yazma işlemi için hazırlanır)
2) PP komutu(02H) gönderilir (yazma komutudur)
3) sonra 24 bit adres gönderilir
4) sonra bir byte data'dan 128 byte dataya kadar gönderebilirsin, yani adres counter'i otomatik artıyor
5) WRDI komutunu(04H) göndermelisin

okumak için, (figure 12)
1) mutlaka daha önce (***) WRDI komutu gönderilmiş olmalı yani okuma moduna alınmış olmalı
2) read komutu gönderilir (03H)
3) okuyacağın 24 bitlik adres gönderilir
4) sonra istediğin kadar byte oku

Kolay gelsin
Knowledge and Experience are Power