 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
woops Član


Pridružen-a: Sre 03 Mar 2010 23:23 Prispevkov: 19 Aktiv.: 0.10 Kraj: Ljubljana
|
Objavljeno: Tor Jul 27, 2010 11:30 am Naslov sporočila: Težave z SPI komunikacijo PIC18F4585 in ATA6870 |
|
|
Živjo!
Razvijam software za polnilec Li-Io baterij z uporabo PICa s hardwarskim SPI vmesnikom in ATA6870.
http://www.datasheetdir.com/ATA6870-PLPW+download
Čip ATA6870 mislim da ima izpolnjene vse delovne pogoje, napajanje od baterij, MISO in IRQ pullup, MFIRST 1. čipa je vezan na POW_ENA in vse ostalo tako kot je v datasheetu od navedenega čipa.
PIC se napaja preko ATA čipa in deluje na 3.3V s frekvenco 2Mhz ker ima CLKO (Clock output) delilnik s 4, tako da zagotavlja frekvenco sistemske ure za ATA čip frevence 500kHz, kot je navedeno v datasheetu.
SCK (Spi clock) ima prav tako delilnik osnovnega takta PICa in sicer 4, 16, 64. V tem primeru sem nastavil delilnik na 16, čeprav naj bi bil SCK = CLKO / 2 (250kHz), je v tem primeru tako 125kHz. Mislim da bi moralo tudi v tem primeru delovati po podatkih s tabele na strani 21 datasheeta, čeprav imam jaz na vezju trenutno 3 ATA čipe?
Nikakor ne uspem vzpostaviti komunikacije med čipoma. Ko z osciloskopom spremljam signale MOSI (SDO), Chip select, SCK jevse vredu, IRQ je stalno na 1, MISO (SDI) se pa nekam nenavadno odziva, glede na to da ima pullup, ga ATA drži na nuli, pred vsakim pošiljanjem podatkov pa skoči na nek vmesni nivo 1,6V in tam ostane prve 4 (od 8) SCK takte, nato skoči nazaj na 0 (slike priložim kasneje). Popolnoma enako se dogaja ko prekinem povezavo s picem in pullupom.
Ima kdo kaj več izkušenj na tem področju in bi mi lahko dal kak nasvet/napotek? Hvala!
Še del programske kode v mikroC-ju:
Koda: |
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV16, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
OSCCON = 0B11011111; // Sleep mode/Stand By; 3 biti za OSC speed
TRISC = 0B00011000; // RC0 izhod za ATA_CS, RC3 - CLK mora imeti TRIS 1 (PDF 138) , RC4 SPI input
PORTC = 0B00010001; // CS0=1 deselect ATA chip
|
Testno:
Koda: |
RC0_bit=0;
SPI1_Write(0x0);
SPI1_Write(0x0);
SPI1_Write(0x0);
SPI1_Write(0x1);
SPI1_Write(0x0);
SPI1_Write(0xC);
PORTD=ATA_read();
PORTD=ATA_read();
RC0_bit=1;
Delay_ms(5);
|
|
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Tor Jul 27, 2010 9:14 pm Naslov sporočila: |
|
|
Nisem se šel poglabljat v tvojo kodo, ampak imaš več konfiguracij komunikacije pri SPI vodilu. Poglej kako jih nastavljaš v poglavju o SPI v PIC datasheetu. Različna SPI periferija podpira različne mode. V osnovi se gre za to ali slave čip reagira na padec ali porast signala clocka...
Preveri v datasheetu tega slave čipa, kateri mode je pravi. _________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
woops Član


Pridružen-a: Sre 03 Mar 2010 23:23 Prispevkov: 19 Aktiv.: 0.10 Kraj: Ljubljana
|
Objavljeno: Sre Avg 11, 2010 1:44 pm Naslov sporočila: |
|
|
Mal premora, zdaj pa nadaljujem;)
Še enkrat sem preveril SPI povezave in vse je OK. Spi mode je pravilno konfiguriran, zajem na pozitiven prehod, negiran chip select. Vse kar je drugače je to da je SCK pol manjši od navedenega za do 5 ATA čipov (250kHz), za več je navedena nižja frekvenca (125kHz kot je v mojem primeru), tako da predvidevam da bi tudi v primeru s 3mi ATA čipi moralo funkcionirati.
Na MISO se ob začetku prenosa se za cca 2 SCK pojavi nek nenavaden poševen signal, ki ni pravokotne oblike.... mogoče to kaže na to da je čip fuč? |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
|
Nazaj na vrh |
|
 |
woops Član


Pridružen-a: Sre 03 Mar 2010 23:23 Prispevkov: 19 Aktiv.: 0.10 Kraj: Ljubljana
|
Objavljeno: Sre Avg 11, 2010 7:38 pm Naslov sporočila: |
|
|
Tisti signal je verjetno prehodni pojav, ki se pojavi ob nastopu Chip selecta, nivo je zelo nizek in najverjetneje ne pomeni nič.
Linije so direktno povezane, čip je aktiviran, saj dobi PIC napajanje preko njega (CS_N, CLK, SCK, SDI-MISO, SDO-MOSI).
Pregledal sem tudi program za ATMega in imam podobno. Saj tudi ko želim brati naprimer statusni register ni nobenega odziva.
Mislim da sem že izčrpal vse možnosti pred menjavo čipa, bom najprej to preizkusil in upam da bo kaj iz tega.
Na srečo imam dovolj dostopne linije, da jih lahko pomerim, saj če je več ATA čipov in naslavljaš le prvega, število nebi smelo vplivati, saj spo vezani zaporedno in ni nekega zaključka za zadnji čip, lahko se le prekine povezava do zgornjih čipov.
Obstajata 2 testna pina, napisano pa ni nič na to temo. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|