SPI Nasıl Kullanılır?

Katılım
28 Mart 2020
Mesajlar
19
Merhaba,

SPI kullanmak için bazı sorularımı bu başlık altında sormak istiyorum.

İlk sorum şu,
Ben bir adc entegresinden spi ile veri okuyacağım. Bu entegreyi cs pini ile aktif hale getirdim diyelim. Okuma bitene kadar da cs yi aktif tutacağım. Peki okuma bittiğinde nasıl geri bırakacağım cs pinini?

Yani veri okuma bitince bir şeye mi bakacağım ya da timer ile belirli bir süre boyunca bu pini aktif tutup sonra süre bitince cs yi devre dışı mı bırakacağım?
 
Merhaba,

SPI kullanmak için bazı sorularımı bu başlık altında sormak istiyorum.

İlk sorum şu,
Ben bir adc entegresinden spi ile veri okuyacağım. Bu entegreyi cs pini ile aktif hale getirdim diyelim. Okuma bitene kadar da cs yi aktif tutacağım. Peki okuma bittiğinde nasıl geri bırakacağım cs pinini?

Yani veri okuma bitince bir şeye mi bakacağım ya da timer ile belirli bir süre boyunca bu pini aktif tutup sonra süre bitince cs yi devre dışı mı bırakacağım?
chip select nadiren de olsa terslenik olarak çalışabilir ama örneği şöyle vereyim.

benim entegrem 0 olunca aktif oluyor 1 olunca pasif.
ben okuma yapmadan dökümanında verilen select olduktan sonra ne kadar beklemen gerekiyor bu süre kadar bekleyip okumanı/yazmanı yapıp 1 yapıp susturman gerekiyor.
foruma biraz bakarsan daha önce spi data çözümlemeside yapmıştık.
 
 
chip select nadiren de olsa terslenik olarak çalışabilir ama örneği şöyle vereyim.

benim entegrem 0 olunca aktif oluyor 1 olunca pasif.
ben okuma yapmadan dökümanında verilen select olduktan sonra ne kadar beklemen gerekiyor bu süre kadar bekleyip okumanı/yazmanı yapıp 1 yapıp susturman gerekiyor.
foruma biraz bakarsan daha önce spi data çözümlemeside yapmıştık.
cevap için teşekkür ederim. Forumda yeniyim. Bahsettiğiniz konu linkini hatırlıyorsanız paylaşabilir misiniz?
 
Teşekkürler
 
Birçok MCU chip select hattını otomatik olarak kontrol eder. Eğer senin kullandığım MCU otomatik olarak kontrol etmiyorsa senin manuel olarak aktif/pasif yapman lazım. Transfer başlamadan aktif yapıyorsun, transfer tamamlandıktan sonra da pasif. Aktif ve pasif lojik seviyesi 0 ve 1 dir genellikle, ama istisnalar olabilir. Kullandığın SPI aygıtının datasheet'inde belirtiliyor olması lazım SPI clock polaritesi, CS polaritesi, data fazı vs.
 
chip select nadiren de olsa terslenik olarak çalışabilir ama örneği şöyle vereyim.

benim entegrem 0 olunca aktif oluyor 1 olunca pasif.
ben okuma yapmadan dökümanında verilen select olduktan sonra ne kadar beklemen gerekiyor bu süre kadar bekleyip okumanı/yazmanı yapıp 1 yapıp susturman gerekiyor.
foruma biraz bakarsan daha önce spi data çözümlemeside yapmıştık.
Spi aktif ettim
Datamı okuma süreme entegreden baktım. Örneğin 1 us
Cs pini 1 yaptım. Datayı okumaya başladım
1us timer kurup delay yaptım
Sonra okuma süresi bitti diyip cs pinini 0 yaptım.
Artık veri bufferda

Akış doğru mudur? Yanlış anlamadım değil mi?

Bazı örnek kodlarda mcu registerları vardı 1 bayt aktarınca bir flag aktif oluyordu oradan takip ediyor anladığım kadarıyla. Süre yok yani.
 
Birçok MCU chip select hattını otomatik olarak kontrol eder. Eğer senin kullandığım MCU otomatik olarak kontrol etmiyorsa senin manuel olarak aktif/pasif yapman lazım. Transfer başlamadan aktif yapıyorsun, transfer tamamlandıktan sonra da pasif. Aktif ve pasif lojik seviyesi 0 ve 1 dir genellikle, ama istisnalar olabilir. Kullandığın SPI aygıtının datasheet'inde belirtiliyor olması lazım SPI clock polaritesi, CS polaritesi, data fazı vs.
Dspic30f6014a kullanacağım
 
evet akış doğru.

software özel değilse paylaş pek PIC registeri bilmem ama benden daha ustalar var bariz bir hata varsa belki ben belki ustalar yakalar.

genel olarak sorun mu yaşıyorsun yoksa şuan bir sistem oluşturuyorsun bunun için temel mi atıyorsun?
 
Hem öğrenip hem mcp3201 ile spi dan veri okuyup bunu kullanmaya çalışıyorum. Daha önce dspic kullanmamıştım. Dspic stm32 serisi gibi rahat değil :) fakat bununla ilerlemem gerekecek
 
Birçok MCU chip select hattını otomatik olarak kontrol eder. Eğer senin kullandığım MCU otomatik olarak kontrol etmiyorsa senin manuel olarak aktif/pasif yapman lazım. Transfer başlamadan aktif yapıyorsun, transfer tamamlandıktan sonra da pasif. Aktif ve pasif lojik seviyesi 0 ve 1 dir genellikle, ama istisnalar olabilir. Kullandığın SPI aygıtının datasheet'inde belirtiliyor olması lazım SPI clock polaritesi, CS polaritesi, data fazı vs.
Aktif ile pasif arasındaki geçiş için adc entegresinin çevrimi tamamlamasını bekleyip, bunun için bir timer kurup, sonra da pasif hale getireceğim.
 
Merhaba, ADC kaç bit okuyorsunuz? MCU'ya giren bu SPI dataları nasıl( veya nereden) okumayı düşünüyorsunuz? Teşekkürler.
 
Mcp3201 12 bit adc entegrem var. Deneme amaçlı bir pot ile 0-5v arası okuma yapmak istiyorum.
Okuduğum 12 bit adc yi spi ile dspic30f6014a ya gönderip, orada veriyi kullanmak istiyorum.
 
Ben spi'ı tren katarına benzetiyorum.arkadan bir katar eklenince önden bir katar çıkıyor.Bu çıkan katarın içindeki veri bizim okumuş oldugumuz veri oluyor.8 bitlik veri okuyacaksak arkadan 8 adet katar ekliyoruz.Burada hızın hemen hemen hiçbir önemi yok.Ne kadar hızlı arkadan eklersek o kadar hızlı önden okumuş olacagız.
Master slave olayına gelince:
Slave ye bir data göndermek istersek arkadan gönderecegimiz bit sayısı kadar katar ekliyoruz.Tabii bu katarların dolu veya boş olması 1 ve 0 ları temsil ediyor.
Slave'den bilgi okumak istersek arkadan dumy(bos veya dolu olmasının bir öneminin olmadıgı) katarlar ekliyoruz ve önden çıkanları okuyoruz.İşte bu okudugumuz degerler slaveden gelen degerler olmuş oluyor.

Bir başka anlatım şekli ise:
iki adet shift registerleri üst üste koyun.sag taraflarını birbirlerine baglayın.
üstekinin(master) soluna bir data girerseniz;alttakinin(slavenin) solundan bir data çıkar.Bu çıkan data slaveden okunan veridir.
 

Forum istatistikleri

Konular
7,104
Mesajlar
121,020
Üyeler
2,879
Son üye
dinomiout

Son kaynaklar

Son profil mesajları

az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
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.
hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Back
Top