2012-01-15 3 views
4

잠시 동안 LPC1766SPI 주변 장치가있는 SD 카드 인터페이스를 시도하고 있는데 지금 당장은 대답을 찾을 수없는 문제에 봉착했습니다.SDHC SPI 쓰기 문제

문제는 : SDHC 카드가 쓰기 및 읽기 명령에 예상대로 응답하지 않습니다.

모든 것이 Chan의 순서도 및 NXP 응용 프로그램 노트를 기반으로 초기화시에 잘 작동합니다. 카드 버전을 차별화하고 OCR, CID, CSD를 읽고 크기를 결정할 수 있습니다.

이 단계가 끝나면 1 초마다 단일 블록을 쓰고 데이터 무결성을 검사하기 위해 다시 읽습니다. Kingston SDHC 4   GB Class   4 카드에서는 첫 번째 쓰기 명령을 보낼 수 있지만 두 번째 카드에서는 CMD24에 응답하지 않습니다 (0x00 또는 0x01). 샌 디스크 4   GB 클래스   4 카드를 사용하면 결과가 다르고 모든 명령이 카드에 의해 응답되지만 데이터를 읽을 때만 0이됩니다 (0을 쓰지 않을 것이라고 확신합니다). SDSC 카드를 사용하면 모든 것이 잘됩니다.

SDHC가 주소가 지정되지 않고 바이트로 주소가 지정되지 않았으며 SDHC 용 CCS가있는 ACMD41을 보내야한다는 것을 알고 있습니다. 또한 나는 클록 주파수가 문제가되지 않는다는 것을 알고있다. (단지 0x3700을 사용하고 쓰기 전에/읽으려고   MHz를 사용한다.) 왜냐하면 나는 CRC 검사를 켜기 만하고 모든 카드는 명령과 데이터를 받아들이 기 때문이다. CRC 계산을 중지하면 모든 카드가 명령과 데이터를 거부합니다.

+2

Chan의 [FatFs] (http://elm-chan.org/fsw/ff/00index_e.html)를 사용하여 2Gb 이상의 카드로 다양한 성공을 거뒀습니다. 저는 항상 작동하는 카드가 v2.0 SDHC가 아닌 2048 바이트 블록이있는 SD 버전 1.01 SDSC 카드라고 가정했습니다. 나는 더 높은 수용력을 필요로하지 않았기 때문에 그것을 한 번 더 들여다 보지 못했습니다. – Clifford

+0

Chan의 코드를 약간 수정했기 때문에 powerUps없이 SanDisk 카드를 제대로 초기화 할 수있었습니다. 사용한 SD 카드 코드를 보여줄 수 있습니까? – jeb

+1

원인은 SPI 드라이버 일 수도 있습니다. FIFO를 사용하는 경우, TX-Fifo를 완전히 채울 때 RX-Fifo가 오버 플로우 할 수있는 문제를 알고 있어야합니다. 17 바이트를 보낼 수 있기 때문에 (내 드라이버는 거기에서 실패했습니다) – jeb

답변

0

어떻게 SD 카드를 연결하나요? 모드/상태에 따라 SD (HC) 카드에는 외부 풀업 저항이 필요합니다. 그것 없이는 0을 읽으므로 문제가 될 수 있습니다.