Herkese selamlar, SPI haberleşmesini öğrenmeye çalışıyorum. Arduino ve STM32'yi haberleştirmeye çalışıyorum ancak birinin lojik seviyeleri 3.3V, digerinin 5V. STM için 5V tolerant pinleri seçmek yerine direkt arduinodan gelen 5V'u 3.3' düşürmeye çalışıyorum. Bu devre ile mümkün mü ? SPI clock frekansının 2N2222'nin bant genişliği aralığında olduğunu varsayarsak. Eğer değilse daha hızlı bir transistor kullanıp lojik leveli böyle düşürebilir miyiz ? ![]() Şimdiden teşekkür ediyorum. (Bu devre tam olarak beyze 5v geldiğinde emitter'de 3.3 gösteriyor) |
Logic Level Converter Hk.



-
-
Max232 tip entegreler kullanmıyor muyduk reis o iş için?
Bazı uygulamalarda ULN2003, ULN2803 uyar mı incelemek lazım.
-
Çeşitli sinyal seviye dönüştürücülere alternatif olarak basit 2 direnç ile gerilim bölücü kullanabilirsiniz.
SPI haberleşmede masteri belirtmemişsiniz ama her iki durum içinde yapacaklarınız;
+ Master ardunio ise CLK ve MOSI 2 pine gerilim bölücü ekleyin.
+ Master Stm32 ise sadece MISO hattına gerilim bölücü ekleyin.
3,3K ve 2,2K veya gerilim bölme oranı buna eşit/yakın 1K...100K arası değerler kullanabilirsiniz.
-
Hocam selamlar,
Max232' ye RS232 haberleşme için demişler. Diğerlerine de baktım da onlar aradığım şeyler değil.
-
Merhabalar hocam,
2 direnç de aslında transistörlü devreden sonra aklıma geldi :)
Master arduino evet. Dediğiniz gibi clock ve mosi hattı için gerilim bölücü gerekli. Yani master stm32 olduğu durumda arduino 3.3 volt ile haberleşebilecek mi stm32 ile ? Yani masterin stm32 olduğu durumda yeniden bir bölücüye ihtiyaç neden duyduğumuzu pek anlamadım.
Hocam bir de, bunu akıl etmeden önce stm32'nin 5V töleransı olmayan pinlerine arduionun spi clock ve mosi portlarını bağlamıştım. İlgili portları denedim, led blink yapıyor, yine de bozulmuş olabilirler mi ?
Her zamanki gibi, teşekkürler yanıt için.
-
Selamlar Sayın Scapegoat
Başka amaçlar için etiketlenmiş olabilir ama kullanım mantığı uyarsa kullanılır.
Ayrıca sinyal aldığında karşı ucu topraklayan tip entegreler de, pull up yapılmış sinyal ucu ile çalıştırılıp veri aktarım konusunda düşünülebilir. olur mu incelemek lazım ama uygun dirençlerle kullanmak esastır. BU sayede pull-up gerilimi istenen değere ayarlanabilir ve farklı cihazlar kullanılabilir.
Sinyal nihayetinde High ve Low uçlardan oluşuyorsa bunun sağlanması esastır ve bahsettiğim mantıkta da yol budur. AYrı cihazlar için farklı gerilim regülatörleri ile (3Volt, 5Volt...) uygun gerilim sağlanıp, bu gerilim topraklanarak Low ucu oluşturulabilir ve bırakıldığında tekrar Hıgh'a döner. Tam tersi bir mantık da uygulanabilir.
-
5V ve 3.3V sistemde masterin hangisi olduğu fark etmez haberleşebilirler.
Master stm32 olduğunda, stmden clk ve mosi pinleri output olarak konfigüre edilecek ve 0-3,3V lojik seviyede çalışacaktır.
Bu durumda arduniodan gelen veri hattı stme 5V luk sinyal seviyesinde olacaktır. (stm miso pini). Bu pini korumak için sadece bir adet gerilim bölücüye ihtiyacınız olacak. Masterden Slave'e tek taraflı haberleşme yapacaksanız (stmde sadece clk ve mosi kullanacaksanız) gerilim bölücüye ihtiyacınız olmayacaktır.
Ardunio tarafında 5V pinlerde 3,3V sorunsuz H olarak algılanır. Genelde 2,5V ve üstü H olarak okunur.
Led blink yapıyorsa pinlerde sorun yoktur. Tam emin olmak isterseniz birde giriş olarak tanımlayın ve o şekilde kontrol edin.
Edit: Master Ardunio ise yukarıdaki mesajda belirttiğim igib 2 adet gerilim bölücüye (ardunionun clk ve mosi pinlerine bağlı) ihtiyacınız olacak.
< Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 30 Haziran 2022; 9:21:42 > -
Hocam evet mantık olarak hepsi aynı, değişen tek şey voltaj seviyesi. Genel anlamda hepsi HIGH'i yine HIGH yapıyor. Sizin dediğiniz gibi tam tersi de yapılabilir, onun için de SPI protokolünü değiştirmek gerekiyor, bildiğim kadarıyla 4 mod var. Düşen kenar okuması, yükselen kenar okuma, HIGH'ları okuma LOW'ları okuma gibi. O kadar hakim olmadığım için basit olanla ilerleyeceğim şimdilik :)
Teşekkürler yanıt için.
< Bu mesaj bu kişi tarafından değiştirildi scapegoat111 -- 30 Haziran 2022; 13:28:18 > -
"Masterden Slave'e tek taraflı haberleşme yapacaksanız (stmde sadece clk ve mosi kullanacaksanız) gerilim bölücüye ihtiyacınız olmayacaktır." Bunu kast ediyordum hocam.
Açıkcası bu zamana kadar kullandığım her şeyin datasheetine baktım, bir arduino'nunkine bakmadım. Ama genel anlamda eğer yanılmıyorsam 2.2 , 2.5 , 2.7 volt değerlerinden sonrası dediğiniz gibi logic HIGH okunuyor. Ama datasheet'e bakmak lazım her zaman.
Bu gün de ilgili portlarla spi haberleşmesini tekrar deneyeceğim. Teşekkürler yanıt için.
< Bu mesaj bu kişi tarafından değiştirildi scapegoat111 -- 30 Haziran 2022; 13:28:37 > -
Bu arada bu 3.3 ve 5V olayını araştırırken, biri bana dedi ki bu metodu anca SPI'ın düşük hızları için yapabilirsin. Merak ettim araştırdım nedenini. Çünkü bu zamana kadar öğrendiğimiz dirençlerin frekans tepkisi olmadığıydı. Sonra bir forumda bir arkadaş şunu yazmış " gerilim bölücüden sonra gelen devrenin kapasitif etkisi bulunabilir." Şu fotoğrafla modelleyebiliriz.
Takdir edersiniz ki frekans arttıkça kapasitör kısa devre gibi davranacağından, Voutun gördüğü eşdeğer direnç 0'a yaklaşacak ve Vout üzerine gerilim düşmeyecektir. Anladığım kadarıyla anlatmaya çalıştım, ince bir anekdot olarak. Umarım mantıkta bir hata yoktur.
-
M54562 tipi PNP array entegreler ile (hem npn hem de pnp kullanılmış olan) hıgha hıgh veren modifiye de yapılabilir. AMa amaç gerilim dönüştürmek olduğu için bu entegrelerdeki gerilim sisteme uyar mı uymazsa uygun entegre hangisi bakmak lazım.
Konu belki basitçe çözülebilir ama bunların da yazılması lazım. Genele yazmaktayım, bilgi sahipleri de ufkumuzu genişletebilir.
-
BU tip eklemelerde her zaman sorun ihtimali var. Tel boyunun uzaması bile artan frekansta sorun çıkarır. Tabii yüksek frekans. için. Bazı devrelerde gereksiz uzatılmış gibi görünen bağlantılar vardır.
Direnç dediğimiz de uzatılmış tel gibidir. Farklı direnç cinsleri ile elektriksel zaaf ortadan kaldırılabilir.
-
Gerilim bölücüye çok güvenmeyin yine de. bağlayacağınız Vout tarafında da bir iç direnç olacağı için tam doğru sonucu vermekte sorun olabilir.
Bir 3,3V zener diyodu devredeki Vout kısmına paralel bağlarsanız daha garantili bir çözüm olur.
-
Teşekkür ediyorum tüm yorum yapanların katkılarına.
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X