Thứ Hai, 3 tháng 12, 2018

CHƯƠNG 6 : GIAO TIẾP SPI – I2C VÀ PARALLEL


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ớiSDI 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 ghigở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 | 
       →SPI_MASTER , SPI_SLAVE , SPI_SS_DISABLED 
       →SPI_L_TO_H , SPI_H_TO_L 
       →SPI_CLK_DIV_4 , SPI_CLK_DIV_16 , SPI_CLK_DIV_64 , SPI_CLK_T2 
_Nhóm 1 xác định VDK là master hay slave ,slave select 
_Nhóm 2 xác định clock cạnh lên hay xuống . 
_Nhóm 3 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 .

Không có nhận xét nào:

Đăng nhận xét

Bài đăng mới nhất

Valdes Fernando - Microcontrollers Applications With Pic

Bài đăng phổ biến