Thông báo

Collapse
No announcement yet.

[SPI] giao tiếp SPI

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

  • [SPI] giao tiếp SPI

    các bác cho e hỏi là trong khi master và slave trong giao tiếp SPI trao đổi dữ liệu,khi master truyền dữ liệu cho slave thì có dữ liệu từ slave trả về,vậy dữ liệu đó là gì?????thanks các bác nhiều

  • #2
    Còn tùy,nếu bạn không cho con slave truyền data thì khi nhận dc data từ master thì nó sẽ truyền lại master 0xff(nhớ là đồng thời) .Còn nếu bạn viết cho slave truyền data thì khi nhận dc data từ master thì đồng thời master cung nhận dc data mà slave truyền

    Comment


    • #3
      Sao mình đọc trong một số diễn đàn nói là để đọc dữ liệu từ slave thì master phải ghi dữ liệu trên bus và đọc dữ liệu từ slave đồng thời với dữ liệu ra.cái này có liên quan không bạn?thanks nhiều!

      Comment


      • #4
        Nguyên văn bởi nguyentuantu
        các bác cho e hỏi là trong khi master và slave trong giao tiếp SPI trao đổi dữ liệu,khi master truyền dữ liệu cho slave thì có dữ liệu từ slave trả về,vậy dữ liệu đó là gì?????
        Về bản chất, SPI là sự hoán đổi dữ liệu giữa 2 bên. Việc chuẩn bị dữ liệu của 2 bên được thực hiện từ trước khi thao tác trao đổi dữ liệu xảy ra. Dữ liệu Slave trả về là nội dung của thanh ghi dữ liệu của SPI tích hợp trên Slave.

        Nguyên văn bởi nguyentuantu
        Sao mình đọc trong một số diễn đàn nói là để đọc dữ liệu từ slave thì master phải ghi dữ liệu trên bus và đọc dữ liệu từ slave đồng thời với dữ liệu ra.cái này có liên quan không bạn?
        Thao tác trao đổi dữ liệu được SPI tự động thực hiện, CPU không cần phải quan tâm đến việc ra vào từng bit. Cơ chế dịch bit ra và vào được SPI thực hiện một cách hoàn toàn chủ động, cho đến khi đủ frame (8-bit chẳng hạn) thì báo cho CPU bằng các cờ (flag) nằm trong các thanh ghi trạng thái. CPU lúc này sẽ làm việc với dữ liệu nhận được ở dạng byte. Chỉ cần lưu ý rằng, khi bạn phát đi 1 byte dữ liệu, luôn sẽ nhận về được 1 byte từ phía bên kia, còn byte nhận về bạn có quan tâm hay không lại là chuyện khác.


        Thân mến,
        blackmoon.

        Comment


        • #5
          anh cho e hỏi,trong quá trình master và slave trao đổi dữ liệu,thì nó dịch từng bit cho đến khi đủ frame.e hiểu thế này không biết có phải không???
          --giả sử frame 8 bit,trước khi truyền dữ liệu thì 2 thanh ghi của slave và master đã đủ 8 bit.
          ---------bit đầu tiên được truyền và nhận thì dữ liệu trên 2 thanh ghi sẽ là 7 bit của dữ liệu cũ và 1 bit của dữ liệu mới,cứ như thế cho đến khi dữ liệu được thay thế hoàn toàn bằng dữ liệu mới.
          ----và sẽ có 1 bộ đếm để đếm đến 8 thì tích cực các cờ điều khiển,vì lúc nào trong thanh ghi cũng đủ 8 bit.
          Mong a giúp đỡ!

          Comment


          • #6
            Nguyên văn bởi nguyentuantu
            anh cho e hỏi,trong quá trình master và slave trao đổi dữ liệu,thì nó dịch từng bit cho đến khi đủ frame.e hiểu thế này không biết có phải không???
            --giả sử frame 8 bit,trước khi truyền dữ liệu thì 2 thanh ghi của slave và master đã đủ 8 bit.
            ---------bit đầu tiên được truyền và nhận thì dữ liệu trên 2 thanh ghi sẽ là 7 bit của dữ liệu cũ và 1 bit của dữ liệu mới,cứ như thế cho đến khi dữ liệu được thay thế hoàn toàn bằng dữ liệu mới.
            ----và sẽ có 1 bộ đếm để đếm đến 8 thì tích cực các cờ điều khiển,vì lúc nào trong thanh ghi cũng đủ 8 bit.
            Chuẩn không cần chỉnh. Em chỉ cần biết thêm một điều thế này: Thực chất, CPU làm việc với các thanh ghi dữ liệu (ghi/đọc byte), còn quá trình trao đổi dữ liệu qua SPI (dịch từng bit ra/vào) được thực hiện trên 1 thanh ghi khác tạm gọi là thanh ghi dịch. Thanh ghi dịch này được nối với thanh ghi dữ liệu, nội dung của chúng chỉ được đồng nhất với nhau ở các thời điểm trước và sau khi trao đổi dữ liệu. Điều đó có nghĩa là khi SPI dịch từng bit, nội dung của thanh ghi dữ liệu ko thay đổi, chỉ thay đổi nội dung của thanh ghi dịch, chỉ khi nào dịch xong 8-bit chẳng hạn thì sẽ đưa nội dung của thanh ghi dịch vào thanh ghi dữ liệu để CPU có thể đọc ra. Người ta vẫn nói là thanh ghi dịch có chức năng "đệm" (buffer) cho thanh ghi dữ liệu là vì thế. Điều này thường đúng cho cả các thanh ghi dữ liệu trong các ngoại vi giao tiếp nối tiếp khác như I2C, UART.


            Thân mến,
            blackmoon.

            Comment


            • #7
              hiện e đang làm một bộ giao tiếp tổng quát như thế này:
              -----khối của e là giao tiếp SPI có các ngõ vào là parallel lấy dữ liệu từ vi điều khiển hay đại loại như thế,và ngõ ra giao tiếp serial SPI.Khối này làm cả nhiệm vụ slave và master.
              -----e tính làm cả ngắt nữa.đang thiết kế sơ đồ khối tổng quát mà chưa đến đâu cả.
              Các anh có ai có thể giúp không?tham khảo nhiều sơ đồ khối mà thấy vẫn mơ hồ quá.

              Comment


              • #8
                Em đang làm một bộ convert từ truyền song song sang nối tiếp SPI (song song theo chuẩn intel),anh có tài liệu gì liên quan đến vấn đề này cho e xin với.

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X