USB link uzerinden LPC2148 ile haberlesme

Başlatan bunalmis, 08 Nisan 2007, 23:11:04

z

Ornek pek cok program olmasina ragmen USB hat uzerinden haberlesmeye uygun, PC tarafinda driver gerekmeyen uygulama olarak usb mem ornegini begendim.

ARM'a gondermek istedigim verileri USB memorye yazdigimda aninda veriler ARM'da olacak zira USM mem zaten ARM'in kendisi.

Tersine ARM da ayni sekilde PC ye okumasi icin kendi uzerinde dosya olusturabilir. Ancak Keilin verdigi ornekler bana cok da anlasilir gelmedi.
(USM+ARM zaten su asamada bana bayagi karisik geliyor)

Amacima uygun nasil bir ornek onerirsiniz.

Derdim RS232 yerine USB hattan veri alip gondermek. Fakat PC tarafina driver yazmak zorunda kalmayayim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Hala Keil ortaminda  USB icin yazilmis LPC2148 orneklerini calistiramadim.
Olimex firmasinin demo olarak verdigi USB mouse programi nasil derlenir?

Programi indirmek icin tiklayin.

Elinizde USB icin calisan ornek varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ise

hocam bende mcb2140 kiti var  
keilin boardları içerisindeki mmc hid audio tüm örnekleri çalışıyor

z

Bendeki kartla MCB2140 arasinda tek fark senin kartta USB D+ hattina  1K5 uzerinden 3v3 uygulaniyor. Bendeki kartta ise ayni islem P0.31 pininden gelen sinyalle gerceklesiyor.

Bu hatti yazilimla lowa cektigimde PC USB bir nesne buldugunu ancak taniyamadigini soyluyor.

@ISE

Merak ettigim konu su;

MCB2140 kartini harici kaynaktan beslemeden USB porttan gelen gerilimle calistirdiginizda USB demo programlarini calistirabiliyormusunuz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Olay tahmin ettigim gibiymis. Artik Olimex kartim Keil'in USB ornekleri calistirmaya basladi.

MCB2140 kartinda D+ hatti dogrudan 1K5 ile 3V3 seviyesine cekilirken Olimex kartinda ayni islem P0.31 hatti uzerinden surulen bir transistorle (Q3) yapiliyor.

Yazilima mudahale edip P0.31 hattini Low yaparak Q3 u iletime sokup USB link ledinin yanmasini saglasam da PC, USB cihazi gormedi. Daha dogrusu gordu ama ne tip bir cihaz oldugunu anlamayamadi. Haliyle is gormedi.

Bende olayi hard olarak Q3 E-C arasini birlestirmek suretiyle cozdum.
Bu durumda led, her daim yaniyor.

Keil'in verdigi USB programlari derleyip hexini karta attiyorsunuz. Islem bittiginde USB kabloyu sokup takiyorsunuz. PC Olimex kartinizi artik islemciye ne yuklediyseniz o sekilde USB cihaz olarak goruyor.

Keil'in vermis oldugu USB ornekleri sifirdan yazabilmeyi cok isterdim. Ancak USB mantigini iyi kavramis olmak gerekiyor.

LPC2148 kullanararak USB sistem tasarlamak isteyenlere philipsin muhakkak bir pdf dokumani cikarttigini dusunuyorum. Eger boyle bir dokumandan haberdarsaniz bana da soyleyin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ise

usb için illede philpsin dökümnanı gerekmiyor kodların hepsi hazır. usb iyi kavramak için jan axelson un usb kitabını hatim etmek gerekiyor yada hazır örnekleri kullanıp mantığı yavaş yavaş kavramak gerekiyor. bu kiti geçen sene almıştım daha hale bakacaz elimize gelene kadar geldikten sonra hevesimiz kaçıyor. işlerin yoğunluğu yüzünden pek fazlada zamanımız olmuyor.  ST Microchip , LPC serisi işlemciler için hazır örneklerden usb yi çözmesi çok daha kolay.. zamanımız çoksa ve daha derinlere inmek istiyorsak at90s2013 ile yapılmış bir kart mevcut zannedersem daha öncede konuşulmuştu bununla detaylı olarak anlayabiliriz.  ben hazır komutları tercih ediyoruz. malum zaman  
http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm

mp3dragon

Alıntı yapılan: "ise"usb için illede philpsin dökümnanı gerekmiyor kodların hepsi hazır. usb iyi kavramak için jan axelson un usb kitabını hatim etmek gerekiyor yada hazır örnekleri kullanıp mantığı yavaş yavaş kavramak gerekiyor.

sözkonusu kitap aşağıdadır;

http://rapidshare.com/files/26770504/usbcomplete.pdf.html
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

z

Bana Keil de verilen ornekler cok karisik geldi. Neden derseniz ortada ellibin tane register C program icinde de bir okadar degisken, ayri ayri da C program parcaciklari var.

Neyse su konuda yardim bekliyorum.

Simdi LPC2148 USB Bar ornegini kartimda calistiriyorum ve PC bunu goruyor. USB BAR icine PC den dosya atabiliyor yada mevcut dosyalari okuyabiliyor.

Benim, PC den 10 K gibi bir dosyayi 32 Byte 32 Byte seklinde LPC2148'e yollamam gerekiyor. PC tarafindaki yazilim 32Byte yollayip (Bir dosya icine verileri yazmasi, verilerin LPC'ye gitmesi anlamina geliyor) LPC verileri okuyup geregini yerine getirince PCye bana bir 32 byte daha yolla diyebilmeli.

Gel gelelim beceremedim.

Aklima gelen bir kac cozumu denedim ama ise yaramadi.

Cozumlerden birisi soyle.

LPC 32 Byte dosyayi okuyup geregini yapinca Dosyayi silsin PC dosyanin silindigini gorunce yeniden dosya acip verileri yazsin.

Ancak;

USB BAR yani LPC islemci PC ile ilk baglandiginda icindeki dosyalarin isimlerini PC ye aktariyor.

Daha sonra PC silmedikce USB Bar icindeki dosya LPC islemci tarafindan silinse bile PC bunu anlamiyor. Hala dosya var gorunuyor.

PC tarafinda USB bar icindeyken refresh de ise yaramiyor.

Ancak USB sokulup takilirsa PC yeni degisiklikleri anlayabiliyor.

Buda cok zaman kaybettiren bir sey.

Nasil bir cozum getirebiliriz de PC USB bar icinde kendiliginden olusan bir dosyayi gorur yada silinen dosyadan haberdar olur?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mp3dragon

@bunalmis,

usb ile hiç uğraşmadım. Söylediğin kodu da inceleyemedim. Nasıl bir şey olduğunu da bilmiyorum. Ama benzer bir durum bende de var. Örneğin sd/mmc uygulamalarında donanımın kartın değiştiğini algılaması lazım, gerek fiziksel olarak (kartın sökülüp yerine başka kartın takılması hali) gerek üzerine yazılması hali. Bu durumda benim kullandığım yöntem init() fonksiyonu gibi başlangıç ayarlamalarını yapan fonksiyonu çağırmak. Senin programında da eğer usb_init() , memory_init() vs. gibi bir fonksiyon varsa bunu çağırıp bu fonksiyonun PC'ye donanımdaki değişikliği bildirmesi.

İkinci olarak programcı değil elektronikçi olmamız sebebi ile kullandığımız donanımın tüm ayrıntılarına girmek ve ona hakim olmak isteğimiz var. Ancak bu durum kompleks işlemcilerde bizleri bir hayli zorluyor. PC programlarındaki companent mantığını artık kompleks işlemcilerde de uygulamak zorundayız. Örneğin keil veya başka bir yerde bulduğumuz program parçacığını kendi kodumuza bir lego parçası gibi monte ederken. Nasıl ki PC programı yazarken kullandığımız dll veya compenentin içeriği bizi zorlamadığı sürece ilgilendirmiyorsa, aynı şekilde bu kod parçacıklarınında derinlikleri bizim için çok önemli değil. Başkasının yazdığı kodu anlamak bazen yeni kod yazmaktan daha zor olabiliyor.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

z

Istedigim oldu. Vbus pinini on-off yaptigimda bir sekilde (?) PC USB cihazda degisim oldugunu algiliyor.

Simdi hayal ettigim veri transferini cok kolayca gerceklestiriyorum. Ancak;

PC nin USB cihazda degisim oldugunu anladigi an ARM kart ortadan kayboluyor ve tekrar My computerde gorunmesi en az 30 sn zaman aliyor. (Bu isime gelmez)

Bir diger sorun ise My computerde ARM kart gorundugu anda ARM'da (flash memory'de) klasor ve dosyalar ekranin en ust katmanina geliyor. Bu da hos bir sey değil.

Yazilim icinden USB_Init() vb fonksiyonlari cagirirsam ARM kodlari kosturuyor ancak PC,  USB kablosu sokulup takilmadigi surece ARM'i gormuyor.

Bir sekilde Dir E dedigimde PC nin cash den değil USB den dosya listesini getirtebilmem lazim. Bunu yaptigim anda artik Vbus sinyalini hoplatmaya gerek kalmayacak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com