FTDIchip n FT2232 USB SPI muunnin: Peruskysymys

V

vandelay

Guest
Käytän FT2232 siru antaa SPI-liitännän yli USB. Kun käsittelyssä up edellyttäen SPI.dll dokumentaatio, olin yllättynyt löytää kaksi funktiota SPI_Read ja SPI_Write. Koska SPI on kaksisuuntainen siirto, miten se voi olla, että on olemassa erilliset lukea ja kirjoittaa tehtävistä säädetään? Voisiko olla, että (koska USB kommunikoi paketteja), komento lähetetään SPI kirjoitustoiminnoissa ja sai samaan tietoja polkumyynnillä, sitten odotetaan vastausta tietoja (annetaan Nr tavujen lukea) lukee kirjallisesti dummy data samankokoisia, välittää koko puskuri takaisin yhteen USB paketin? Olisi järkevää koska tietoja voidaan siirtää paljon nopeammin yli USB, mutta minun tapauksessani (lukeminen hyvin harvat vastaus tavua kerrallaan, monet komennot monet SPI orjia) Minulla on vielä paljon tehottomampi kaistanleveyttä kuin mitä FT2232 Tuotelehtinen ilmestyi ensimmäisen kerran osoittaa .. Luin sen voisi tehdä 6MHz SPI (IIRC), mutta olen alkanut epäillä, että on kello useita En voi Perustan kaistanleveys matematiikka on .. Selvittämiseksi tämä olisi hienoa ..
 
On totta, että lähettää muutama tavu yli USB on hyvin hidasta. En tiedä toimintoja spi.dll, koska käytän FT2232 Linux, mutta olen kirjoittanut oman SPI toiminnot ohjelmoida AVR yllä tätä siru. Alussa olen lähettänyt ja vastaanottanut kaikki 4 tavua erillisellä FT_write ja FT_read komentoja, ja se oli hyvin hidasta. Ohjelmointi 32KB Flash kesti noin 5 minuuttia!. Sitten tein puskuroitu kirjoittaa ja lukee: Kirjoita kaikki tiedot puskuriin ja sitten lähettää koko puskuri yhdellä FT_write. Nopeus kasva oli valtava - ohjelmointi nyt kesti noin 3s. Ja on mahdollista lukea ja kirjoittaa dataa samanaikaisesti, koska tiedot tallennetaan puskuriin, jota voidaan lukea yhdellä FT_read komennon jälkeen tiedonsiirto on päättynyt. USB on suunniteltu lähettämään paketteja dataa ei yhtä tavua. Paketti koostuu 64 tietoja. Jos kirjoitat vähemmän dataa, sitten säädin odottaa tietyn ajan - yleensä 16ms (muulle) ja vasta sen jälkeen aika on kulunut lähettää tiedot. Aikaa voidaan muuttaa FT_SetLatencyTimer. Joten lähettämällä muutama tavu kerrallaan on hyvin hidas - jopa alle 1kbBs. Terveisin
 
Kiitos paljon jakaa kokemuksenne Coros. Otan vain tarkistaa minun piiri ylimääräisellä MCU kerätä tietoja, lähettää kaiken takaisin yli USB, puskuroitu yhdessä paketissa. Kysymys, minulla on vain kerätä 24 tavua .. minun pitäisi ehkä ohjelma MCU reagoimaan 64 tavua josta 40 tavua on nukke, jotta latenssi ongelma?
 
Voisit myös kirjoittaa mukautettuja funktioita lukemista ja kirjoittamista kuin minä. Niin mielestäni ei ole tarpeen käyttää ylimääräisiä MCU. Kun kirjoitin AVR programmig aluksi tein näin - erittäin hidas versio: For käsittelyssä yhden tavun välähdys AVR minun täytyy lähettää 3 tavua komento sitten luin 1 tavu vastausta, joten käytin FT_write kanssa 3 tavua komennolla AVR, sitten FT_read sain 1 tavu. Se oli hidas. Nyt puskuroitu versio: esim. haluan lukea 256 tavuja AVR (siirto AVR on vielä 3 tavua komento ja osoite sekä 1 tavu vastaus). Tämä minun täytyy lähettää FT2232: 0x11, 0x02, 0x00, 3 tavua komento AVR, 0x20, 0x00, 0x00 0x11 0x02 0x00 on komento FT lähettää 3 tavua tietoa, 0x20 0x00 0x00 on komento FT lukea yhden tavun alkaen avr. Joten lähetän 9 * 256 tavua yhdellä FT_write, sitten luin 256 tavua yhdellä FT_read. Diffrence on, että en lue 1 tavu heti sendig 3 tavua komennon, niin FT2232 tallentaa sen sisäiseen puskuriin ja lähettää sen, kun se on täynnä. Sitten saan kaikki 256 tavua yhdellä FT_read. Lisätietoja kuvaus lukea MPSSE komennot kuvaus FTDI päällä.
 
Miksi et käytä mikrosiru USB ratkaisu? On olemassa demoja ja ohjelmat lukevat mennä.
 
[Quote = IamnotJunk] miksi ei käytä mikrosiru USB ratkaisu? On olemassa demoja ja ohjelmat lukevat mennä. [/Quote] Koska USB nopeus on edelleen pullonkaula jos lähetät yksittäisiä tavuja, ja joudut ohjelmaan oman PC kuljettajia. Itse olen FT2232 DIP-moduuli, se tulee ajurit, DLL kirjastoja, koodiesimerkkejä ja kuljettaja dokumentointi .. Helppo valinta minulle .. [Size = 2] [color = # 999999] Lisätty jälkeen 24 minuuttia: [/color] [/size] coros, pakkaus kaikki tiedot yhteen "sivu" on vielä matkaa minulle uskon, ja minä miksi: tiedot luetaan reaaliajassa ohjelma PC vaativat päivityksen välein 0,05 sekuntia tai niin (I vaihtelee eri päivitys taajuuksilla). Yksi päivitys tarvitsee kaikki tiedot, mahdollisimman tuore (anturin lukemat). Lukemalla kaikki tiedot MCU ja lähettää ne yhteen USB paketin, uskon, että olen paras ratkaisu minun hakemuksen. Sitä paitsi, olen jo suunnitellut hallituksen kanssa laivalla MCU (dsPIC30F6012). Se nyt käyttää joitakin analogisia antureita myös, joten aion käyttää keskeyttää rakentuvassa / D-muunnoksen ja IIR suodatin lukemat, lisäksi tarjota puskurina SPI anturit;) Olen ohjelmoitu paljon dsPIC aikaisemmin ja minulla on kaikki MCU koodi minun upotettu aikaisempiin projekteihin:) Olen ihan hyvä, kiitos palautteesta!
 
Hei, Minulla on oikeastaan ​​samanlainen kysymys FT2232 (käytän FT2232H mutta periaate on sama). Yritän käyttää kaksisuuntainen ominaisuus SPI. Haluan lähettää yhden tavun kautta Mosi saadessaan yhden tavun kautta miso, niin kaikki, että 8 SPI CLK. Olen etsinyt ja etsinyt tuntikausia, eikä voi tehdä sitä työtä. On on, jos kaikki olisi aina vuorosuuntainen. Toivottavasti joku tässä luettelossa voi auttaa! :)
 
Hello guys! No, olen ajatellut ostaa FT2232D hallintaan 8 audiokanavaa, individualy käyttäen SPI pöytäkirja. USB -> FT2232D - CH1 -> AD8801 # 1 - CH1, CH2, CH3, CH4 -> Vahvistimet | --- CH2 -> AD8801 # 2 - CH5, CH6, CH7, CH8 -> Vahvistimet Mutta en halua tuottaa jokaisen kanavan signaali, joten minun päivitysnopeus on nopeampi voin! (Noin: 0,5 ms) Minun ei tarvitse lukea mitään! Vain lähettää tiedot! Luuletko on mahdollista? Kiitos!
 

Welcome to EDABoard.com

Sponsor

Back
Top