Lecture 8 1 การใช้งาน I 2 C Bus ใช้สองสายได้แก่ Serial Data Line (SDA) ในการรับส่งข้อมูลแบบอนุกรมและ Serial Clock Line (SCL) เป็น สายสัญญาณ Clock สามารถรับส่งข้อมูลด้วยความเร็ว 100 kbits/s รูปที่ 1 การเชื่อมต่อด้วยระบบบัสแบบ I 2 C ตารางแสดงสภาวะบนบัส สภาวะบนระบบบัส SDA SCL 1. Bus not busy Hi Hi 2. Start data transfer Hi 3. Stop Hi 4. Data valid การรับส่งข้อมูล1บิตใช้ clock 1ลูก ขณะรับ/ส่ง ข้อมูลบน SDA ต้องคงที่และ SCL Hi ข้อมูลบน SDA เปลี่ยนแปลงได้เมื่อ SCL Lo X Change Hi Lo 5. Acknowledge ตัวรับจะส่งสัญญาณ Ack เมื่อรับข้อมูลครบ 1 byte แล้ว Lo Hi
12
Embed
การใช้งาน I2C Bus - ecpe.nu.ac.th 08 I2C Bus.pdf · Lecture 8 1 การใช้งาน I2C Bus ใช้สองสายได้แก่ Serial Data Line
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Lecture 8
1
การใช้งาน I2C Bus ใช้สองสายได้แก่ Serial Data Line (SDA) ในการรับส่งข้อมูลแบบอนุกรมและ Serial Clock Line (SCL) เป็น สายสัญญาณ Clock สามารถรับส่งข้อมูลด้วยความเร็ว 100 kbits/s
รูปที่ 1 การเชือ่มตอ่ดว้ยระบบบัสแบบ I2C
ตารางแสดงสภาวะบนบัส
สภาวะบนระบบบัส SDA SCL
1. Bus not busy Hi Hi
2. Start data transfer
Hi
3. Stop
Hi
4. Data valid การรับส่งข้อมูล1บิตใช้ clock 1ลูก ขณะรับ/ส่ง ข้อมูลบน SDA ต้องคงที่และ SCL Hi ข้อมลูบน SDA เปล่ียนแปลงได้เมื่อ SCL Lo
Bit I2C_wrbyte (unsigned dat) // write data , return 0=ok , return 1=error { unsigned char i; bit outbit; for (i=1;i<=8;i++) // send 8 bits { outbit = dat & 0x80; SDA = outbit; // send 1 bit dat = dat <<1; // shift 1 bit SCL_high(); SCL_low(); } SDA = 1; SCL_high(); outbit = SDA; SCL_low(); return(outbit); }
Unsigned char I2C_rdbyte() // read data byte { unsigned char i, dat; bit inbit; dat = 0; for (i=1;i<=8;i++) // read 8 bits { SCL_high(); inbit = SDA; // read 1 bit dat = dat <<1; dat = dat | inbit; SCL_low(); } SDA = 0; SCL_high(); SCL_low(); SDA = 1; return(dat); }
Unsigned char I2C_rdlastbyte() // read data last byte { unsigned char i, dat; bit inbit; dat = 0; for (i=1;i<=8;i++) // read 8 bits { SCL_high(); inbit = SDA; // read 1 bit dat = dat <<1; dat = dat | inbit; SCL_low(); } SDA = 1; SCL_high(); SCL_low(); return(dat); }
Lecture 8
5
การใช้งาน PCF8591 ADC/DAC
รูปที่ 4 คุณสมบัตขิอง PCF8591 ADC/DAC
Address byte Control Byte รูปที่ 5 ไบต์ address และ control ของอุปกรณ ์
ตารางแสดงบติต่างๆ ของ Control Byte บิต การใช้งาน รูปแบบ D0 D1