[30 point] for at få hjælp

T

tension885

Guest
hej,
Jeg vil slutte min AT89c51 med en SPI slave (denne slave støtter SPI mode 0,0).siden AT89c51 har ingen hardware baseret SPI, så jeg er nødt til at gøre programmeringen i software til SPI master.
Jeg viser dig SPI rutiner for SPI master.but Jeg er forvirret over SPI transportformer.
Jeg har brug for nogle retningslinjer .... venligst fortælle mig, at
er denne kode korrekt??dvs Kan det kommunikere med SPI slave (støtteprogram mode 0,0)??
behage hjælp mig sin meget meget presserende

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Gråd eller meget trist" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Gråd eller meget trist" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Gråd eller meget trist" border="0" />

: cry
30 point, vil blive belønnet for at hjælpe

Code:
# include <reg51.h>sbit miso = P2 ^ 0;

sbit mosi = P2 ^ 1;

sbit CLK = P2 ^ 3 / / ur = 0 i starten

sbit cs = P2 ^ 2;void spi_write (usignerede CHAR dat)

(usignerede CHAR I, c;c = dat;

for (i = 0; i <8; i )

(

hvis ((C & 0x80) == 0x80)

mosi = 1;

anden

mosi = 0;CLK = 1;

c = c <<1;

CLK = 0;

)

)

usignerede CHAR spi_read ()

(usignerede CHAR I, dat;for (i = 0; i <8; i )

(

dat = dat <<1;

CLK = 1;

if (miso)

dat = dat 1;

CLK = 0;

)

tilbagevenden dat;

)/ / du fyre gennemgå min kode og hjælpe mig
 
Hej,
Din kode ser ud til at være ok, bortset fra MISO skal være inited for høje.Hvad er din tvivl om SPI?
Hilsen,
Laktronics

 
hvor MISO shud være høj???
min tvivl er
", Vil denne kode arbejde med en slave, som støtter SPI mode 0,0???"

 
Hej,
Siden MISO er et input PIN-kode, er du nødt til at sætte den højt i begyndelsen selv at konfigurere den som input.Selvom samtidig sende de data, du ikke ser på MISO, data fra slave vil komme til MISO og hvis bit er lav, kan den belastning MISO output fra slave.
Mode 0 henviser til Ur fase = 0 og ur polaritet = 0 og det er, hvad din software bruger.Også kan du gøre din CS signal lav i karakter modtage eller sende periode, og det kan være forbundet med SS-signalinput af slave.
Har du specifikationer af slave enhed, du vil oprette forbindelse til?
Som pr dit software, du har til at forbinde MISO til MISO, MOSI til MOSI CLK at CLK og CS-til SS-mellem Master ans Slave terminaler.Men du er nødt til at sikre, at det på slave side også signaler er komplementære, når de er tilsluttet direkte (det er, TX til RX-forbindelsen skal sikres).

Hilsen,
Laktronics

 
Da de fleste SPI kommunikation med fuld duplex, skal du også læse MISO pin når din er videregivende.De indberetter funktion skal være noget lignende dette
Code:usignerede CHAR spi_write (usignerede CHAR dat)

(

usignerede CHAR I, C, retval = 0;c = dat;

for (i = 0; i <8; i )

(

retval = retval <<1;hvis ((C & 0x80) == 0x80)

mosi = 1;

anden

mosi = 0;CLK = 1;if (miso)

retval = retval 1;c = c <<1;

CLK = 0;

)

tilbagevenden (retval);

)

 
Hej,

Som CMOS har fortalt hvis du laver en kombineret læse / skrive-funktion, kan du muligvis ikke brug for en separat rutine for læse og skrive.Softwaren kan altid sende en dummy kode mens kun læser data, og det kan da godt glemme den returnerede værdi, når kun skriftligt.
Men i den kode, som CMOS, er det nødvendigt at tilføje skift af retval og også picking up af MISO bit der skal gøres, når uret er høj.Din oprindelige kode er perfekt fra det synspunkt.Men du er nødt til at holde MISO pin høj selv sende siden output fra slave vil være der altid, om du vil det eller ej.Hvis du kun er interesseret i at skrive, er det heller ikke nødvendigt, at du har læst MISO pin.

Hilsen,
Laktronics

 
laktronics wrote:

Hej,Som CMOS har fortalt hvis du laver en kombineret læse / skrive-funktion, kan du muligvis ikke brug for en separat rutine for læse og skrive.
Softwaren kan altid sende en dummy kode mens kun læser data, og det kan da godt glemme den returnerede værdi, når kun skriftligt.

Men i den kode, som CMOS, er det nødvendigt at tilføje skift af retval og også picking up af MISO bit der skal gøres, når uret er høj.
Din oprindelige kode er perfekt fra det synspunkt.
Men du er nødt til at holde MISO pin høj selv sende siden output fra slave vil være der altid, om du vil det eller ej.
Hvis du kun er interesseret i at skrive, er det heller ikke nødvendigt, at du har læst MISO pin.Hilsen,

Laktronics
 
Hej,
Ja, den kode, som Mr.CMOS kan bruges som en fælles master side funktion for fuld duplex eller halv duplex SPI.Du er nødt til at definere SPI stifter samt indstille MISO højt (for at gøre det til en indgang) før funktion kaldes.

Hilsen,
Laktronics

 
thanx en masse søde frends ....Jeg har lært mange ting fra dig .. thanx igen ..
give
30 til hver af u

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
[/ code]

 
Hej,
Det er virkelig pænt af dig, Tak for.Men hvis det betyder, at du mister så mange punkter fra lommen, så lad mig det vide, hvis du har brug for point, jeg kan altid donere dig tilbage.
Hilsen,
Laktronics

 
Tak ... Lad mig vide, hvis du har brug for point når som helst og jeg
vil være glad for at give dig tilbage.

 
Jeg ønsker blot at vide, om både den kode, der fungerer, og hvad er ændringen i den anden kode er nødvendig [venligst ændre det og sende det].

 
Den kode, som jeg skal arbejde.Eneste du skal gøre, er at gøre MISO højt på magt-up.

 

Welcome to EDABoard.com

Sponsor

Back
Top