![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 | ||
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
Với SPI để đọc dữ liệu từ slave, master phải ghi dữ liệu lên bus, dữ liệu sẽ được đọc vào đồng thời với dữ liệu ghi ra. Trích:
|
||
![]() |
![]() |
![]() |
#2 | |
Nhập môn đệ tử
Tham gia ngày: Sep 2007
Bài gửi: 8
: |
Trích:
Mình vẫn chưa rõ chỗ :"master phải ghi dữ liệu lên bus, dữ liệu sẽ được đọc vào đồng thời với dữ liệu ghi ra." Tức là muốn đọc dữ liệu từ Slave thì Master chỉ có thể đọc trog thời gian nó dang tạo xung CLK, muốn vậy thì phải ghi dữ liệu lên Bus???? Vấn đề ở chỗ khi đo SPIxBUS lại ở trạng thái full,ko nhận được dữ liệu. Nếu dữ liệu được chuyển lên SPIxSR thì ko biết dữ liệu dữ trên đó trong khoảng thời gian bao lâu????? Khi slave gửi dữ liệu lên master thì liệu có ngắt SPI nhận ở Master ko! |
|
![]() |
![]() |
![]() |
#3 | ||
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
Trích:
Khi ghi dữ liệu vào thanh ghi SPIxBUF, dữ liệu sẽ được copy vào thanh ghi SPIxSR, SPIxBUF lúc này empty. Dữ liệu sau đó được right shift từ thanh ghi SPIxSR ra chân SDO trước rồi left shift từ chân SDI vào. sau 8 xung CLK, SPIxSR full, và dữ liệu sẽ được copy vào thanh ghi SPIxBUF nếu có thể. Trong trường hợp dưới đây dữ liệu từ SPIxSR sẽ bị mất mà sẽ ko được copy vào thanh ghi SPIxBUF - SPIxBUF đã full (bit SPIRBF = 1) trong trường hợp này, bit SPIROV sẽ được set. - bit SPIROV đã được set. Điều này nghĩa là để đảm bảo đọc dữ liệu đúng, bạn nên đọc dữ liệu 1 lần (để xóa bit SPIRBF nếu có), xóa bit SPIROV, ghi dữ liệu vào SPIBUF (nên ghi 0xFF nếu chỉ đọc), chờ bit SPIRBF được set và đọc dữ liệu về. |
||
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Sep 2007
Bài gửi: 8
: |
[QUOTE=bien_van_khat;16287]Đúng. Để đọc dữ liệu bạn phải ghi dữ liệu.
Mình vẫn chưa rõ điều khiển xung SCK của master như thế nào, SPIBUF rỗnng thì ko có SCK, ghi dữ liệu lên BUF thì khi truyền dữ liệu sẽ có SCK. Ghi lên mà không có Slave để nhận thì có SCK ko, số xung SCK đúng bằng chế độ bits truyền???(8,16 bits) và khi truyền thành công thì SCK cũng mất??? Ko điều khiển SCK bằng cách Set bit dc phải ko? |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|