STM32F4 ile HAL USB VCP(virtual com port) çökme sorunu

Başlatan kralsam, 10 Mart 2017, 23:40:28

kralsam

Merhaba Arkadaşlar,

Bir süredir USB VCP çalışıyorum. Şöyle garip bir olay ile karşılaştım.

Kodu attığım sırada ve gücü kesmeden reset atsamda com port olarak putty ile bağlanabiliyorum. Fakat gücü kesip tekrar verdiğimde hiç bir şekilde bağlanamıyor.

Hızlı data göndermek istememden kaynaklanabilir diye düşünerek veri transferini bir key gönderdikten sonra başlattım durum yine aynı.

Bu konuda çalışmış ve fikir verebilecek bir arkadaş var mı?

İyi çalışmalar.

furkanyx

Alıntı YapKodu attığım sırada ve gücü kesmeden reset atsamda com port olarak putty ile bağlanabiliyorum.
USB DP deki pull up direncini(1.5k) çıkartırtıp takarsan  usb bağlantısını yenileyebilirsin. (usb disconnect diye geçiyor bazı stm32 kitlerinde transistor ile pull up yapılmıştı ve mcu nun bir pini ile usb bağlantısı anahtarlama yaparak yenilenebiliyordu) Aksi halde yeniden enumerate etmez usb host.

Alıntı YapFakat gücü kesip tekrar verdiğimde hiç bir şekilde bağlanamıyor.
Bu kısmı anlamadım? Daha sonra nasıl bağlanıyorsun?

Cemre.

Muhtemelen kullandığınız yazılım portu kapatmadan siz çektiğiniz için oluyor. Önce iletişimi kesip sonra bağlantıyı keserseniz sorun kalmaz muhtemelen.

kralsam

Şöyle ifade edeyim. Win10 işletim sistemi yüklü pc de program atıp enerji kesmediysem bağlanıyor. (Reset atsam bile) Ama gücü kesip verdikten sonra denediğimde bağlanmıyor.


1.5k ya dikkat etmedim. User manual e bir bakayım. Bunu daha sonra F103 e taşımayı düşünüyordum.

kralsam

Hocam uygulamayı kapatıp tekrar açıyorum ama yine bağlanmıyor.

Cemre.

Ben termite programını kullanıyorum. Bahsettiğim gibi yaparsam usb takılı iken connect dediğimde bekliyor bulamıyor. Comport listesinden kontrol ettiğimde de görünmüyor zaten. Ne zaman once yazilimdan disconnect edip söküp takıyorum o zaman sorun çözülüyor.
Belki yol gösterir.

kralsam

@Cemre. hocam bu bahsettiğiniz  uygulama ile daha sağlıklı bağlandım. Ama sanırım buffer şişip uygulama kapanıyor. Sanırım problem putty vs de oluyor.
Daha güncel ve efektif yazılmış bir uygulama bulup teste devam etmeliyim sanırım.

furkanyx

Bende buyuk miktarda veri gozlemlemek istemistim ama termite putty vs yetersiz kaliyor. En son care kendi programimi yazmistim ve sisme olmadan gorebiliyorum. Sabah paylasirim denersiniz.

Hala anlamadim. Gucu kesip tekrar verince baglanmamasini. Sonrasinda  nasil baglaniyor?

kralsam

Şimdiye kadar yeniden programlamak zorunda kaldım. Aradaki ilişkiyi tam anlayamadım.
Bende şuan demo bir QT GUI oluşturmaya çalışıyorum bakalım o bağlanabilecekmi.

kralsam

Sanırım sorun printf fonksiyonundan kaynaklandı. Araştırmaya devam ediyorum.
Bu arada QT ile yazdığım daha sağlıklı çalıştı. Ama çok amatör oldu.

furkanyx

Benim de yazdığım biraz amatörce ama işe yarıyor :) C# la yazmıştım.

Link:
https://drive.google.com/open?id=0B75rCMjyowJaRjd0RG9HYW1uSWM

Not: İngilizce türkçe ortaya karışık mazur görün :(

muhendisbey

@kralsam
Sorun bağlantıyı kesmeden/kesemeden enerjisini kesmenden kaynaklı olabilir.
Bu durumda COM port olmasa dahi açık kalır ve tekrar bağlantıya izin vermez.
Ya kartı ikinci kez takıp bağlan diyecek hata alıp kartı çıkarıp takıp (5sn beklemelisiniz) tekrar bağlan diyeceksiniz ya da bilgisayarı yeniden başlatacaksınız.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

kralsam

@furkanyx teşekkürler. Elimde örnek olarak bulunsun. Ayrıca hangimiz yapmıyorki ortaya karışık :D


@muhendisbey bu PC kaynaklı bir sorun mu? Ayrıca sorun benim seriport yazım şeklinden kaynaklanıyor sanırım. Başka bir türlü yazınca kısmen düzeldi. Sanırım tersi durumda da problemler çıkacak.


Bu işi sağlamlaştırsam datayı iki fifo ile kullanacam ama henüz güven vermedi.

muhendisbey

Eğer com portu açmak istiyorsanız ve hata alıyorsanız problem çoğunlukla bilgisayar tarafındadır. Yazdığınız yazılım bir nebze bu durumu rahatlatabilir o da sanal olmasından kaynaklı.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

kralsam

Hocam bu işi HID device olarak yapsak problem çözülür mü acaba ? Onu nasıl yapabilirim yaklaşık 2Msps hız ihtiyacım olacak.