gia thiet bi ve sinh chinh hang, doc truyen truyện tranh cười Việt Nam doc truyen ma kinh di truyen tinh yeu lãng mạn, tin tuc onlinethiet bi nha ve sinh Việt Nam - Voi hoa sen

kiem tien online

[Lập trình PIC] Giao Tiếp SPI

Được đăng bởi NetVN Chủ Nhật, 26 tháng 2, 2012 0 nhận xét
Bài trước:
+[Lập trình PIC] Truyền Thông Nối Tiếp RS232 - Xử Lý Chuỗi Trong CCS
Bài sau:

+[Lập trình PIC] Các Ngắt Trong PIC





Giao Tiếp SPI


I /  GIAO TIẾP SPI : 
+ Đây là giao tiếp dễ dùng nhất , đơn giản nhất , tốc độ cao nhất trong nhóm . hoạt động theo cơ chế hand-shaking, bắt tay . Giả sử có 2 VDK , thì 1 là master , 1 là slave . Khi master truyền 1 byte cho slave , nó phát 8 xung clock qua đường clock nối tới slave , đồng thời truyền 8 bit data từ chân SDO tới chân SDI của slave. Không kiểm tra chẵn lẻ , lỗi . Do đó Vdụ  nếu đang truyền được 3 bit mà master reset hay hở dây clock thì data bị mất , slave sẽ không nhận đủ 8 bit và do đó nếu tiếp tục nhận nó sẽ lấy 5 bit ở byte kế tiếp đưa vào thanh ghi nhận để đủ 8 bit ( và để  kích ngắt ) . Từ đó trở đi là mọi giá trị nhận là sai bét trừ phi chấm dứt và sau đó thiết lập lại giao tiếp này ( ở cả hai ) .
+ Giao tiếp này cần  ít nhất 2 dây trở lên . Nếu 1 VDK chỉ  cần gởi data thì chỉ cần dây clock và SDO .VDK nhận  sẽ dùng SDI và dây clock . Dây clock là nối chung .
+ Nếu có gởi và nhận ở cả 2 VDK thì : dây clock chung , master có SDO nối tới SDI của slave , SDO của slave nối tới SDI của master .
+ Nếu master cần truyền data cho nhiều slave trở lên  thì  SDO master nối tới các SDI của slave .
+ Chân  SS là slave select .
+ SPI hoạt động từ phần cứng , vì nó có sẵn thanh ghi gởi và nhận , nhận đủ giá trị thì có cờ ngắt phục vụ .
+ Danh sách các hàm :
1 / Setup_spi (mode ) 
     Setup_spi2 (mode ) 
+ Dùng thiết lập giao tiếp SPI . Hàm thứ 2 dùng với VDK có 2 bộ SPI .
+ Tham số mode :là các hằng số sau , có thể OR giữa các nhóm bởi dấu |
  I SPI_MASTER , SPI_SLAVE , SPI_SS_DISABLED 
  II SPI_L_TO_H , SPI_H_TO_L 
  III SPI_CLK_DIV_4 , SPI_CLK_DIV_16 , SPI_CLK_DIV_64 , SPI_CLK_T2 
+ Nhóm I xác định VDK là master hay slave ,slave select
+ Nhóm II xác định clock cạnh lên hay xuống .
+ Nhóm III xác định tần số  xung clock , SPI_CLK_DIV_4 ngĩa là tần số = FOSC / 4 , tương ứng 1 chu kỳ lệnh / xung .
+ Hàm không trả về trị .
+ Ngoài ra ,tuỳ VDK mà có thêm 1 số tham số khác , xem file * .h .


2 / Spi_read ( data ) 
     Spi_read2 ( data ) 
+ data có thể có thêm và là số 8 bit . Hàm thứ 2 cho bộ SPI thứ 2 .
+ Hàm trả về giá  trị 8 bit: value = spi_read ( ) 
+ Hàm trả về giá trị đọc bởi SPI . Nếu value phù hợp SPI_read ( ) thì data sẽ được phát xung ngoài và data nhận được sẽ được trả về . Nếu không có data sẵn sàng , spi_read ( ) sẽ đợi data .
+ Hàm chỉ dùng cho SPI hardware ( SPI phần cứng  ) .


3 / Spi_write ( value ) 
     Spi_write2 ( value ) 


+ Hàm không trả về trị . value là giá trị 8 bit .
+ Hàm này gửi value ( 1 byte ) tới SPI , đồng thời tạo 8 xung clock .
+ Hàm chỉ dùng cho SPI hardware ( SPI phần cứng  ) .


4 / Spi_data_is_in ( ) 
     Spi_data_is_in2 ( ) 
+ Hàm trả về TRUE ( 1 ) nếu data nhận được đầy đủ ( 8 bit ) từ SPI , trả về false nếu chưa nhận đủ .
+ Hàm này dùng kiểm tra xem giá  trị nhận về SPI đã đủ 1 byte chưa để dùng hàm spi_read ( ) đọc data vào biến .








(Nguồn:  TRẦN XUÂN TRƯỜNG)

0 nhận xét:

Đăng nhận xét

Lưu trữ bài viết

Người theo dõi

Thống kê truy cập