Forum: Mikrocontroller und Digitale Elektronik ARM LPC2387 - Trotz 72MHz CCLK nur ca. 500kHz bei Software-Pin-Toggle?!


von Alexander I. (daedalus)


Lesenswert?

Hallo,

ich arbeite gerade an einem System bei dem der LPC2387 verwendet wird. 
Entwicklungsumgebung ist KEIL µVision4. Ein Mitarbeiter sollte nun etwas 
abschätzen, was der Controller so "drauf" hat. Dazu gabs auch einen ganz 
einfachen Test:
1
//Pseudo-Code
2
int main()
3
{
4
PreparePorts();
5
while(1)
6
{
7
 TogglePin();
8
}
9
}

Er soll sich also einfach "vollgas" an einem PIN abtoggeln und sonst 
nichts machen. Mit dem Oszi ausgemssen gibt das gerademal jämmerliche 
400kHz hin! Das kann doch wohl nicht alles sein, oder?

Ich kenne mich mit dem Controller nicht so gut aus, ich hab nur mal 
testhalber in die PLL-Config reingeschaut und die sagt:

OSCEN=1
CLKSRC = Main Osc.
PLLCFG.MSEL = 12
PLLCFG.NSEL = 1
CCLKSEL = 4

Bei einem 12 MHz Quarz (MCB2300 Demo-Board) müsste das eine PLL-Frequenz 
von 288 MHz ergeben, die durch 4 geteilt 72 MHz CCLK ergibt. Das sieht 
soweit OK aus. Wenn ich beim KEIL ins Debugging gehe finde ich diese 
Werte auch unter Peripherals > Clocking and Power Control wieder. 
Scheint also alles in Ordnung zu sein, dennoch kommt mir das echt 
schneckenlangsam vor.

Kann das sein, dass man trotz 72 MHz Systemtakt nur 400 kHz am Pin 
schafft?

Weitere Frage::
Die JTAG-Programmiergeschwindigkeit kann ich nur auf maximal 500kHz 
einstellen... schafft man da auch irgendwie mehr? Scheint ja damit 
zusammenzuhängen, dass der Controller erst später auf die PLL 
umgeschaltet wird und zunächst nur der RC-Osziallator mit 4 MHz läuft.

Vielen Dank vorab.

von (prx) A. K. (prx)


Lesenswert?

Fast-I/O verwenden, oder wie immer die genau heisst. Die LPC2000 können 
die gleichen Ports einerseits über die (alten, langsamen) GPIOs, 
andererseits über die Fast-I/O ansprechen.

Der GPIO-Zugriff hängt zudem vom APB-Takt (PCLK) ab, die Fast-I/O nur 
vom AHB-Takt.

von Alexander I. (daedalus)


Lesenswert?

Es handelt sich um Pin2.0. Die beschriebenen Registern fangen alle mit 
FIO2... an, ich glaube das ist schon die Fast-I/O-Variante.

von Alexander I. (daedalus)


Lesenswert?

Fehler gefunden, der Kollege hat beim TogglePin() fleißig Bits 
geshiftet, da irgendwelche Macros verwendet wurden. Jetzt hab ich 6,66 
MHz erreicht. Das sieht schon VIEL besser aus. Danke mal soweit.

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.