2011-11-10 22 views
5

Tôi có thẻ micro SDHC SDHC 32   GB mà phải liên lạc với MSP430F2618 qua SPI. Tôi đã không thể khởi tạo nó bằng cách sử dụng CMD55 + ACMD41 (với bit30 được đặt thành 1), vì nó được mô tả trong giấy đặc tả SD. Trình tự này hoạt động như thế nào:Thẻ SDHC microSD và khởi tạo SPI

CMD0, arg: 0   , CRC: 0x95 (response:0x01) 
    CMD8, arg: 0x1AA  , CRC: 0x87 (response:0x01) 
    CMD1, arg: 0x40000000, CRC: 0xFF (response:0x00) 

Tôi đã thử nó cũng với thẻ 8 San2iskGB và làm việc cho điều đó. Vì vậy, thực sự, tôi đang sử dụng CMD1 ở đây, không phải ACMD41, với HCS bit thiết lập để 1. Tuy nhiên, nó không phải là ổn định, đôi khi nó hoạt động, đôi khi nó không. Điều này có thể là về phần cứng.

Có lạ gì khi thẻ trả lời CMD1 với đối số 0x40000000?

Trả lời

6

Bạn không nên sử dụng CMD1 để khởi tạo thẻ SDHC; như đã nói trong thông số thẻ SD:

Trong bất kỳ trường hợp nào CMD1 không được khuyến nghị vì có thể khó phân biệt máy chủ để phân biệt giữa thẻ nhớ đa phương tiện và thẻ nhớ SD.

Một số bộ điều khiển (thẻ dung lượng mới hơn và cao hơn chủ yếu) sẽ chỉ ở IDLE nếu bạn phát hành CMD1 cho chúng. Trước tiên, bạn nên phát hành CMD8 0x1AA sau khi đặt lại (CMD0) và sau đó sử dụng CMD55 + ACMD41.

tl; dr để khởi tạo thẻ bạn nên:

  1. CMD0 arg: 0x0, CRC: 0x95 (trả lời: 0x01)

  2. CMD8 arg: 0x000001AA, CRC: 0x87 (phản hồi: 0x01)

  3. CMD55 arg: 0x0, CRC: bất kỳ (CMD55 là tiền tố để mỗiACMD)

  4. ACMD41, arg: 0x40000000, CRC: bất kỳ

  5. nếu phản ứng: 0x0, bạn OK; nếu nó 0x1, goto 3.

Lưu ý rằng hầu hết các card đòi hỏi bước 3/4 để được lặp đi lặp lại, thường là một lần, tức là trình tự thực tế là CMD0/CMD8/CMD55/ACMD41/CMD55/ACMD41 - để hãy chắc chắn, hãy thử nó n lần (chọn n trong lý do của bạn) và giả sử không thành công nếu không. Ngoài ra, lưu ý rằng bạn nên khẳng định S̲S̲ (hay còn gọi là CS) thấp tại ít nhất trước và sau CMD0 - và, trên thực tế, có thể luôn luôn khi gửi bất kỳ lệnh nào đến thẻ SD.

Các vấn đề liên quan