Bài 8: I2C

Chia sẻ: Bui Duc To | Ngày: | Loại File: PPT | Số trang:18

0
121
lượt xem
38
download

Bài 8: I2C

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao.

Chủ đề:
Lưu

Nội dung Text: Bài 8: I2C

  1. Bài 8: I2C Nội dung  I2C  Ứng dụng giao tiếp I2C
  2. I2C  I2C-Inter Intergrated Circuit- do hãng Phillips phát triển  Nhiều nhà sản xuất IC trên thế giới sử dụng : Texas Intrument (TI), Maxim Dallas, Analog Device, National Semiconductor …
  3. Đặc điểm của I2C  2 dây: Serial Data (SDA) và Serial Clock (SCL)  SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một hướng  Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên  Mỗi thiết bị sẽ được nhận ra bởi một địa chỉ duy nhất  Cấu hình là thiết bị chủ (master) hay tớ (slave) , quyền điều khiển thuộc về thiết bị chủ
  4. Đặc điểm của I2C  Tốc độ : 100Kbits/s – Chế độ chuẩn (Standard mode). 400Kbits/s – Chế độ nhanh (Fast mode) 3,4Mbits/s – Chế độ cao tốc (High speed mode)  Chế độ: - Một chủ một tớ (one master – one slave) - Một chủ nhiều tớ (one master – multi slave) - Nhiều chủ nhiều tớ (Multi master – multi slave)
  5. START and STOP  Điều kiện START: một sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL đang ở mức cao  Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao.
  6. Dữ liệu truyền Bit dữ liệu được truyền đi tại mỗi sườn dương của xung đồng hồ trên dây SCL .
  7.  Sau 8 xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi  Thiết bị nhận, sau khi đã nhận đủ 8 bít dữ liệu sẽ kéo SDA xuống mức thấp tạo một xung ACK  Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc
  8. Định dạng địa chỉ thiết bị  Khi thiết bị chủ muốn giao tiếp với ngoại vi nào trên bus I2C, nó sẽ gửi 7 bit địa chỉ của thiết bị đó ra bus ngay sau xung START  Byte đầu tiên được gửi sẽ bao gồm 7 bit địa chỉ và một bít thứ 8 điều khiển hướng truyền (“0”- ghi, “1”- đọc)  Mỗi một thiết bị ngoại vi sẽ có một địa chỉ riêng do nhà sản xuất ra nó quy định
  9. Truyền dữ liệu từ chủ đến tớ ( ghi dữ liệu) Truyền dữ liệu từ tớ đến chủ (đọc dữ liệu)
  10. I2C- PIC16F877A
  11. Các thanh ghi - SSPCON: Thanh ghi điều khiển - SSPCON2: Thanh ghi điều khiển thứ 2 - SSPSTAT: Thanh ghi trạng thái - SSPBUF: Thanh ghi bộ đệm truyền nhận - SSPSR: Thanh ghi dịch - SSPADD: Thanh ghi địa chỉ
  12. CCS
  13. Các lệnh #use i2c(chế_độ, tốc độ, sda = PIN_C4, scl=PIN_C3…) Chế độ: Master, multi master hay Slave Tốc độ: Slow (100KHz) hay Fast (400KHz) SDA và SCL là các chân i2c tương ứng của PIC - i2c_isr_state(): Thông báo trạng thái giao tiếp I2C - i2c_start(): Tạo điều kiện START( master mode) - i2c_stop(): Tạo điều kiện STOP( master mode) - i2c_read(): Đọc giá trị từ thiết bị I2C, trả về giá trị 8 bit - i2c_write(): Ghi giá trị 8 bit đến thiết bị I2C - i2c_poll(): trả về TRUE nếu đã nhận được 1 byte trong bộ đệm
  14. Bài toán
  15. Sơ đồ
  16. #include #device adc=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000,RESTART_WDT) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include void main() { int8 sec,min, hrs,day,month,yr,dow; ds1307_init();// khoi tao // Set date : 29-8-2008 // Set time : thứ 6 - 10 giờ, 10 phút 10 giây ds1307_set_date_time(29,8,8,6,10,10,10); while(1) { delay_ms(1000); ds1307_get_date(day,month,yr,dow); ds1307_get_time(hrs,min,sec); printf("Ngay:%02d/\%02d/\%02d\r\n",day,month,yr); printf("Thoi gian:%02d/\%02d/\%02d\r\n", hrs,min,sec); printf("Thu:%2d\r\n",dow); } }
  17. Bài toán Giao tiếp giữa 2 vi điều khiển PIC: Master gửi 1 byte xuống Slave, Slave nhận và hiển thị lên PORTB. Giá trị này lại được gửi lại cho Master, Master nhận và hiển thị .
Đồng bộ tài khoản