Uart iletişim problemi

fide

Meraklı ve "nasıl" sorusunu seven biri
Katılım
8 Eylül 2021
Mesajlar
2,490
Bugün garip bir durum yaşadım. Sebebini düşünüyorum ama hâlâ işin içinden çıkamadım.

Windows kurulu PC var.
Ubuntu kurulu Jetson Orin Nx var.
Odrive 3.6 motor sürücü ve ft232rl USB seri çevirici var.

Yapmak istediğim şey uart üzerinden "r vbus_voltage\r" komutu gönderip gelen cevabı almak.
Jetson Orin üzerinden seri portu yapılandırıp texti gönderiyorum. Jetson Orin seri portu (40 pin header üzerindeki yerleşik ttyTHS0 portu) üzerinden veriyi USB seri çevirici ile Windows PC ve x-ctu seri port terminal ile görebiliyorum.

Windows PC ile odrive bağlantısını usb-seri çevirici üzerinden kurduğumda sıkıntısız komutu gönderip cevap alıyor.

Jetson Orin ile Odrive bağlantısını yapınca komutu gönderince cevap alamıyorum.

2 saatimi buna harcadım ve çözemedim. Rx Tx pinleri defalarca değiştirdim.

Sonunda USB seri çeviriciyi Jetson Orin'e takınca (ttyUSB1) seri portu seçince sıkıntısız çalıştı.

Jetson Orin -> PC çalışıyor
Pc-> odrive çalışıyor
Jetson Orin -> odrive çalışmıyor.
Jetson Orin -usb dönüştürücü -> odrive çalışıyor
Anlam veremedim bu duruma.
Siz ne dersiniz?

Odrive üzerine 2 tane optokuplör ile izolatör var. Besleme 3v3 yada 5V olabiliyor. İkisini de denedim ama sonuç değişmedi.
 
Orin -> odrive da data hattını logic analyzer ya da scope ile görüntüleyip datanın kesintisiz tek parça olduğunu doğrulayabilir misiniz? Bazen böyle yerleşik çıktılar datada ufakta olsa bir kesinti yapabiliyor.
 
Lojik analizör ile datanın izolatörden sonraki kısma ulaşıp ulaşmadığını kontrol etmem lazım. Pazartesi bakarım artık.
 
CR LF farklılıklarından olabilir. Belki windows terminalden gönderince uygun CR/LF kombinasyonu gönderiliyor, linux'tan ise sadece LF gönderiliyor.

picocom kur ubuntu üzerine. Bu programda her türlü CR LF dönüşümünü yaptırabiliyrosun.
 
Abi linuxte komut sonuna CR ekliyorum. Windowsta çıkıyor. Alt satıra geçiyor. Duruma gerçekten anlam veremedim
 
Terminal emülatör ile birşeyler göndermek için Enter'a basıyorsun. Bu durumda da terminal emülatör, yapılandırmaya göre ya CR/LF yada sadece LF gönderiyor olabilir. Ama bir programın içinde seri porttan data gönderiyorsan, o zaman kontrol full sende.
 
CR LF ve sadece CR denedim. Sonuç değişmedi.
Pazartesi lojik analizörü bağlayıp izolator giriş çıkışı kontrol edicem.

X-ctu gönderiken ve gelen datanın hex kodunu da veriyor. Herhangi ekstra karakter yok.
 
Bildiğimden değil. Mantık yürütüyorum. Data uçlarında pullup yoksa hat float kalıyordur. Usb ttl dönüştürücü pullup yaptığı için datalar karşıya ulasiyordur.
 
3.3 volt 5 volt logic seviye uyumsuzluğu olabilir mi ? lojik analizör yerine scope ile bakmak daha sağlıklı olur.
bir şekilde baud rate çok az da olsa farklı olabilir mi, bazı uartların timing error toleransı daha yüksek. bu durumda toleransı yüksek olan receive işlemini sorunsuz yapar ama diğer taraf yapamaz.
 
Abi bugün tarla sulama işi var. Yarın devreyi ameliyat masasına yatırıp neşteri basıcam. Sorun nerde inşallah görürüz. Skop ve analizör ikisi de mevcut. İnşallah yarın kim kuru kim diri ortaya çıkacak.
 

Forum istatistikleri

Konular
8,143
Mesajlar
134,022
Üyeler
3,244
Son üye
taker

Son kaynaklar

Son profil mesajları

erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Back
Top