Ðề tài: giao tiep voi sd card
View Single Post
Old 26-11-2009, 10:56 AM   #13
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi tahi View Post
Code:
    // Send CMD55, required to precede all "application specific" commands
	unsigned char CMD55_APP_CMD[] = {55,0x00,0x00,0x00,0x00,0x00};
	status = SD_WriteCommand(CMD55_APP_CMD); // Do not check response here	
	send_hex(status,"CMD55:");	
	
	// Send the ACMD41 command to initialize SD Card mode (not supported by MMC cards)
	i = 0;
	unsigned char ACMD41_SD_SEND_OP_COND[] = {41,0x40,0x00,0x00,0x00,0xFF};
	do
	{
		status = SD_WriteCommand(ACMD41_SD_SEND_OP_COND);
		// Might return 0x04 for Invalid Command if MMC card is connected
		send_hex(status,"ACMD41:");
		if(i++ > 50)
		{
			return 3;
		}
	} while( (status & R1_IN_IDLE_STATE) != 0 );
Gửi CMD55 trả về 0x01 , in idle state
=> card bạn dùng là SD card
Trích:
Gửi ACMD41 trả về 0x05, in idle state and illegal command
Đáng lẽ card phải trả lời 0x01, sau đó bạn tiếp tục gửi CMD55 + ACMD41 cho tới khi card trả lời 0x00
Trích:
có phải lệnh CMD1 và CMD55+ACMD41 là tương đương nhau ?
CMD1 là chuyển từ IDLE sang hoạt động và dùng cho thẻ SD/MMC
CMD55+ACMD41 để chuyển từ IDLE sang hoạt động và chỉ dùng cho thẻ SD

Tuy nhiên vì thẻ SD tương thích với thẻ MMC nên mình nghĩ bạn có thể bỏ qua CMD55+ACMD41 và gửi lệnh SET_BLOCK_LEN = 512 (command 16), sau đó kết thúc phần init bằng 8 lần ghi 0xff.

Đoạn code mẫu của anh Hiệp thiếu lệnh SET_BLOCK_LEN, có lẽ đây là lý do làm bạn nhận về mã lỗi địa chỉ sai.

Trích:
Hay là phần cứng có vấn đề gì (e chỉ nối MOSI, MISO, SS, CLK). Thằng này có tính năng remappable, nhưng em chỉ remap cho thằng MOSI, MISO, CLK, còn SS thì define cho 1 pin khác.
Bạn ko nên dùng chân SS của SPI, dùng 1 chân IO bình thường để nối tới chân CS của card (hình như bạn đang làm như vậy, bạn nói chưa rõ).

Khi khởi động, card ở chế độ SD, do đó chân SDO của card là opendrain, bạn cần 1 con điện trở pull-up ở chân này, từ 10k-50k.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn