Thông báo

Collapse
No announcement yet.

Xin mọi người giúp đỡ vi điều khiển giao tiếp với sd card

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin mọi người giúp đỡ vi điều khiển giao tiếp với sd card

    em đang làm đồ án sử dụng con VDK kết nối với SD card xuất dữ liệu qua VS10XX
    em tìm hiểu và đọc nhiều tài liệu rồi nhưng em có 1 số thắc mắc nên muốn nhờ các anh giúp đỡ giải thích giùm em ạ .
    1 . để giao tiếp được với SD card thì PIC sẽ gữi đến SD card 1 lệnh là 48 bit .
    + Bit 47 : start bit
    + bit 46 : quy định chiều gữi lệnh ( từ VDK đến SD card )
    + bit [45 : 40 ] : chỉ số lệnh
    + bit [39 : 8] : tham số lệnh
    + bit [7 :1 ] : CRC7
    + bit 0 : stop bit .
    theo như cấu trúc trên :
    + bit 45 :40 chỉ số lệnh , thường thì nếu muốn đọc 1 sector thì chỉ số lệnh là CMD17 , còn muốn đọc nhiều sector thì dùng CMD18 . điều em khúc mắc ở đây là ví dụ như em có 1 bài hát có dung lượng khoảng 4Mb chẳng hạn , nó sẽ được lưu vào 8 sector , vậy làm sao để biết được là pic phải gữi lệnh CMD 17 hay 18 , tại vì đầu tiên VDK không biết dung lượng bài hát đó chứa trong bao nhiêu sector mà chỉ có SD card lưu số sector đó?
    + bit [39 : 8] : tham số lệnh theo em tìm hiểu là địa chỉ chứa sector cần đọc đi kèm với lệnh ( CMD 17 , CMD18 ). nhưng địa chỉ chứa sector cần đọc phải được lưu trong SD card chứ không phải lưu trong VDK , vậy làm sao để VDK biết được cần phải gữi tham số lệnh nào ạ ?
    + câu chốt em muốn hỏi nữa là : khối lệnh gồm 48 bit đó nó sẽ truyền qua SD card theo từng phần 1 , hay nguyên cả khối gồm 48 bit đó .
    thanhk các anh lắm lắm .

  • #2
    Giao tiếp card MMC/SD

    Comment


    • #3
      dạ cảm ơn anh chung , em cũng đã tham khảo bài viết này . nhưng ở đó họ không nói rõ
      ví dụ : muốn đọc 1 khối dữ liệu thì " mã lệnh + địa chỉ khối dữ liệu muốn đọc" ~> CMD 17 + địa chỉ sector
      cái em quan tâm đó là địa chỉ khối dữ liệu ,VDK chưa giao tiếp với SD thì làm sao nó có thể biết được cái địa chỉ đó. tại vì địa chỉ đó được lưu trong SD cảd chứ không phải là VDK

      Comment


      • #4
        yêu cầu của bạn khá phức tạp nếu làm từ đầu, vì liên quan đến fat file system, bạn có thể tham khảo tài liệu FatFs - Generic FAT File System Module, bạn nên tham khảo code FÁTF trên mạng.
        + muốn biết đọc 1 sector hay nhiều sector thì phải đọc đựoc FAT table.
        + hình như mỗi lần truyền 1byte.

        mình nghĩ cách đơn giản hơn là bạn tự ghi bải hát vào thẻ nhớ, khi đó bạn sẽ biết nên đọc block hay multi block, địa chỉ block muốn đọc luôn.

        Comment


        • #5
          dạ , cảm ơn anh/chị hoa sữa đã cho em ý kiến .
          +điều chắc chắn là trước tiên ta phải lưu bài hát trước vô SD card . thì trong đó MBR ( master boot ) sẽ chứa địa chỉ partition ( 1Beh , 1Ceh...) .
          +sau đó sector đầu tiên của phân vùng sẽ chưa các dữ liệu cần thiết đó là boot sector chứa thông tin như số byte trong 1 sector ( thường là 512 byte ) , số sector trong 1 cluster
          +từ boot sector này ta đi đến bảng FAT 32 , root directory region . trong bảng FAT này ta biết được tên file , kích thước , cluster đầu tiên cần đọc .......
          nhưng em thắc mắc đó là phần giao tiếp giữa VDK và SD card
          trước tiên VDK sẽ gữi 1 lệnh được đóng khung = 48 bit bao gồm : start bit , chiều gữi lệnh , mã lệnh (1 khối dữ liệu hay nhiều khối dữ liệu tương ứng với CMD 17 hoặc CMD18 ) , địa chỉ khối dữ liệu cần đọc , và cuối cùng là stop bit .
          dòng em tô đậm " địa chỉ khối dữ liệu cần đọc " chính là điều em thắc mắc , ban đầu muốn nhận dữ liệu từ SD , VDK sẽ phải gữi kèm địa chỉ muốn đọc khối dữ liệu đó nhưng làm sao mà VDK có thể biết được địa chỉ đó như thế nào ? địa chỉ đó chỉ chứa trong SD card chứ nó không nằm trong VDK vậy tại sao VDK lại có được địa chỉ đó?

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X