Thông báo

Collapse
No announcement yet.

Hỏi về mức logic của PIC, giao tiếp SPI

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

  • Hỏi về mức logic của PIC, giao tiếp SPI

    Tình hình là mình đang viết ứng dụng với PIC18F4550, VS1053, ESP8266.
    PIC mình cấp nguồn 5V, ESP8266 3.3V. PIC và ESP giao tiếp bằng UART. Lúc đầu mình không để ý, sau để ý mới phát hiện, sao lúc PIC giao tiếp với ESP vẫn ầm nhỉ, theo lý thuyết phải có đệm để đúng mức logic mới hoạt động được với nhau chứ nhỉ?

    PIC và VS1053 giao tiếp SPI. VS1053 mình sài cái shield andruino. Shematic của nó đây mấy bác. http://www.tme.vn/upload/pdf/TMe_VS1053_Shield.pdf
    Trên shield có dùng 74LV125 để đệm điện áp về 5V để ra ngoài. Còn nguồn thì nó cấp như này: Analog Positive Supply AVDD 3.3 V; Digital Positive Supply CVDD 1.8 V; I/O Positive Supply IOVDD 3.3 V.
    Mình đo mức logic 1 của PIC khi cấp nguồn 5V là 3V, vậy giao tiêp với module VS1053 này có cần đệm điện áp gì không nhỉ?
    Cách thức giao tiếp của với VS1053 mình đã đọc kĩ datasheet lắm rồi, giải thuật không có sai, mà sao khi đọc cổng SPI toàn ra 0000, ffff?. Mấy bác chỉ giáo mình với, tại lần đầu viết SPI, không biết hay sai chỗ nào. Không biết có cần set tốc độ clock gì đó để nó hoạt động đồng bộ với VS1053 không nhỉ. Với mode của SPI có quan trọng không, trong datasheet của VS1053 hoàn toàn không nhắc tới. Và BITS = ? trong chỗ khai báo SPI có ý nghĩa gì?
    Để đọc dữ liệu trong một thanh ghi trong VS1053 (ví dụ SCI_MODE có giá trị mặc định là 0x4800) thì cần ghi làm như sau: đưa chân CS về low, gửi opcode 0x03, gửi địa chỉ của SCI_MODE rồi chờ 2byte dữ liệu trả trở về, đưa chân CS về high.
    Code:
    #USE SPI (MASTER, SPI1, MODE=0, BITS=16, STREAM=SPI_1, MSB_FIRST)
    ...................
       setup_spi(spi_master|spi_l_to_h|spi_clk_div_16);
       clearCS();
       delay_ms(100);
       spi_write(0x03);
       spi_write(SCI_MODE);
       delay_ms(100);
       d0=spi_read();
       delay_ms(100);
       d1=spi_read();
       delay_ms(200);
       setCS();
    Với mấy bác giải thích giùm mình với spi_read(dt) có cái tham số dt để làm gì vậy?

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X