Hallo allemaal,
Ik ben een paar dagen bezig met PIC's en SD kaartjes. Jammer genoeg heb ik nog geen enkele keer een goed resultaat bekomen.
Ik probeer gewoon de voorbeelden die mikroE heeft van MMC kaartjes te maken met behulp van mijn EASYPIC6 en deze modulle: http://www.mikroe.com/eng/products/view/370/microsd-card-proto-board/ )
Als ik dit probeer kom ik steeds op merkwaardige dingen uit.
- Bij het voorbeeld "MCC_FAT16_test" krijg ik steets:
PIC-Started FAT16 not found - Bij het voorbeeld "MCC_FAT16_test" krijg ik als mijn 3V3 voeding van de SD-kaart aanstaat:
PIC-Started MMC Init-error Write-Error CID-error CSD-error Read-Error Test End. - En als ze uitstaat:
PIC-Started MMC Init-error Write-Error CID : FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE CSD : FFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE Read-OK ? Content-Error Test End.
CID en CSD zijn wel altijd anders.
Ik ben er 99,9% zeker van dat:
- de voeding en oscilator van de PIC juist is.
- de softwire in de PIC juist is.
- de SD kaart juist is aangesloten en 3V3 krijgt van de labvoeding.
- de SD kaart in FAT staat geformatteerd. (Is FAT = FAT16)?
Hopelijk weet iemand wat ik nog kan proberen of zie wat ik fout doe om de boel te laten werken.
Al vast bedankt voor jullie hulp,
Ruben H.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Is de kaart niet in FAT-32 geformatteerd?
Begin in ieder geval met een SD kaartje (Geen SDHC), geformatteerd met FAT16.
Niet alle libraries ondersteunen SDHC danwel FAT32...
(Als het een klein kaartje uit een camera is kan 'ie ook nog in FAT12 zijn geformatteerd...)
[Bericht gewijzigd door Arco op (21%)]
Bij het formatteren van de SD kaart kan ik op de PC kiezen tussen FAT en FAT32 als bestandssysteem. Is hier FAT = FAT16?
De librarie die ik gebruik ondersteund enkel FAT16.
[Bericht gewijzigd door zezemama op (19%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Als ik een kaartje gebruik dat niet SDHC is, zou hij dan wel moeten werken? Hoe weet ik of een kaartje ook SDHC is?
Nu is het een standaard SD kaartje van 2GB
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Een SDHC kaartje is > 2GB en er staat het SDHC logo op. (ipv alleen SD)
Een gewoon 2GB kaartje met FAT16 zou moeten werken.
Gebruik ik hier ook met een LV18FJ board van Mikroe. (Met de MikroBasic Pro compiler)
Mijn kaartje is dus niet SDHC maar werken doet hij ook niet. Met een 128MB kaartje van kingston in FAT16 doet het ook niet.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Alles wel goed aangesloten? Zo te zien heeft de Easypic6 geen on-board SD?
Easypic6 is een 5v systeem, dus er moet wel 5 <-> 3.3v aanpassing tussen SD en Easypic...
Op 22 juli 2010 22:08:09 schreef Arco:
Alles wel goed aangesloten? Zo te zien heeft de Easypic6 geen on-board SD?
Easypic6 is een 5v systeem, dus er moet wel 5 <-> 3.3v aanpassing tussen SD en Easypic...
EasyPic6 heefd inderdaat geen on-board SD.
GND EasyPic6 = GND PIC = GND SD kaart = GND labvoeding
5V EasyPic6 = 5V PIC
3V3 labvoeding = 3V3 SD kaart
gelijkaardig schema:
http://www.uploadarchief.net/files/download/sd%20cart.jpg
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Zou moeten werken. Misschien toch een foutje in de software of config settings?
Hier staat trouwens het schema van Mikroe zelf:
http://www.mikroe.com/eng/downloads/get/1118/mmc_ready_schematic_v100.…
http://www.mikroe.com/eng/products/view/528/mmc-ready-board/
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Op 22 juli 2010 23:14:04 schreef Arco:
Config settings? Als de SPI clock te snel loopt, werkt 'ie ook niet.
De config settings zullen wel juist zijn omdat deze mee worden opgeslagen in een mikroC voorbeeld.
Het ziu wel kunnen dat de SPI klok fout is. Dat verklaart misschien ook waarom hij soms raar doet.
Ik ben niet echt vertrouwd met SPI. Hoe kan die klok worden aangepast? In de software of in de configuration settings?
In de software staat wel:
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
omschrijving:
void SPIx_Init_Advanced(unsigned short master_slav, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge);
Als de klok alleen zo word gekozen zou het wel vreemd zijn dat er een fout in de software zit.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ik weet je kloksnelheid niet, maar de SPI moet <= 400kHz zijn tijdens initialiseren van het kaartje.
Daarna mag 'ie omhoog...
Nu staat de SPI klok op Fosc/64.
Ik heb een 8Mhz kristal gebruikt en bij config settings voor oscillator HS-PLL genomen. Dat word dus 32MHz.
De SPI klok word dus 500kHz??
Zou ie het nog fatsoenlijk doen op een klok frequentie van 8MHz?
Dan zou SPI klok 125kHz zijn.
Klopt dat allemaal?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Langzamer is geen probleem.
Ik heb het trouwens ook vaak op 500kHz geprobeerd, en dat werkte altijd.
(Maar het is niet gegarandeerd dat alle kaartjes dat doen...)
Bij een lagere frequentie begint het er al wat beter op te lijken.
PIC-Started
Init-OK
Write-Error
CID-error
CSD : 00002F9F87FFFFFFFFFFFFFFFFFFFFFF
Nu krijg ik dus wel Init-OK.
Nog 2 probleempjes,
- Die Write-error en CID-error.
- Na de CSD moet ie normaal nog wat versturen (Read-OK e.d.) Daar blijft die dus ergens hangen.
Wat zijn die CID en CSD precies? Wat kun je er mee doen?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Staat allemaal beschreven in de SD card specs:
http://alumni.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf
CID = Card IDentify register
CSD = Card Specific Data register
Nu krijg ik al:
PIC-Started
Init-OK
Write-OK
en daarna niets meer...
Het lijkt wel of hij vast loopt bij
mmc_error = Mmc_Read_Cid(data_for_registers);
Wat doet een PIC normaal bij het lezen van CID? Is er een lus waar hij in vast kan lopen? Wijst dit op een fout in de software?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Wat doet een PIC normaal bij het lezen van CID?
Ik ken de sourcecode niet, dus dat weet ik niet. De libraries van Mikroe zijn zowiezo wat lastig, omdat ze de sourcecode niet willen geven. (Je weet dus nooit exact wat een routine doet, of hoe)
Als je zegt welk demo project je gebruikt, kan ik wel eens kijken...
Ik gebruik MMC_test.
http://www.mikroe.com/eng/products/view/370/microsd-card-proto-board/
Gisteren lukte het om de SD kaart te initialiseren op 500kHz, vandaag dan weer niet..
Zeer vreemd allemaal
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Heb de Mikrobasic versie geprobeerd hier, werkt prima... (op 512Mb en 1Gb kaartje)
Zelfs op een 40MHz (=625kHz SPI) clock op een 18F67J10:

Weet je zeker dat je deze goed hebt gezet? (C0 vervangen door juiste pin):
// MMC module connections
sbit Mmc_Chip_Select at LATC0_bit ; // always use latch (PIC18 family)
sbit Mmc_Chip_Select_Direction at TRISC0_bit;
Op 24 juli 2010 12:33:25 schreef Arco:
Weet je zeker dat je deze goed hebt gezet? (C0 vervangen door juiste pin):
// MMC module connections sbit Mmc_Chip_Select at LATC0_bit ; // always use latch (PIC18 family) sbit Mmc_Chip_Select_Direction at TRISC0_bit;
Ja, ik heb het ook eens geprobeerd in de basic versie en nog altijd niets.
Volgens mij kan het dus enkel aan de geheugenkaartjes liggen.
Ik gebruik deze 2:
Ik ben er ook 100% zeker van dat ze in FAT16 staan en dat de hardware juist is.
Ik heb gelezen dat de tweede geheugenkaart een 4-bit geheugenkaart is... Die zal dan wel niet werken met SPI zeker?
En voor de eerste afbeelding heb ik die module van mikroe gebruikt. Zou het mogelijk zijn dat ze niet compatibel is met deze geheugenkaart omdat de pin configuratie van die kaartjes kan verschillen? of is dat nooit?
Welke geheugenkaartjes gebruik jij eigenlijk?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
SD kaartjes zijn 4 bits en SPI, afhankelijk van welke interface je gebruikt.
Ik gebruikte een Kingston 512MB en een Apacer 1GB...
Als je de kaartjes in een PC wel kunt gebruiken, zijn ze OK.
Dan moet het toch aan de schakeling liggen...
Heb je er rekening mee gehouden dat het niveau van de data lijnen maximaal 3,3V mag zijn en niet de 5V die standaard uit je easypic6 komt?
Ik moet beter lezen :|
[Bericht gewijzigd door gizmo17110 op (11%)]
