Nvidia Jetson Nano USB 3.0 Sorunu

Başlatan neccarzade, 15 Haziran 2023, 14:38:47

neccarzade

Merhabalar,
Daha öncesinde https://www.picproje.org/index.php/topic,82578.0.html başlıklı konuda PCIe layout ile alakalı genel bir sorum olmuştu. Kendi Nvidia Jetson Carrier Board'umu tasarlıyordum. Kartın üretimi ve dizgisini yaptım. Genel olarak tüm arayüzler sorunsuz bir şekilde çalışıyor.(HDMI, PCIe M.2, Gb Ethernet, USB micro). Fakat USB 3.0 için kullanılan Realtek marka RTS5411 çipini kullandığım 4 adet USB 3.0'ı ne yaptıysam çalıştıramadım. Nvidia'nın kendi forumunda da yaklaşık olarak 1 haftadır araştırma yapıyorum. Bir türlü sorunu çözemedim. Entegre usb switchi aktif etmiyor. Bu nedenle USB'ler 5V ile enerjilenemiyor. Daha öncesinde active low dediği yere active high olacak diye dipnot düşmüş nvdia kendi referans tasarımında. Birebir aynısını yaptığım halde USB'leri bir türlü çalıştıramadım. Bu donanımla alakalı tasarım yapmış olan bir arkadaşımız varsa ve yardımcı olabilirse çok memnun olurum.
Saygılar,

ibocakir

Merhaba hocam, şematik paylaşma şansınız var mı?

USB Load Switchlerinizin Enable sinyalleri Jetson GPIO'sunda doğru yere bağlamamış olabilir misiniz?

neccarzade

Merhaba @ibocakir hocam. RTS5411 entegresinin 40,41,42,43 nolu pinleri DSP1_PWR pinleri oluyor. Nvidia'nın referans tasarımında bu pinleri sadece 1 tanesi load switch'i enable etmek için kullanılıyor. Aslında referans tasarımın birebir kopyasını yaptım burada herhangi bir değişiklik yapmadım. eFuse ile alakalı one time programmable şeklinde bir tabir gördüm forumda onu da anlamadım açıkçası.
İşin ilginç yanı lsusb ile entegreyi gördüğünü teyid ediyorum sistem açıldığında. Fakat USB'ler takılı vaziyette herhangi bir power emaresi yok maalesef.

Şematiğin ilgili kısımları buraları.









resimli link yapma

ibocakir

Hocam tekrar selam,

Gördüğüm 2 adet hata var.

1. 1k akım limitleme direnci hatalı. 4 port USB SS Type A için 900mA x 4 = En az 3600mA limit gerekir. Bunun için de datasheet 8.3.3.2'deki bölüme göre 560 Ohm direnç takmanız gerekir.
2. TPS259530 6. pini QOD değil, Fault pini olmalı. Sadece isim hatası gibi görünüyor. Ancak şema tasarımında OCP için kullanılmış. Yani tasarımsal anlamda bir hata yok gibi.

Eğer lsusb komutuyla IC'yi görüyorsanız, bir de dmesg ile hata var mı diye bakabilir misiniz?

3V3_IO_PG sinyaliniz nereden geliyor onu göremedim. Ölçme şansınız var ise bu sinyal High olunca HUB_BPWR_DET sinyali de High olmalı. BPWR_DET sinyali upstream portun VBUS var mı yok mu onu kontrol ediyormuş. Yani 3V3_IO_PG sinyaliniz ve VDD_HUB_3V3 power hattınızda +3V3 olup olmadığını kontrol edebilir misiniz? Ekstra olacak ama, HUB_BPWR_DET sinyalinin varlığını tespit etmek için PMV16XNR gibi bir fet kullanmak biraz over-design olmuş gibi. 2N7002 bile iş görürdü.

Bir de kullandığınız Referans şematiği de yükleyebilir misiniz?

neccarzade

@ibocakir Hocam çok teşekkürler. https://developer.nvidia.com/embedded/downloads sayfasında Jetson Nano Developer Kit Carrier Board Design Files (P3449 B01) içerisinde referans tasarıma erişebilirsiniz. Dosya yükleme yapamadım iletimin altına.

Direnç ile alakalı olarak Referans tasarımda akım limitleyici olarak 931 Ohm kullanılmış. Bu da 2.18A'e denk geliyor sanırım. Ben dediğinize benzer bir şey denedim 2 tane 1K'yı paralel bağlayarak 500 ohm civarında bir değer elde ettim. oradan da bir sonuç çıkmadı. Şematik isimlendirme hatası sadece QOD. Belirttiğiniz gibi o bağlantıda bir farklılık yok.

dmesg ile denedim orada hatayı gösteriyor aslında bütün busları disabling ettiğine dair. Ama nedenini anlayamıyorum.
[ 6.579037] vdd-usb-vbus: disabling
[ 6.582530] vdd-usb-vbus2: disabling

Lehimleme prosesimde mi sorun var diye düşünüyorum. Defalarca sök tak yaptım en çok ondan şüphelenmiştim ama oradan da bir neticeye varamadım. nvidia'nın çalışan developer kartındaki RTS5411'i söküp bendekinin patates baskı olup olmadığını denedim. Sonuç yine hüsran. işin komik tarafı, söktüğümü tekrar yerine takınca developer kartı da çalışmadı. Ama lehimi mikroskopla kontrol ediyorum hiç bir problem yok. Tek akla gelen yüksek sıcaklıkta sıcak hava tabancasıyla lehim yapmak. Ama burada da entegreyi hiç görmemesi gerekir diye düşünüyorum. voltajlarda hatalı çıkış veren bir nokta yok.

Power good sinyali direkt 3.3V regülatörden geliyor. Hatta 5V'tan. Voltajlarla alakalı en ufak bir problem yok gibi. Entegre 5V'la besleniyor geriye kalan voltajlarını kendi üretiyor. 1V2, VDD_HUB_3V3 RTS5411'in ürettiği gerilim. Bir ara power sequence ile alakalı mıdır diye düşündüm. Doğru bir şekilde boot oluyor açılışta.

Mosfet konusunda haklısınız elde o vardı işin aslı. Zenginlikten değil :). Bu ilk tasarım prototip gibi olduğundan bazı şeyleri göz ardı ettim işin aslı.

High low sinyallerde de bir sorun göremedim. Her şey olması gerektiği gibi. Şüphelendiğim tüm noktalara osiloskop ile baktım.
İşin tuhaf yanı, bu yaşadığım sorunların çok çok benzerlerini nvidia developer forumda da yaşayanlar var. Benzer sorunları yaşamak bana işin içinde farklı sorunlar varmış gibime geliyor.

Bir yerde I2C ile alakalı soruna denk gelen birisini gördüm onu test edeceğim olmazsa. Direnç değerleriyle alakalı olabilir mi bilmiyorum.

Şimdilik aklıma gelenler bu kadar. Sorunu çözebilirsem inşallah buraya yazarım. Ben yandım başkaları yanmasın :).

saygılar.

 

ibocakir

Hocam şuanki problem hub DSP1234_PWR sinyalini High sürmüyor diyorsunuz. Yerinizde olsam kullandığınız e-Fuse entegresinin enable bacağını bir şekilde high'a çıkarabilseniz, DownStream Portlarından bağımsız usb host portuna takılan usb device'ı doğrudan enerjilendirip, plug-unplug yaptıktan sonra nvidia tarafından enumere olmaya çalışıyor mu ona bakardım. Eğer takılan cihazı tanırsa problem kesin hub'ın DSP1234_PWR sinyalini sürmediğini doğrulamış olursunuz.

Diğer yandan Fault pininden çıkan sinyali de ölçebilir misiniz? OCP sinyalinden high çıkmazsa hub DSP'leri korumaya alıp load switchi sürmüyor olabilir mi?

neccarzade

eFuse entegresini aradan kaldırıp direkt olarak +5V sinyalinden kablo ile aldım.
Sonuç: USB controller çalışıyor. Yani takılan USB'leri algılıyor ve çalıştırıyor. USB entegresiyle alakalı en azından haberleşme tanıma okuma ile alakalı bir problem görünmüyor.
Öncesinde eFuse entegresini pull-up yapıp sürdüğümde karta ilk enerji verdiğimde başlangıçta 5V çıkış veriyor hemen sonrasında boot işlemi devam ederken 5V kesiliyordu. korumaya mı alıyor süremiyor mu onu tam kestiremedim açıkçası.
Kartı revize ederken DSP1234'leri ayrı ayrı ve bir arada sürebilecek şekilde hem de pull-up/pull-down dirençler ekleyerek opsiyonel olarak tasarlayıp, aynı zamanda belki eFuse entegresini de değiştirip yeni bir tasarım yapmaya çalışacağım.

ibocakir

Merhaba hocam,

eFuse entegresini ortadan kaldırıp +5V0 verdiğiniz ve problemi baya daralttınız. Yeni tasarıma geçmeden önce hatayı tam olarak tespit etmeniz gerektiğini düşünüyorum. :)

Yine yerinizde olsam Enable ve Fault pinlerini kontrol ederdim. Bu sefer de başka eFuse ya da loadswitch kullanıp problemin devam etme olasılığı da var.

neccarzade

#8
Sonunda çözüme 1 adım kaldı inşallah  :) @ibocakir hocam müjdemi isterim :)
Fault pini ile alakalı herhangi bir problem yok. Problem enable pininde.
Enable pininin de aktif olamamasının nedeni DSP_1234 pinlerinini active low pin olması.
Nvidia kendi referans tasarımında ortada bir yere: "Update RTS5411 eFUSE to make DSPx_PWR high active, as note below." yazmış ardında da: "SPI Flash was removed from B01, customize RTS5411 internal eFuse (DSP1/2/3/4_PWR High active,disable charging feature, SSC valid) with Realtek tool." yazmış.
Uzun bir süre Realtek tool denen firmware'i bulmaya çalıştım, irtibata geçtim. Tabii ki de dönen olmadı. internette zaten yok.
Çözüm olarak enable'a giden yolu yani DSP_1234 hattını kestim. Araya CD4049 inverting buffer koydum. Normalde 0 veren çıkış buffer'dan geçince 3.3V olarak çıktı. TPS259530DSG'nin de enable pini active high olduğundan doğrudan çalışmış oldu hamdolsun.
Bu arada datasheette ufak bir detay gözüme çarptı. Entegrenin TPS259533DSG kodlu versiyonunun enable pini active low imiş. Şimdi ondan bir kaç adet sipariş verip deneyeceğim. İnşallah umduğum gibi çalışırsa araya buffer da koymadan USB problemi çözülmüş olacak.

ibocakir

Elinize sağlık hocam, teşekkürler bilgilendirme için  :)

Bence TTL 4049 yerine CMOS SN74LVC1G04 kullansanız daha iyi. Ama tabi aynı ürünün stok olduğu durumda active low olanını kullanmak daha mantıklı  ::ok