![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ 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 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. |
![]() |
![]() |
![]() |
#2 | ||||
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
Trích:
Trích:
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:
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. |
||||
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|