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

  • rongconn2t
    replied
    thực ra em thấy giao tiếp với thẻ nhớ SD và MMC thì chỉ cần dùng chuẩn SPI là giao tiếp được
    giao tiếp thẻ nhớ với VDK thì cứ tuân theo chuẩn giao tiếp SPI thôi. nhưng còn mấy vấn đề thế này mong mọi người giúp em một chút
    các lệnh cơ bản để giao tiếp với thẻ nhớ .
    giao tiếp nếu chỉ giao tiếp theo kiểu thông thường thì nó chẳng khác gì con EEPROM ngoài . nhưng mà như thế thì mình rất khó quản lý dữ liệu trong nó . người ta sẽ giao tiếp thẻ nhớ theo định dạng bảng FAT32
    vậy làm thế nào để sử dụng được bảng FAT32 .
    mong mọi người giúp
    cảm ơn nhiều

    Leave a comment:


  • thanh_thanh
    replied
    Nguyên văn bởi hocAVR Xem bài viết
    Thẻ MMC có 7 chân, thẻ SD có 9 chân ( file đính kèm ). Bác nào làm rồi xin cho biết 2 chân còn lại (8,9) của SD nối vào đâu nhỉ. Bác có sơ đồ thì Post lên cho tui xem với.

    Thank
    2 chân này không nối vào đâu hết bạn à. Bạn có thể tham khảo 1 sơ đồ bên dưới mà mình vẽ.
    Thân.
    Attached Files

    Leave a comment:


  • hocAVR
    replied
    Làm sao dùng Card MMC/SD trên cùng một Adaptor

    Thẻ MMC có 7 chân, thẻ SD có 9 chân ( file đính kèm ). Bác nào làm rồi xin cho biết 2 chân còn lại (8,9) của SD nối vào đâu nhỉ. Bác có sơ đồ thì Post lên cho tui xem với.

    Thank
    Attached Files

    Leave a comment:


  • tienhuypro1
    replied
    Nguyên văn bởi rongluakq Xem bài viết
    mình muốn nói ở quá trình ghi dữ liệu lên thẻ nhớ. ví dụ như ở một hệ thống kiểm tra nhiệt độ tại một nơi nào đó, mà ta cần ghi lại nhiệt độ tại các thời điểm khác nhau thì dữ liệu được ghi lên thẻ nhớ có dạng là gì?
    Tốt nhất là bạn nên ghi theo file excel thì rõ ràng nhất.
    Bạn tính trung bình mỗi lần ghi thì tốn bao nhiêu byte và nhân lên theo số lần ghi. VD bạn tạo 1 file có dung lượng là 1M nhưng trong file đó không chứa gì cả, và lúc này bạn chỉ việc ghi nội dung vào file 1M đó là xong, tính thử ghi bao nhiêu lần thì hết 1M rồi tạo File khác cũng 1M. Với thẻ nhớ 4GB thì ghi tới luc cháy mạch vẫn chưa hết đâu nhỉ . Tôi đã làm theo phương án này rồi và thấy cũng khả thi. Chúc bạn thành công

    Leave a comment:


  • chehatsen
    replied
    sao không có sư phụ nào hướng dẫn cho anh em hết vậy ?

    Leave a comment:


  • rongluakq
    replied
    mình muốn nói ở quá trình ghi dữ liệu lên thẻ nhớ. ví dụ như ở một hệ thống kiểm tra nhiệt độ tại một nơi nào đó, mà ta cần ghi lại nhiệt độ tại các thời điểm khác nhau thì dữ liệu được ghi lên thẻ nhớ có dạng là gì?

    Leave a comment:


  • rongluakq
    replied
    cho mình hỏi với, khi giao tiếp với thẻ nhớ thì dữ liệu được ghi lên thẻ nhớ có dạng là gì?
    ý mình hỏi dạng là âm thanh, hình ảnh hay văn bản... hay các loại khác.
    để thành dạng văn bản thì phải lập trình như thế nào?

    Leave a comment:


  • chehatsen
    replied
    Nguyên văn bởi tienhuypro Xem bài viết
    Giao tiếp MMC/SDC không khó, chỉ khó là phải ghi kiểu gì để khi cắm vô máy tính thì máy đọc được thôi.
    Mới đây tôi đã làm thành công đọc ghi nhiều file excel(normal name, long file name)theo các định dạng FAT12(thẻ 16Mb),Fat16(thẻ 256Mb) và Fat32(thẻ 1Gb). Làm xong rồi thấy chả có gì để quan tâm, luồn này có anh bạn keo BVH hỏi hoài không chỉ, chán wa tôi mất 2 tuần cho vấn đề này và cuối cùng cũng thành công khekhe

    Khi ghi 1 block data thì MMC sẽ đáp ứng lại 1 byte mà ta chỉ cần check 5bit cuối thôi nếu =0x05 thì viêc ghi thành công, thế thôi còn khác 0x05 thì có lỗi ta nên ghi lại data đó
    bạn nói thế thì ngắn gọn khó hiểu quá ,bạn có thể chỉ chi tiết được không?
    theo tôi nghĩ để ghi vào mmc
    - mcu gởi command ghi tới mmc gồm có 5 byte
    - mmc gởi tiếp 2 byte ff để nhận reponse từ thẻ nhớ nếu nhận được 0x00 là ok còn không thì lỗi
    -mmc gởi startbyte là 0xfe sau đó gởi tiếp 512 dữ liệu cần ghi vào mmc
    -mcu gởi tiếp 1 hay 2 byte 0xff gì đó để nhận data reponse từ mmc nếu là 0x05 là ok
    tôi đang tìm hiểu nên chắc là có nói sai ,bạn nào làm rồi chỉ lại cho anh em tí nhưng chi tiết dùm

    Leave a comment:


  • tienhuypro
    replied
    Nguyên văn bởi windly Xem bài viết
    Chào bạn bvhoang, mình thấy module FM32 của bạn rất hay và mình cũng đang cần một cái để thử giao tiếp với MMC/SD. Bạn bán bao nhiêu một bộ, mình đã gửi mail cho bạn mà không thấy reply, mình ở Hà Nội.
    Tôi đã đọc ghi Fat32 cho MMC và SDC, nếu bạn cần giao tiếp MMC/SDC qua RS23 để đỡ thời gian ngâm cứu thì có thể liên hệ tôi đặt mạch. tien_huy19@yahoo.com

    Leave a comment:


  • tienhuypro
    replied
    Nguyên văn bởi chehatsen Xem bài viết
    mình cũng đang bí như bạn ,mong bác nào làm rồi hướng dẫn lại ,cám ơn
    Giao tiếp MMC/SDC không khó, chỉ khó là phải ghi kiểu gì để khi cắm vô máy tính thì máy đọc được thôi.
    Mới đây tôi đã làm thành công đọc ghi nhiều file excel(normal name, long file name)theo các định dạng FAT12(thẻ 16Mb),Fat16(thẻ 256Mb) và Fat32(thẻ 1Gb). Làm xong rồi thấy chả có gì để quan tâm, luồn này có anh bạn keo BVH hỏi hoài không chỉ, chán wa tôi mất 2 tuần cho vấn đề này và cuối cùng cũng thành công khekhe

    Khi ghi 1 block data thì MMC sẽ đáp ứng lại 1 byte mà ta chỉ cần check 5bit cuối thôi nếu =0x05 thì viêc ghi thành công, thế thôi còn khác 0x05 thì có lỗi ta nên ghi lại data đó

    Leave a comment:


  • huydoanminh
    replied
    chào các pác,mình đang có trong tay 1 thẻ MMC mà theo định dạng RAW.mình ko thể giao tiếp với máy tính.mình muốn đọc các sector bên trong nó thì phải lam sau.mong các pác giúp với.thanks

    Leave a comment:


  • chehatsen
    replied
    Nguyên văn bởi windly Xem bài viết
    Xin chào tất cả mọi người và chào riêng bạn yankazaz để cảm ơn bạn về những thông tin rất hữu ích cho những ai muốn tìm hiểu giao tiếp MMC và UC. Mình cũng đang tìm hiểu về MMC giao tiếp AVR, theo hướng dẫn của bạn yankazaz mình đã khởi tạo MMC thành công nhưng mình gặp trục chặc khi ghi data vào 1 block. Mình không hiẻu quy trình check respond 0x05 như thế nào. Bạn có thể post một đoạn chương trình đã chạy để ghi data vào 1 block của MMC để mình học hỏi được không? Thanks bạn rất nhiều
    mình cũng đang bí như bạn ,mong bác nào làm rồi hướng dẫn lại ,cám ơn

    Leave a comment:


  • bk638
    replied
    Có ai có sơ đồ modul MMC/SD ko? Nếu có up cho mình với. Thanks

    Leave a comment:


  • tienhuypro
    replied
    Nguyên văn bởi yankazaz Xem bài viết
    - FAT16, FAT32 là gì?
    FAT = File Allocation Table: Bảng phân bố dữ liệu. Đối với FAT16, người ta dùng 16bit = 2byte để lưu ảnh của một file bất kỳ trên vùng dữ liệu vào bảng FAT. Còn đối với FAT32, người ta dùng 32 bit. Như vậy rõ ràng rằng, với 16bit, dung lượng hỗ trợ sẽ bé hơn nhiều lần so với FAT32.

    - Cấu trúc ổ cứng gần như giống hoàn toàn với MMC và SD, đều chia thành những sector, từ sector 0 đến sector xxxxxxx. (Mỗi sector = 512byte). Trong đó:

    Sector 0 là MBR: Master Boot Record
    Nếu đọc được sector này, các bác sẽ đọc được PBR ở đâu (sector thứ mấy), .v.v..v

    Giả dụ Sector x là PBR: Partion Boot Record
    Đọc sector này, các bác sẽ biết bảng FAT ở đâu, dung lượng (tính theo sector) là bao nhiêu; Root Entry ở đâu, gồm bao nhiêu entry, vùng dữ liệu tính từ sector nào....v.v.

    Vậy giả thiết tôi muốn đọc một file tên là MT.txt trên ổ cứng thì thao tác sẽ là:

    Tôi di chuyển đến Root Entry. Vùng này chứa thông tin về file trên ổ, kể cả file đã xóa. Tôi đọc từng entry, mỗi entry 32byte, so sánh tên trong mỗi entry với "MT". Nếu có, tôi sẽ đọc tiếp vùng bắt đầu (sector bắt đầu) của file là bao nhiêu, file đã xóa hay chưa. Giả thiết ổn cả, tôi sẽ nhảy đến sector của vùng bắt đầu file và tiến hành đọc file này. Dữ liệu sẽ có dạng hex. Nhưng đối với file txt, các bạn có thể chuyển sang ASCII.

    Câu hỏi sẽ là: khi nào thì biết file kết thúc, chả nhẽ cứ đọc một lèo sao? Trong root entry có cả điểm bắt đầu file và kết thúc file.

    Cần phân biệt có 2 kiểu ghi file lên thẻ. Ghi tuyến tính tức là ghi từ sector x, đến x+1... Và ghi kiểu frag, cứ chỗ nào có cluster trống thì ghi. Đối với ghi tuyến tính, ta dễ thực hiện và chỉ cần đọc từ sector bắt đầu đến sector cuối. Còn đối với ghi frag, hết 1 cluster ta phải đọc FAT để biết xem cluster tiếp theo nằm ở đâu, cho đến khi nào trên bảng fat có cluster kết thúc.

    Đối với người bắt đầu, ghi tuyến tính không phải là quá khó và đơn giản về mặt quản lý hơn là frag....
    làm sao tìm được sector tiếp theo của file MT.txt từ bản FAT hả bạn. xin cứu

    Leave a comment:


  • chehatsen
    replied
    mình mới viết tới chỗ khởi tạo MMC vừa tới phần gởi CMD0 là nó reponse 00 nghĩa là bị lỗi ,mình làm như bác yankazaz chỉ
    .CSEG
    .INCLUDE"M16DEF.INC"
    .ORG 0X000
    RJMP BATDAU
    .ORG 0X020
    BATDAU:
    .equ TCAR=0X60
    .DEF TEMP=R17
    ;CLEAR RAM DATAS
    LDI ZH,HIGH(TCAR)
    LDI ZL,LOW(TCAR)
    LDI TEMP,0

    CLEAR_RAM_LOOP:

    ST Z+,TEMP
    CPI ZH,HIGH(RAMEND)
    BRNE CLEAR_RAM_LOOP
    CPI ZL,LOW(RAMEND)
    BRNE CLEAR_RAM_LOOP

    LDI TEMP,LOW(RAMEND)
    OUT SPL,TEMP
    LDI TEMP,HIGH(RAMEND)
    OUT SPH,TEMP

    KHOITAOSPI:
    CALL KHOITAOSPI1
    CALL SPI_255_transfer


    KHOITAOMMC:
    CBI PORTB,2
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer

    SBI PORTB,2 ;SET SS
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer

    GUI_CMD0:
    LDI R16,0X40
    CALL SPI_TRANSFER

    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer
    CALL SPI_zero_transfer

    LDI R16,0X95
    CALL SPI_TRANSFER

    CPI R16,0X01
    BRNE GUI_CMD0

    CALL HIEN_THI_1
    LAPLAI:
    RJMP LAPLAI
    KHOITAOSPI1:
    LDI R16,0XBF
    OUT DDRB,R16;THANH GHI B XUAT DU LIEU
    LDI R17,0X52
    OUT SPCR,R17
    RET

    SPI_255_transfer:
    SER R16;THANH GHI R16 CHUA FF
    RJMP SPI_transfer
    SPI_zero_transfer:
    CLR R16
    RJMP SPI_transfer
    SPI_transfer:
    OUT SPDR,R16;CHEP DATA R16 VAO THANH GHI SPDR
    wait_SPI_transfer:
    SBIS SPSR,SPIF;BIT SPIF=1 THI BO QUA LENH KE;bit SPIF la bit 7 cua thanh ghi SPSR
    RJMP wait_SPI_transfer
    IN R16, SPDR;THANH GHI R16 SE CHUA DATA TU THE NHO
    RET
    HIEN_THI_1:
    LDI R18,0XFF
    OUT DDRA,R18
    LDI R19,0X0F
    OUT PORTA,R19
    RET
    BÁC NÀO CHỈ MÌNH CHỖ SAI MÌNH CẢM ƠN NHIỀU NHIỀU
    Last edited by chehatsen; 18-11-2009, 15:24. Lý do: bác nào chỉ giùm mình chỗ viết sai ,cảm ơn nhiều nhiều

    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