PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-11-2009, 10:04 AM   #1
tahi
Đệ tử 4 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 64
:
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
Gửi ACMD41 trả về 0x05, in idle state and illegal command
có phải lệnh CMD1 và CMD55+ACMD41 là tương đương nhau ?

Bản MDD 1.2.1 down về, ko thấy support dòng dsPIC33, cũng ko thấy chỗ nào gán thanh ghi cho dspic33, mặc dù tiêu đề ghi là có hỗ trợ. Đương nhiên là có thể sửa từ PIC24,

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.
tahi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-11-2009, 10:56 AM   #2
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
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 08:32 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam