DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển PIC

Lập Trình PIC – Bài 6: Giao tiếp SPI với PIC16f877A

26 Tháng Sáu, 2022
in PIC, Vi Điều Khiển
553 6

GIAO TIẾP SPI VỚI PIC16F877A

I. GIỚI THIỆU 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 – SCK 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 đó Ví dụ  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ụ .

II.Danh sách các hàm :

1.Setup_spi (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 ) 

  • 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 .
Tags: PIC16F877Aspispi với pic
Share415Tweet259

Related Posts

Chuẩn giao tiếp SPI và cách kết nối
Điện Tử Cơ Bản

Chuẩn giao tiếp SPI và cách kết nối

21 Tháng Sáu, 2022
Lập Trình PIC – Bài 4: Hướng dẫn code đọc ADC với vi điều khiển PIC
PIC

Lập Trình PIC – Bài 4: Hướng dẫn code đọc ADC với vi điều khiển PIC

26 Tháng Sáu, 2022
Lập Trình PIC – Bài 2: Giao tiếp I2C PIC với IC thời gian thực DS1307
PIC

Lập Trình PIC – Bài 2: Giao tiếp I2C PIC với IC thời gian thực DS1307

26 Tháng Sáu, 2022
Next Post
Lập trình Arduino – Giới thiệu và hướng dẫn kết nối Module Lcd I2C [PCF8574] trên Kit Arduino Uno

Lập trình Arduino - Giới thiệu và hướng dẫn kết nối Module Lcd I2C [PCF8574] trên Kit Arduino Uno

Lập trình Arduino – Hướng dẫn kết nối LCD OLED 0.9 [SSD1306] với ARduino Uno

Lập trình Arduino - Hướng dẫn kết nối LCD OLED 0.9 [SSD1306] với ARduino Uno

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz