-
Data: 2016-01-01 21:40:22
Temat: Re: Karta SD - dziwne zachowanie zasilania
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2016-01-01 o 19:01, Marek pisze:
> Ale tak na marginesie.nie stosowałem kluczowania Vcc kart sd i nie
> kojarzę abym napotkał przy kartach sd opisywany przez Ciebie problem.
> Podejrzewam, ze być może jednak driver spi jaki używasz nieprawidłowo
> inicjuje kartę np. brak spi lowbitrate przy inicjalizacji (przyspieszyć
> spi można dopiero po inicjalizacji).
Hmm... Masz może działającą wersję mmc.c?
Bo siedzę na tym już kolejną godzinę i za nic nie mogę zmusić ukłdu do
stabilnej pracy. W kółko wywala albo bład 3, albo 13. Jeśli już ruszy,
to od wielkiego święta i nie ma żadnej pewności, że stan taki utrzyma
się po kolejnym resecie.
Obecna konfiguracja wygląda następująco:
1) Osoba linia zasilania dla karty, kluczowana tranzystorem i filtrowana LC.
2) Wszystkie linie karty podciągnięte do tej linii rezystorami 4,7k. To
znaczy wszystkie z wyjątkiem DC - ta jest podłączona do ogólnego VCC.
3) w funkcji power_on() konfiguruję wyjścia i ustawiam PPS. W
power_off() wyłączam funkcję PPS dla MOSI i z powrotem przestawiam
wszystkie wyjścia na wejścia.
Generalnie wygląda to następująco:
static
void power_on (void)
{
PWR_SETOUT();
PWR_ON();
for (Timer1 = 150; Timer1; ); /* Wait for 150ms */
/* Setup SPI2 */
// Setup CS as output
CS_SETOUT();
MISO_SETIN();
MISO_SETPPS();
MOSI_SETOUT();
MOSI_SETPPS();
// configured for ~400 kHz operation - reset later to 20 MHz
SpiChnOpen(SPI_CHANNEL2,SPI_OPEN_MSTEN|SPI_OPEN_CKP_
HIGH|SPI_OPEN_SMP_END|SPI_OPEN_MODE8,64);
SPI2CONbits.ON = 1;
}
static
void power_off (void)
{
select(); /* Wait for card ready */
deselect();
SPI2CONbits.ON = 0; /* Disable SPI2 */
Stat |= STA_NOINIT; /* Set STA_NOINIT */
PWR_OFF();
CS_SETIN();
MOSI_RESTOREPPS();
MOSI_SETIN();
for (Timer1 = 150; Timer1; ); /* Wait for 40ms */
}
Jak widzisz SPI startuje na małej prędkości.
Zresztą w disk_initialize są wywoływane jeszcze dwie makrodefinicje:
#define FCLK_SLOW() SPI2BRG = 64 /* Set slow clock (100k-400k) */
#define FCLK_FAST() SPI2BRG = 2 /* Set fast clock (depends on the CSD) */
Następne wpisy z tego wątku
- 01.01.16 22:57 Marek
Najnowsze wątki z tej grupy
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-12 Warszawa => PC Hardware Expert / Specjalista PC <=
- 2025-07-12 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2025-07-12 Warszawa => Administrator IT <=
- 2025-07-12 Warszawa => IT Administrator <=
- 2025-07-12 Warszawa => Asystent/tka ds. Administracji <=
- 2025-07-12 Warszawa => Specjalista/stka ds. Organizacji <=
- 2025-07-12 Warszawa => MENA New Business Manager <=
- 2025-07-12 Gdynia => Controlling systems Consultant <=
- 2025-07-12 Warszawa => Developer Microsoft Dynamics 365 Finance & Operations (D36
- 2025-07-12 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-07-12 Warszawa => Dyrektor IT <=
- 2025-07-12 Warszawa => IT Director <=
- 2025-07-12 Czy wypowiedź Kaczyńskiego o Braunie jest skarżalna? ["działa z OBCEJ inspiracji"]
- 2025-07-11 Rejestrator temperatur - termopara, siec
- 2025-07-11 DPD, przeniesienie numerów z a2mobile i z Orange