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.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,653
Mesajlar
97,271
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top