Forum: Mikrocontroller und Digitale Elektronik neuer FTDI 2232C + Mikrocontroller


von Thomas (Gast)


Lesenswert?

Halli hallo an Alle,

hat sich schon mal jemand den FTDI 2232C näher angeschaut? In ihm sind
ja zwei FTDI-Chips vereint. Man hat also 2 Kanäle zur Auswahl. Außerdem
bietet er diesen  Multi Purpose Synchronous Serial Engine (MPSSE)) Modus
an. Der scheint mir recht interessant zu klingen. Bin mir nicht ganz
sicher, aber kann man damit dann die SPI Schnittstelle am
Mikrocontroller anschließen und diesen darüber neu flashen? Wenn ja,
dann müßte es doch möglich sein, den einen Kanal für die serielle
Kommunikation zwischen PC und µC zu nutzen und den anderen Kanal um den
µC neu zu programmieren. Das wäre doch ideal für eine USB-Anbindung
oder?
Wie seht Ihr das Ganze. Könnte das so funktioneren?

Danke an Alle,

Ciao Thomas

von Steffen (Gast)


Lesenswert?

Hallo Thomas,

genau das Gleiche habe ich auch vor. Der 2232 ist absolut prädestiniert
für eine solche Aufgabe. Das Problem, was etliche Entwickler habe ist,
dass etliche Notebooks (meiner auch) keine serielle und parallele
Schnittstelle haben.

Den Programmer den ich mir vorstelle soll genau wie Du es angedacht
hast eine SPI-Schnittstelle zur Programmierung des MCs und eine
serielle Schnittstelle (RS232/RS485 umschaltbar) zur Kommunikation mit
der Zielschaltung haben. Weiterhin soll mit dem Modul auch das Debuggen
möglich sein. Ich arbeite zwar mit PICs aber die Hardware wäre
universell für PIC, AVR usw. einsetzbar. Angepasst werden muss dann nur
der Treiber.

Vor längerer Zeit habe ich mal einen Prototypen mit FTDI245BM
aufgebaut. Siehe
http://www.fernando-heitor.de/picforum/viewtopic.php?t=423. Den
Prototypen verwerfe ich jetzt wieder und werde den 2232 einsetzen. Die
Größe will ich so ungefähr beibehalten.

Ich denke das wäre doch ein Prima Projekt, an dem AVR- und PIC-Freaks
mal zusammen was Gescheites auf die Beine stellen könnten. Oder?

Steffen

von Thomas (Gast)


Lesenswert?

Hi Steffen und an alle anderen,

Schade das sich leider niemand weiter dafür interessiert. Ich bin
gerade dabei mir einen Schaltplan auszudenken, wie man am besten den
FT2232C an den ATMega 128 anschließt. Bin mir dabei aber nicht so
sicher. Vielleicht könnt Ihr mir da ja weiterhelfen...?
Also nur auf Channel A kann man den MPSSE Mode betreiben. Das würde
bedeuten, man müßte da die SPI-Schnittstelle des Mikrocontrollers
anschließen. Leider bin ich nicht so erfahren in Sachen SPI, da ich
erst seit kurzer Zeit mit Mikrocontrollern arbeite. Auf Seite des
Mikrocontrollers müßten es 6 Pins sein, die zur SPI
gehörten(MOSI,MISO,SCK,/SS,DataOut,DataIn). Auf der Channel A Seite im
MPSSE Mode gibt es TCK/SK,TDI/DO,TDO/DI,TMS/CS,GPIOL0-3,GPIOH0-3.Bin
mir eben nicht sicher, wie die beiden jetzt zusammengehören.Seht Ihr da
mehr durch? Und was müßte man denn dann noch tun, wenn man den ATMega128
über die SPI Schnittstelle programmieren möchte?Das Protokoll ist ja im
FTDI implementiert. Kann man es dann einfach mit WINAVR programmieren?
An Channel B kommt dann die RS232.Da braucht man ja nur TXD und RXD
anschließen. Die restlichen Pins vom FT2232C sind ja zum
Hardware-Handshaking.Die am besten offen lassen bzw. brücken oder?
Würde mich sehr freuen, wenn sich noch jemand mit der Problematik
auseinandersetzen würde und wir gemeinsam weiterkommen...

Danke an alle...

Ciao Thomas

von DerMax (Gast)


Lesenswert?

Wozu der Aufwand?
wenn ihr den AVR nur einfach neu programmieren können wollt, macht nen
bootloader rein und programmiert ihn über UART, da brauch man auch gar
keinen zweiten Kanal für

von Steffen (Gast)


Lesenswert?

@DerMax

Und wie bekommst Du den Bootloader über USB in den AVR rein?
Es geht um einen USB-ICSP-Programmer.

@Thomas

Ich bin noch nicht dazu gekommen mich weiter mit dem FTDI2232 zu
beschäftigen. Wird wohl erst Ende der Woche werden. Dann melde ich mich
bzgl. der Problematik nochmal.

Steffen

von Martin (Gast)


Lesenswert?

Hallo Thomas!

Tolle Sache dieser Baustein.
TCK/SK wird mit SCK verbunden
TDI/DO ist wird mit Mosi verbunden
TDO/DI ist wird mit Miso verbunden

TMS/CS ist anscheinend eine Art Chip-Select-Signal.

Ich selbst benutze den FTDI245BM und programmiere diesen unter C.
Die Frage ist jetzt - Erkennt der Treiber nun mit dem FTDI 2232C zwei
Bausteine oder einen?
Wie spricht man den Baustein mit dem Treiber an - oder benötigt man
einen neuen Treiber hierfür?

Tschüss

Martin

von Steffen (Gast)


Lesenswert?

@Martin

Soweit ich die Infos bei FTDI verstanden habe gibt es für den 2232
einen neuen Treiber. Der ist auch eine Kombination der beiden
bisherigen Varianten, so dass es auch keine Treiberprobleme mehr geben
sollte.

Steffen

von Thomas (Gast)


Lesenswert?

Hi an Alle,

endlich mal ein paar Reaktionen *freu...
vielen Dank erstmal an alle die sich hier gemeldet haben und es genauso
interessant finden.
Man kann die Betriebsarten+Treiber des FT2232C auch über eine Software
auswählen(siehe www.unitronic.de->FTDI->FAQ).Der Channel A müßte dann
als 245 FIFO sein und diesen als MPSSE Mode einstellen und Channel B
als RS232.Den Channel A müßte man so verbinden wie es Martin
geschrieben hat.Das sollte so gehen.Weiß nun leider nur noch nicht, ob
man da dann noch ne spezielle Software zum programmieren schreiben
muss, oder ob dass dann einfach über WINAVR etc. geht.Ich werde das auf
jeden Fall in naher Zunkunft mal testen. Bis dahin nehme ich jeden
Vorschlag und Tip gern an...

Neuigkeiten werde ich mitteilen...

Bis denne Thomas

von Thomas (Gast)


Lesenswert?

Mir ist grad noch eingefallen...

das TMS/CS...wenn das eine Art Chip-Select ist, dann könnte man es doch
benutzen um es an RESET des Mikrocontrollers anzuschließen.Denn der
ISP-Programmer zieht ja auch RESET auf GND oder...was meint ihr?

Ahoi Thomas

von André Kronfeldt (Gast)


Lesenswert?

@Thomas:

Korrekt. TMS/CS sollte auf RST. Jedenfalls ist das bei den
JTAG-Schaltungen so (Xilinx, Altera, ...)

Grüße,
André

von Martin (Gast)


Lesenswert?

Hallo.

Ich glaube man benötigt dann auch ein neues MPROG, um das EEPROM zu
programmieren zu können!?!

Eines ist mir beim Bit-Bang-Mode aufgefallen.
Der ist ja hierfür da, um einzelne Portpins des FTDI-Bausteins direkt
auf High- oder Low-Pegel bringen zu können.

Aber das Ganze war etwas langsam.
Folgendes hatte ich getan.
Ich initialisierte den Baustein entsprechend, auch die Baudrate.

Ich hatte nach der Initialisierung 3 Write-Befehle
untereinanderstehen.
Jeder dieser Befehle sendete ein Zeichen an den 8-Bit-Port.
Jedes dieser Zeichen kam im Abstand von 1ms an. Messung mit dem OSZI.
Dies entsprach nicht meiner Baudrateneinstellung.

Ich konnte das Ganze beschleunigen indem ich mit nur einen Write-Befehl
3-Zeichen abschickte. Jetzt hatte ich endlich die eingestellte Baudrate
am Ausgang.

Hier muss man anscheinend etwas aufpassen, wie man das Ganze
programmiert. Aber es war ein interessanter Versuch.


Zum neuen Baustein:
Was ich noch nicht verstehe ist der Unterschied zwischen dem synchronen
und asynchronen Bit-Bang-Mode. Weiß jemand wo hier der Unterschied
liegt?

Auch der neue SPI-Mode ist wirklich eine tolle Sache.
Aber eine Frage habe ich dazu noch:
Wenn man jetzt z.B. einen AVR programmieren möchte, muss man sich
zuerst synchronisieren. Das bedeutet, dass man versucht den
Programmiermodus zu aktivieren. Gelingt das nicht, so ist der
AVR-Prozessor und das Programmiergerät nicht synchron und man muss die
Clockleitung einmal high und einmal low pulsen und dann nochmal
versuchen den Programmiermodus zu aktivieren. Das Ganze wiederholt man
maximal 32-mal.
Hier besteht natürlich die Frage: Ist es möglich die Clockleitung
einmal kurz einzeln zu pulsen oder nicht?

Fragen über Fragen, aber die meisten (so wie ich) halten den Baustein
wahrscheinlich noch nicht in der Hand.

Tschüss

Martin

von Thomas (Gast)


Lesenswert?

@Martin

also ich bin gerade dabei mir eine LP-Design für den neuen FT2232C
auszudenken. Bin mir eben wegen der Beschaltung nicht so sicher:
TCK/SK wird mit SCK verbunden
TDI/DO wird mit Mosi verbunden
TDO/DI wird mit Miso verbunden
TMS/CS wird mit Reset verbunden
reicht es diese vier Leitungen an den Channel A anzuschließen?

Woher hast Du denn die ganzen Infos zwecks synchronisieren usw.???
Steht das irgendwo bei FTDI?
Kannst Du mir bitte mal einen Link schicken...?

Danke Thomas

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Die Ausgänge des FTDI würde ich jeweils mit einem ca. 250Ohm Widerstand
schützen.
Der FTDI sollte ja später als Programmiergerät fungieren und hier
könnte es passieren, dass der Benutzer des Programmiergerät falsch auf
des Zielsystem aufsteckt.

Ich habe dir ein Bild mitgesendet. Das mit dem Synchronisieren steht im
Punkt 3.
Leider habe ich hierfür keinen Link.

Aber ich versuche es zu erklären.
Die Daten werden mittels Clockleitung in den Prozessor hineingeschoben.
Jeweils 4 Byte = 8Bit *4 = 32Bit ergeben einen gesamten Befehl.
Wurde der Reset aktiviert, ist der Prozessor bereit über die Pins
Befehle zu erhalten. Es kann jedoch durch Störeinflüsse oder externe
Beschaltungen dazu kommen, dass der Prozessor auf der Clock-Leitung,
während dieser in den Reset-Modus wechselt, einen Puls erhält und
diesen natürlich als Clock wertet. Durch so einen Puls ist der
Prozessor nicht mehr synchron mit der SPI, was bedeutet, dass man hier
wieder synchronisieren muss. Weil es 32-Bit sind kommt man bei der
Synchron-Wiederholung auf maximal 32.

Tschüss

Martin

von Martin (Gast)


Lesenswert?

Ist es vielleicht möglich, dass man irgendwo ein Testsample herbekommt?

Gruss Martin

von Steffen (Gast)


Lesenswert?

@Martin

Der Unterschied zwischen dem syncr. und asyncr. BitBang-Mode besteht
darin, dass im asyncr. Mode die Daten entsprechend der eingestellten
Baudrate gelesen und in den Empfangspuffer geschrieben werden. Egal, ob
gerade Daten im Sendepuffer befinden oder nicht. Ist natürlich Schei***,
wenn man eine syncrone Schnittstelle nachbilden will, da man seine
Sendedaten erst im Empfangspuffer suchen muss. Bein syncr. Mode (wird
nur vom 2232 unterstützt) werden nur dann die Zustände der Pins in den
Empfangspuffer übernommen, wenn ein Byte aus dem Sendepuffer auf den
Port geschrieben wird. Damit kann man per Bytefolge so gut wie jeden
syncronen Bus einfach nachbilden.

Die einzelnen Clockimpulse kannst Du natürlich mit kurzen
Write-Sequenzen im BitBang-Mode generieren.

Steffen

PS: Bzgl. Beschaffung, da könnte man doch eine Sammelbestellung
organisieren. in den nächsten Tagen müsste ich so oder so ein paar
Teile bei Segor bestellen. Das Einzelstück kostet knapp unter 10,-e. Ab
10 Stück wird es günstiger.

von Manuel Jung (Gast)


Lesenswert?

Wie siehts denn jetzt aus? Ich plane ähnliches, bin aber noch nicht so
erfahren, aber anscheinend ist die Sache bei euch im Sand verlaufen und
ich muss es auf eigene Faust durchziehen? Irgendwie brach dieser Thread
abrupt ab :-(
MFG
Manu

von Steffen (Gast)


Lesenswert?

Im Sand verlaufen ist die Sache jedenfalls bei mir nicht. Bis jetzt bin
ich nur nicht dazugekommen.

Was die Sammelbestellung anbetrifft, da gilt mein Angebot immer noch.

Steffen

von Axel Stab (Gast)


Lesenswert?

Hallo Leute,

ich arbeite bereits mit dem FT232BM (im RS-232 Modus), da ist der
Bitbangmode aber nicht so toll, habe ich gehört. Bin an
Software&Erfahrungsaustausch in Sachen 2232C interessiert, v.a. für
SPI-Zwecke im isochronen Modus. Theoretisch sollte man ein paar 'zig
Byte im Mikrosekunden-Bereich auffrischen können, das ergibt ganz
andere Möglichkeiten als das Einzelbyte-Gepopel über die RS-232.

Idealerweise sollte die Anbindung mit C# geschehen (da gibt's ja auch
schon etwas Code von FTDI). Kann auch bei der Beschaffung behilflich
sein, würde ein paar Samples mitkaufen, und Segor ist bei mir um die
Ecke.

Axel

von Sebastian Schatzl (Gast)


Lesenswert?

hallo leute,

arbeite gerade mit nem kollegen daran, den ftdi2232c auszutesten,
da wir ihn als usb interface fuer das programmieren eines xilinx
fpgas ( spartan3e oder virtex II ) verwenden wollen, und um
diverse pins eines prototypen auf hi oder lo zu ziehen.

uns ist jetzt aufgefallen, dass verschiedene eeprom progs (mprog etc.)
bisweilen verschiedene ergebnisse beim auslesen zustande bringen.

desweiteren werden infos wie serial number anscheinend willkuerlich
ins eeprom verfrachtet ( heisst an verschiedenen adressen ) ...

und seit kurzem haben wir das problem, dass die infos wie manufacturer
ID etc. immer für beide devices ( ein ftdi2232c besteht ja aus 2x
ftdi2232bm im grunde ) gleichzeitig geschrieben werden ... und naja
ein device anhand solcher merkmale zu identifizieren wenn beide gleich
sind ist so eine sache ... vielleicht hat da wer ne loesung, ohne
eeprom ausloeten wenn geht ;)

2tes problem ist die oft widerspruechliche dokumentation von seiten von
ftdi ...
wuerden gern den bit-bang modus setzen ... laut html help fuer die
c++ functions gibz da nur die moeglichkeit denselbigen aus/ein
zuschalten, allerdings gibz ja wie ihr wisst einen haufen (5 oder 6)
moeglichkeiten den bitbang modus zu setzen ... nur finden wir die
passende c++ funktion in keiner lib ... hat da vielleicht auch wer
abhilfe ... bit-bang aus/ein ist zu wenig fuer unsere zwecke !


lg,
sebastian

von Matthias Huber (Gast)


Lesenswert?

Hallo,
ich wäre auch einen solchen Interface interessiert. Ich plane gerade
eine Schaltung mit einem ATmega128, da käme ein kombiniertes
SPI/UART-Interface über USB gerade recht. Ich würde mich dann auch an
der Sammelbestellung beteiligen.
Gruß, Matthias

von Sebastian Schatzl (Gast)


Lesenswert?

haben schon ein developer kit + 10 solcher chips
testprogramme laufen auch problemlos
aba selbstgeschriebener c++ code macht einiges an problemen

z.b. ein in delphi programmiertes spi sample kann problemlos bitbang
mode einstellen ... unser c++ code mit FT_SetBitMode() kann das
irgendwie nicht, gibt aber trotzdem immer FT_OK zurueck ...
fade gschicht!

vielleicht hat da ja jemand die richtige .dll und .lib und .h datei
zur hand haett, waer uns sehr geholfen!


g,
sebastian

von Thomas (Gast)


Lesenswert?

Hi,

ich habe auch den FT2232C mit einem ATMega128 kombiniert. Wollte dann
einfach mal testen, ob es eine Möglichkeit gibt, den ATMega128 über das
SPI-Interface zu programmieren, wenn möglich ohne dafür eigene Software
zu schreiben. Weiß von Euch jemand ob dies möglich ist? Genauso das
JTAg-Interface, kann man damit den ATMEGA128 hardwaremäßig debuggen,
sowie mit dem JTAG ICE?

vielen dank für Eure Hilfe...

Ciao Thomas

von Axel Stab (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Thomas,

natürlich kann man den Mega128 über JTAG oder SPI programmieren, steht
doch im Datenblatt. Prinzipiell sollte es auch open source Projekte zu
dem Thema geben (mal bei avr-freaks.net schauen). Aber das wird wohl
trotzdem relativ mühsam, und es erscheint mir auch wenig sinnvoll - der
SPI-Programmer ist doch wirklich billig, auch der JTAG-Emu ist
bezahlbar. Falls Du's Dir trotzdem antun willst: vielleicht helfen Dir
die angefügten Oszillogramme.

Gruß

Axel

von Sebastian Schatzl (Gast)


Lesenswert?

hallo axel,

fuer eigenbau projekte stimmt es sicher, dass ein jtag programmer
vielleicht sogar guenstiger kommt -> nur wenn wir fuer die firma
ein projekt machen, solls moeglich kundenfreundlich sein, d.h. der
kunde soll keine extra hardware brauchen und auch keine serielle
schnittstelle ... da is der zusaetzliche aufwand mehr als
gerechtfertigt ...

lg,
sebastian

von Thomas (Gast)


Lesenswert?

Hi Axel&Sebastian,

Axel trifft genau den Punkt. Leider muss es so sein. Wollte aber mal
wissen, ob Ihr eine Möglichkeit seht zum Beispiel WINAVR oder
AVR-Studio zum Programmieren über USB mit dem FT2232C und der
SPI-Schnittstelle zu benutzen. Oder muss man dafür eigene C oder Delphi
Programme schreiben?

Andere Frage:
bin gerade dabei meinen EEProm mit Mprog2.0 das zweite Mal zu
programmieren. Nach dem ersten Mal wurde mein Chip nicht mehr vom
System erkannt. Was muss man bei der VID/PID beachten, damit dies nicht
mehr vorkommt. Wollte den Channel A im MPSSE Modus betreiben. Welche
Einstellung muss ich da wählen? Der Channel B soll als RS232-Wandler
fungieren. Was hat es mit der Plug&Play-Option auf sich?

Danke für Eure Hilfe und Bemühungen...

ciao Thomas

von Tomasz (Gast)


Lesenswert?

@Thomas:
Wenn du VID/PID änderst, dann musst du das auch im Treiber eintragen
und diesen installieren, dann geht er wieder.

@Sebastian Schatzl:
Es handelt sich um eine Chip mit zwei Kanälen, somit mach eine ID sinn.
Du kannst im Treiber jedem Kanal einen eigenen Namen zuordnen, der dann
im Hardware Manager (unter Windows) die Zuordnung erleichtert.

von Manuel Jung (Gast)


Lesenswert?

Moin,
So ich habe mal einen Schaltplan mit dem FT2232C entworfen. Ich möchte
dafür eine eigene Platine benutzen, damit man sie evt. bei
verschiedenen Projekten zunächst nutzen kann(Momentan ist ein DMX Tx/RX
geplannt, ich weiß die gibts schon, aber nicht so wie ich will g). Ich
will also einen AtMega32 über ISP programmieren, vt. später auch JTAG
und dann über SPI DAtenübertragen... Hab zwar noch nir sowas gemacht,
aber das wird schon noch, bisher hat alles was ich angefange geklappt.
Am Layout des FT2232C feile ich noch. Es soll auf jeden Fall Singleside
bleiben, ums einfacher zu ätzen und bauen können... naja ich hab mit
einer Verbindung leider immernoch probleme, aber das wird schon
noch...
MFG
Manu

von Manuel Jung (Gast)


Angehängte Dateien:

Lesenswert?

Hmm, mist das bild hat der noch noch hochgeladen...
MFG
Manu

von Sebatsian Hültenschmidt (Gast)


Lesenswert?

Hat jemand es mal mit linux versucht?
Ich haben das problem, ,das ich nicht weiss, wie ich den zwiten kanal
öffnen soll. Es gibt zwar solche felder wie interface, index in_ep,
out_ep usw aber es ist mir nicht ganz klar wie es gehen sollte und
meine tests führen immer dazu, das ich zwar das devive öffnen kann aber
ich bekomme beim schreiben immer -1 zurück.
ACHTUNG ich benutze die libftdi-0.4.

von Sebatsian Hültenschmidt (Gast)


Lesenswert?

ok, erledigt.

für alle:


ftdi_init(&ftdigeneric);

ftdigeneric.interface=1;
ftdigeneric.index=1;
ftdigeneric.out_ep=0x83;
ftdigeneric.in_ep=0x04;

f = ftdi_usb_open(&ftdigeneric, 0x0403, 0x6010);

schon gehts, eigentlich logisch, oder?

von Michael Günther (Gast)


Lesenswert?

Hallo  an alle!

programmiere gerade mit dem FT2232C und habe folgendes Problem
festgestellt:

Im Modus SPI habe ich ein Slave-Device an den FTDI gehängt. Dieser
Slave benötigt aber kein gesendetes datenwort. Er schiebt seine daten
immer nur an den FTDT - ohne vorher eine Adresse oder sonat was zu
empfangen. Im Datenblatt des FTDI steht aber, dass mindestens 2 Bit
geschrieben werden müssen (Read-Funktion). Auch dabei wird schon der
Chip-Select aktiviert und das ist natürlich für einen reinen
Read-Only-device scheisse.

Wer kann helfen??

von Stephan (Gast)


Lesenswert?

Hab das Datenblatt gerade vor mir liegen, aber wo steht das mit den 2
Bit?

von Marco S. (masterof)


Lesenswert?

abo

von Michael Günther (Gast)


Lesenswert?

Hi alle zusammen,

im programmers Guide auf Seite 20 (SPI_Read) steht im Parameter
dwNumControlBitsToWrite ein gültiger Bereich ab 2 Bits. Soll das
heißen, daß 2 Bits an das SPI-Device geschrieben werden und dann
gelesen wird? Ich steuere einen SPI-Slave an (MAX6675), der nur ein
16Bit Datenwort ohne jegliche vorherige Adressierung zurücksendet. Er
reagiert nur auf den ChipSelect und den Takt. Bei anderen
SPI-Bausteienen muß immer eine Kombination aus Adresse und Daten
gesendet/empfangen werden.

von Keith Larson (Gast)


Lesenswert?

Sorry for the small intrusion,
This message is for Michael Guenther

Michael,

I dont know which end has the problem, but I cant seem to send an email
to the address 'mguenther@ac-magnetic.de'

Best regards
Keith Larson

von Keith Larson (Gast)


Lesenswert?

Hello again Michael

I hope the other people dont mind, but I simply cant seem to send
anything to your email.  So, per your suggestion I am sending my reply
via this news group.  Its probably some insane goverment thing.

Best regards
Keith Larson
DSP and Analog Consultant
Lincoln, Ma 01773

------------------------
Hello Michael

I am not totally following your question and observations so I may need
to make a guess or two.  If I miss, please try to fill in the blanks.

In many cases when a breakpoint is encountered using the JTAG debugger
you might want the entire chip to stop.  For example a serial port
device connected to the DSP would stop in its present logic state when
an emulator halt occurs.  That is, the clock domains, peripherals and
external devices would become frozen.  When the debugger advances to
the next state you would then want the peripheral and external device
to continue synchronously and in lock step.  BTW, this is not always an
easy task as the debugger restart may depend upon the present state of
the chip.

Anyhow, the undocumented feature you want to know about is that the top
two bits of each peripherals global control register contains 2 hidden
bits 'FREE' and 'SOFT' that can be used to override the emulators
peripheral clock domain control.  I cant recall exactly how these bits
worked, but there are only 4 combinations. One bit was called FREE and
the other SOFT.  I seem to recall that if the two bits are set the
peripheral will free run, and if they are clear the peripheral will
halt.  The 'FREE' mode bit is particularly nice when you want to use
the timer or other peripherals as external timing references.

The other possible problem you may be having is that the serial port
can be under run or overrun.  Basically if you fail to service the
receive or transmit notifications the serial port will halt.  Then, on
the next access you may get a partial transmit or receive where the
data is shifted left or right.  This is not a horrible problem for dumb
devices like an AIC where you would only get an audible pop when
debugging (hope for no operational mode problems!).  However when you
are communicating with a 'smart' external device this can create
garbled messages!!!  I believe the device you are using will fall under
this category.  Luckily it appears that you can over-stuff the
transmitter or over-read the receive port without creating problems.

Good luck in your project.  For myself, I started a VC33 + USB
interface project over a year ago and though I got this up and running
have not done much with it since.  The board is self powered from the
USB and I had all the DSK tools up and working.  Anyhow, I got too busy
with my other projects... that will hopefully begin to pay back more as
time goes on.  Maybe you are interested.  My business partner and I
will be selling direct and offering several new products in the near
future.

www.woofertester.com

Hope this helps
Best regards
Keith Larson
DSP and Analog Consultant
Lincoln, Ma 01773

------------------------------------------

Guenther Michael wrote:

Dear Mr. Larson,

my name is Michael Günther ant actualy I'm working with a selfmade
DSP-board with the VC33 included.So I like to understand DSP technique
with this nice chip.

While designing an SPI application (3-wire) I have some trouble with
the serial port. I use an SPI-chip ENC28J60 (it's an ethernet driver
chip), which basicly I like to communicate with 3-wire SPI. The need is
8MHz minimum clock speed. I tried several examples for serial port - in
TMS-code and in C. I teched the examples in Rulph Chassain's book for
the C31 DSP and some application notes (TI) for accessing DAC's and
ADC's with SPI interface.

I connected a Logic analyser (ANT16 from USB Instruments) at the Pins
FSX, DX, DR and CLKX, I sent xdata byte out of the port and analysed
it, but the FSX pin seems to work only for 15 bits, if I try to send
16bit of data word.

My problem is to get the right parameter to send a 16bit xdata word out
of the serial port without a continue sending - I like to send this data
in a 1 word block and have a breakpoint after this word transfer.

I have seen a nice example in application note:

    ldi  05555h,R5
    sti  R5,@sport
    ldi  14h,RC
wt: rptb $+2
    nop
    nop
    b    loop

This should stretch the FS edge change some clock cycles later. If
there is a breakpoint after this routine I get nothing with the locgic
analyser.....

Could you help me in accessing a SPI device with the VC33?

Thank you very much, Michael Günther

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.