Thông báo

Collapse
No announcement yet.

SD card và MMC card

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • luckycomet
    replied
    Up lên hi vọng có bài viết thêm.

    Leave a comment:


  • Auto_engine
    replied
    Nguyên văn bởi nguyentuanqs Xem bài viết
    em cũng đang làm một đề tài có sử dụng amega128 về truyền nhận số liệu lưu trữ. kiểu như xác định hành trình bằng GPS. e định lưu dữ liệu ấy vào thẻ nhớ dưới dạng text và sử dụng như 1 hộp đen trên oto. hi, các bác cho em hỏi tính khả thi với. về phần GPS thì đã xong. còn phần lưu trữ nữa. làm thế nào để lưu dữ liệu ấy vào thẻ nhớ thành file định dạng .txt được các bác nhỉ?
    Ghi thẻ nhớ định dạng .txt tức là bạn muốn ghi thẻ định dạng FAT, trên mạng có khá nhiều project làm điều này. Một trong các thư viện mình thấy dễ sử dụng nhất là FATFS, bạn có thể xem thử và ứng dụng vào, phần example của nó có đoạn cho AVR đấy.

    Leave a comment:


  • nguyentuanqs
    replied
    em cũng đang làm một đề tài có sử dụng amega128 về truyền nhận số liệu lưu trữ. kiểu như xác định hành trình bằng GPS. e định lưu dữ liệu ấy vào thẻ nhớ dưới dạng text và sử dụng như 1 hộp đen trên oto. hi, các bác cho em hỏi tính khả thi với. về phần GPS thì đã xong. còn phần lưu trữ nữa. làm thế nào để lưu dữ liệu ấy vào thẻ nhớ thành file định dạng .txt được các bác nhỉ?

    Leave a comment:


  • mrhson
    replied
    mình cũng đang làm giao tiếp avr + micro Sd card nè. nhưng không hiểu lỗi xảy ra ở chõ nào mà khi minh truyền data cho no có 512 bytes thui mà khi kiểm tra dung lượng thẻ nhớ thì nó báo 4M. không biết đoạn chương trình này có lỗi gì nữa. Huynh nào chỉ mình xíu:

    void mmc_tCommand(unsigned char Cmd,long arg){
    unsigned char response, retry = 0;
    //command la 48 bit lien tiep trong do
    //bit47=0 (start bit)
    //bit46=1 (transmission bit)
    //bit45:40 la ma lenh
    //bit39:8 la argument cua lenh
    //bit7:1 Cyclic Redundancy Check (CRC)
    //bit0=1 la end bit

    SS_PIN = 0; //kich hoat duong SS cua SPI, MMC duoc chon
    SPI_tByte(0xFF); //dummy, 1 lenh luon bat dau 0 nen send FF thi MMC ko dap ung
    SPI_tByte(Cmd | 0x40); //0x40=01000000 la ma bat buoc khi goi lenh

    SPI_tByte((unsigned char)(arg >>24));
    SPI_tByte((unsigned char)(arg >>16));
    SPI_tByte((unsigned char)(arg >> 8));
    SPI_tByte((unsigned char) arg);
    SPI_tByte(0x95); //CRC, cho lan dau nhung neu cac lan sau send 0x95 cung ko van de;

    while((response=SPI_rByte()) == 0xff)
    if(retry++ > 0xfe) break;

    SS_PIN = 1;
    }


    //XXXXXXXXXXXX fileneme XXXXXXXXX
    unsigned char SD_writeSingleBlock(unsigned long startBlock)
    {
    unsigned char mmc_status ;
    unsigned int i,retry = 0;

    SS_PIN = 1;
    mmc_tCommand(CMD24,startBlock<<9) ;

    if(mmc_rResponse(0x00) == 1){ //co loi kiem tra response
    mmc_status=4; // timeout khi goi lenh write block
    SS_PIN = 1; //disable SPI MMC
    return mmc_status;
    }

    SS_PIN = 0;

    SPI_tByte(0xfe);

    for(i=0;i<512;i++) SPI_tByte(buff[i]);

    SS_PIN = 1;

    SPI_tByte(0xff);
    SPI_tByte(0xff);

    mmc_status =SPI_rByte();

    if((mmc_status & 0x1f) != 0x05) { SS_PIN=1; return mmc_status;}

    while( ! SPI_rByte())
    if(retry++ > 0xfffe) { SS_PIN =1; return 1;}

    SPI_tByte(0xff);

    SS_PIN = 0;

    while( !SPI_rByte())
    if(retry++ > 0xfffe) { SS_PIN =1; return 1;}
    SS_PIN = 1;

    return 0;

    }
    //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Leave a comment:


  • microchip
    replied
    Thấy mấy đồng chí hào hứng với SD/CF card nên mình cũng giới thiệu với các anh chị em "một module khá hay, bảo đảm xài là được ngay" :
    ELM - FatFs Generic FAT File System Module
    Còn đây là hướng dẫn:
    MMC/SD Card and FAT Tutorial
    chi tiết hơn:
    Simple FAT and SD Tutorial Part 1
    Simple FAT and SD Tutorial Part 2
    Simple FAT and SD Tutorial Part 3
    Đầy đủ rồi đó, dẫn tới cửa bảo vào nhà mà không biết đương f vào nữa thì bó tay nha .
    Chúc các bạn học vui.

    Leave a comment:


  • nguyenvanvui
    replied
    các bạn xem luồng này để hiểu cách thao tác sd card theo fat nhé: http://www.dientuvietnam.net/forums/...c-sd-card-591/

    Leave a comment:


  • quanghuyen
    replied
    Mình cũng mới bắt đầu tìm hiểu về SDcard.Mài mò xong thấy cái này hay hay post cho mọi người thì khám phá.Cái này rất hay cho mọi người bắt đầu khám phá về SDcard không cần phải sử dụng kíp thí nghiệm.Chỉ cần 1 cái laptop có giao tiếp với Sdcard là Ok.Chúng ta sẽ tiếp cận giao tiếp với host controler bằng cách sử dụng code của linux.Đảm bảo sao khi đọc xong có linux bạn sẽ học được rất nhiều đều hay về cách lập trình C.

    I.Setup ubuntu 11.10
    1. Download Ubuntu 11.10 Download | Ubuntu
    2.Run file wubi.exe để cài đặt ubuntu vào máy tính
    -Nên cài đặt dung lượng ổ đĩa lớn hơn 15G
    -Trong quá trình cài đặt không cần phải update khỏi phải tốn nhiều thời gian
    -Nên đặt Password cho Ubuntu
    3.Open Terminal (Win +Terminal +Enter)
    -Update apt-get (sudo apt-get update)
    -Upgrade apt-get (sudo apt-get upgrade)
    4.Download linux source 3.0
    -sudo apt-get install dpkg
    -Sudo apt-get source linux-source -3.0.0
    II.Build nhân linux mới vào hệ thống
    Build lại nhân linux để tạo dirver mmc thành một module riêng lẽ không phụ thuộc vào hệ thống
    -cd linux-3.0.0
    -sudo su
    -make oldconfig
    -nano .config
    Ctrl+W : “CONFIG_MMC” edit text CONFIG_MMC=m (Ctrl+X,Y)
    -make
    -make modules_install
    -make install
    -reboot
    Thế là xong quá trình chẩn bị linux để debug driver of mmc


    II.Chẩn bị công cụ lập trình
    1.Setup java run time
    -sudo apt-get install sun-java6-jdk
    2.Download eclipse C/C++ Eclipse downloads - mirror selection
    3.Chmod linux-Project
    -chmod –R 777 ~/linux-3.0.0
    4.Tạo Project on eclipse
    File->New->Other->C/C++->Makefile Project with Existing Code
    5.Edit file sdhci.c on driver/mmc/host/sdhci.c
    -Find function sdhci_add_host Ghi vào lệnh printk(“SDHCI BEGIN\n”) lệnh printk trong linux thay cho lệnh printf trong C .Lệnh printk sẽ được ghi vào file /var/log/syslog (cat /var/log/syslog)
    -Thêm đoạn code printk("SDHCI_SEND_COMMAND CMD =%d\n",cmd->opcode);Trong funtion sdhci_send_command
    6.Build module MMC
    -cd ~/linux-3.0.0/driver/mmc
    -sudo su
    -nano run
    -Pase “
    echo Makefile====================================
    make -C /lib/modules/`uname -r`/build M=`pwd` clean
    echo clear===============================
    make -C /lib/modules/`uname -r`/build M=`pwd` modules
    echo modules===========================
    make -C /lib/modules/`uname -r`/build M=`pwd` modules_install
    echo modulesinstall===========================
    echo rmmod_old

    rmmod sdhci_pci
    rmmod sdhci
    rmmod mmc_block
    rmmod mmc_test
    rmmod mmc_core

    rm /lib/modules/3.0.9/kernel/drivers/mmc/host/sdhci.ko
    rm /lib/modules/3.0.9/kernel/drivers/mmc/host/sdhci-pci.ko
    rm /lib/modules/3.0.9/kernel/drivers/mmc/card/mmc_block.ko
    rm /lib/modules/3.0.9/kernel/drivers/mmc/card/mmc_test.ko
    rm /lib/modules/3.0.9/kernel/drivers/mmc/card/mmc_core.ko

    cp host/*.ko /lib/modules/3.0.9/kernel/drivers/mmc/host/
    cp core/*.ko /lib/modules/3.0.9/kernel/drivers/mmc/core/
    cp card/*.ko /lib/modules/3.0.9/kernel/drivers/mmc/card
    echo insmod


    cd core
    insmod mmc_core.ko

    cd ../host
    insmod sdhci.ko
    insmod sdhci-pci.ko

    cd ../card
    insmod mmc_block.ko
    insmod mmc_test.ko
    insmod mmc_test.ko

    cd ../mmc_app
    insmod mmc_app.ko


    echo AllisOk


    modinfo sdhci

    -chmod 775 run
    -nano display
    -pase “

    cat /var/log/syslog

    -./run
    -./display

    Thảm khảo thêm tài liệu về cách giao tiếp sdcard
    https://www.sdcard.org/home/

    Post lên cho mọi người tham khảo ai có cùng sở thích thì thảo luận thêm

    Leave a comment:


  • tienhuypro
    replied
    Đọc MMC được là good rồi, cái này làm từ hồi cái thẻ nhớ có 16MB, lúc đó chỉ có Fat12 mới ghê chứ. Đọc và ghi file excel dữ liệu cân xà phòng cho P&G vui vãi. Bây giờ FAT32 thì làm vô tư nhỉ.

    Leave a comment:


  • OpenDoor
    replied
    Nguyên văn bởi locdoan Xem bài viết
    hi vong trang ưeb nay co the giup ban:Giao tiếp card MMC/SD
    Thông tin trong trang web này là những điều cơ bản nhất về SD card. Với những kiến thức cơ bản này bạn chỉ có thể ghi hoặc đọc dữ liệu trong SD card giống như eeprom, còn ghi đọc theo FAT32 thì hok có được.

    Leave a comment:


  • locdoan
    replied
    hi vong trang ưeb nay co the giup ban:http://www.hocavr.com/index.php/en/app/mmc
    Last edited by locdoan; 20-10-2011, 11:22.

    Leave a comment:


  • lequyen
    replied
    help me!..............

    Leave a comment:


  • lequyen
    replied
    ?????????????????????

    Leave a comment:


  • lequyen
    replied
    Bác có thể nói chi tiết một chút được không a?bác có tài liệu gì về những thứ này ko cho e xin với?

    Leave a comment:


  • OpenDoor
    replied
    Nguyên văn bởi lequyen Xem bài viết
    làm ơn chỉ giùm cách đọc sector o bằng c ,rồi cho hiển thi trên virtual terminal với.
    Để đọc được first sector đòi hỏi người giúp bạn phải có hiểu biết sâu sắc về phần cứng, ngôn ngữ lập trình C đặc biệt là biết rõ con trỏ và structure, về FAT...
    Để được được first sector bạn cần có:
    + Phần cứng đã chính xác, nhất là phần logic giữa SD card và vi điều khiển.
    + Vi điều khiển khởi tạo được giao diện SPI, UART.
    + Có chương trình gửi lệnh sang SD card (Đòi hỏi bạn phải biết tập lệnh của SD card).
    + Có chương trình khởi tạo SD card.
    + Có chương trình đọc block.

    Sau khi đọc được first sector, bạn chưa làm được gì hết. Bạn phải viết thêm chương trình đọc boot sector, có thêm thuật toán tìm root cluser, số byte trong mổi cluser. Sau đó bạn mới tìm được root entry, đọc thêm kiến thức về short file name và long file name nữa thì mới làm nên chuyện.

    Leave a comment:


  • lequyen
    replied
    làm ơn chỉ giùm cách đọc sector o bằng c ,rồi cho hiển thi trên virtual terminal với.

    Leave a comment:

Về tác giả

Collapse

atmega8 Tìm hiểu thêm về atmega8

Bài viết mới nhất

Collapse

Đang tải...
X