PIC16F737, SPI, extern ADC
Postat: 16 april 2006, 19:19:59
Tjosan
Jag har en AD677 som jag försöker interfacea mot SPI-porten på min PIC.
677an har seriellt interface som vill ha 17 klockpulser på in-klockpinnen per konvertering
Första klockpulsen gör ingenting för interfacet, men de nästkommande 16 shiftar ut data på ut-datapinnen och skickar ut klocksignaler på ut-klockpinnen, bredden på in-klockan påverkar inte utklockans bredd
Jag har kopplat ut-datapinnen till SDI på picen och ut-klockpinnen till SCK på picen
SSPn är konfigurerad som SPI-slave utan SS-pinne
In-klockpinnen hade jag från början kopplat till en vanlig utgång på picen och fixade klockpulser med mjukvara
Så långt fungerar allt finfint, men jag ville ha mera fart i det hela så jag bestämde mig för att använda pwm-utgången till att generera klocksignal så att man kan göra annat under tiden datan tas emot
Picen körs med 8MHz intern oscillator och jag räknade ut att högsta pwm-frekvensen som går att få blir 2MHz, helt ok hastighet
Konfigurerade för ca 50% pulsbredd och 2MHz, fungerar fint, får ut en snygg signal på pwm-pinnen
Fixade mjukvarutiming och grejjer så att jag får ut 17 klockpulser åt gången, fungerar finfint
Får ut 16 pulser tillsammans med datan ur adcn
Men... jag får bara ut en byte ur SSPn och den är helt rätt men det är allt jag får, den andra byten är som bortblåst
VARFÖR?!?!?!?
Efter en hel del testande och mätande märker jag att det fungerar fint med samma setup fast med 1MHz pwm, får 17 pulser ut från picen, 16st in i picen tillsammans med datan
Klockpulserna som kommer från adcn är ca 400nS höga och 80nS låga, som jag förstått det av "Electrical specifications" så räcker det med 40nS hög/låg för att picen ska hinna med
Så... ja, vad har jag missat eller vad handlar det om?
Jag har en AD677 som jag försöker interfacea mot SPI-porten på min PIC.
677an har seriellt interface som vill ha 17 klockpulser på in-klockpinnen per konvertering
Första klockpulsen gör ingenting för interfacet, men de nästkommande 16 shiftar ut data på ut-datapinnen och skickar ut klocksignaler på ut-klockpinnen, bredden på in-klockan påverkar inte utklockans bredd
Jag har kopplat ut-datapinnen till SDI på picen och ut-klockpinnen till SCK på picen
SSPn är konfigurerad som SPI-slave utan SS-pinne
In-klockpinnen hade jag från början kopplat till en vanlig utgång på picen och fixade klockpulser med mjukvara
Så långt fungerar allt finfint, men jag ville ha mera fart i det hela så jag bestämde mig för att använda pwm-utgången till att generera klocksignal så att man kan göra annat under tiden datan tas emot
Picen körs med 8MHz intern oscillator och jag räknade ut att högsta pwm-frekvensen som går att få blir 2MHz, helt ok hastighet
Konfigurerade för ca 50% pulsbredd och 2MHz, fungerar fint, får ut en snygg signal på pwm-pinnen
Fixade mjukvarutiming och grejjer så att jag får ut 17 klockpulser åt gången, fungerar finfint
Får ut 16 pulser tillsammans med datan ur adcn
Men... jag får bara ut en byte ur SSPn och den är helt rätt men det är allt jag får, den andra byten är som bortblåst
VARFÖR?!?!?!?

Efter en hel del testande och mätande märker jag att det fungerar fint med samma setup fast med 1MHz pwm, får 17 pulser ut från picen, 16st in i picen tillsammans med datan
Klockpulserna som kommer från adcn är ca 400nS höga och 80nS låga, som jag förstått det av "Electrical specifications" så räcker det med 40nS hög/låg för att picen ska hinna med
Så... ja, vad har jag missat eller vad handlar det om?