Tìm Hiểu Về Giao Tiếp I2c ( Master – Slave) - Tài Liệu Text - 123doc
Có thể bạn quan tâm
- Trang chủ >>
- Luận Văn - Báo Cáo >>
- Kinh tế - Quản lý
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.26 MB, 16 trang )
Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpTRƯỜNG ĐẠI HỌC CÔNG NGHỆ-ĐẠI HỌC QUỐC GIA HÀ NỘIKHOA CƠ HỌC KĨ THUẬT VÀ TỰ ĐỘNG HÓABÁO CÁO BÀI TIỂU LUẬNMôn kiến trúc máy tính và mạng truyền thông công nghiệpGiảng viên : Đặng Anh ViệtTìm hiểu về:Giao tiếp I2C ( Master – Slave)Hỗ trợ ôn tậpHỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Mục lụcHỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpI. Giới thiệu chung về I2C( Master – Slave)Phương pháp Master – Slave (chủ - tớ), một trạm chủ (master) có tráchnhiệm chủ động phân chia quyền truy cập bus cho các trạm tớ (slave ). Các trạmtớ đóng vai trò bị động chỉ có quyền truy cập bus và gửi tín hiệu đi kh có yêucầu. Trạm chủ có thể dùng phương pháp hỏi tuần tự theo chu kỳ để kiểm soáttoàn bộ hệ thống. Nhờ vậy các trạm tớ có thể gửi các dữ liệu thu thập được từquá trình kỹ thuật gửi đến trạm chủ cũng như nhận được các thông tin điềukhiển từ trạm chủ. Và chuẩn giao tiếp I2C là một chuẩn giao tiếp sử dụngphương pháp này.Ngày nay trong các hệ thống điện tử hiện đại, rất nhiều IC hay thiết bị ngoạivi cần phải giao tiếp với các IC hay thiết bị khác giao tiếp với thế giới bênngoài. Với mục tiêu đạt được hiệu quả cho phần cứng tốt nhất với mạch điệnđơn giản, Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được gọilà I2C. I2C là tên viết tắt của cụmBus giao tiếp giữa các IC với nhau.từ Inter Intergrated Circuit‐I2C mặc dù được phát triển bới Philips, nhưng nó đã được rất nhiều nhà sảnxuất IC trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp chocác giao ti ếp điều khiển, có thể kể ra đây một vài tên tuổi ngoài Philips như:Texas Intrument (TI), Maxim Dallas, analog Device, National Semiconductor Bus I2Cđược sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại. Viđiều khiển 8051, PIC , AVR, ARM, chíp nhớ như RAM tĩnh (Static Ram), EEPROM, bộchuy ển đổi tương tự số (ADC), số tương tự (DAC), IC điểu khiển LCD, LED…Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập1. Đặc điểm giao tiếp I2CMột giao tiếp I2C gồm có 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 đồnghồ và chỉ theo một hướng. Như hình vẽ trên, khi một thiết bị ngoại vi kết nốivào đường I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCLsẽ nối với dây SCL.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ôngqua mộtđiện trở kéo lên (pullup resistor). Sự cần thiết của các điện trở kéokéo này là vì chân giao tiếp I2C của các thiết bị ngoại vi thường là dạng cựcmáng hở (open drain or open - collector). Giá trị của các điện trở này khác‐nhau tùy vào từng thiết bị và chuẩn giao tiếp thường dao động trong khoảng1KΩ đến 4.7KΩ. Nhìn lại hình 1.1, ta thấy có rất nhiều thiết bị (IC) cùngđược kết nối vào m ột bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầmlẫn giữa các thiết bị, bởi m ỗi thiết bị sẽ được nhận ra bởi một địa chỉ duy nhấtvới một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thểhoạt đông như là thiết bị nhận dữ liệu hay có thể vừa truyền vừa nhận. Hoạtđộng truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ chủ (master) hayHỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậptớ (slave). Một thiết bị hay m ột IC khi kết nối với bus I2C, ngoài một địa chỉ(duy nhất) để phân biệt, nó còn được cấu hình là thiết bị chủ (master) hay tớ(slave). Tại sao lại có sự phân biệt này ? Đó là vì trên một bus I2C thì quyềnđiều khiển thuộc về thiết bị chủ (master). Thiết bị nắm vai trò tạo xung đồng hồcho toàn hệ thống, khi giữa hai thiết bị chủ/tớ giao tiếp thì thiết bị chủ có nhiệmvụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá trình giaotiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trongviêc giao tiếp.Nhìn hình trên ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, còn luồngdữ liệu có thể đi theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ. Về dữliệu truyền trên bus I2C, một bus I2C chuẩn truyền8‐bit dữ liệu có hướng trên đường truyền với tốc độ là 100Kbits/ s – Chế độchuẩn (Standard mode). Tốc độ truyền có thể lên tới 400Kbits/s – Chế độHỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpnhanh (Fast mode) và cao nhất là 3,4Mbits/s – Chế độ cao tốc (High‐speedmode).Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:- 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)Dù ở chế độ nào, một giao tiếp I2C đều dựa vào quan hệ chủ/tớ. Giả thiếtmột một thiết bị A muốn gửi dữ liệu đến thiết bị B, quá trình được thực hiệnnhư sau‐ Thiết bị A (Chủ) xác định đúng địa chỉ của thiết bị B (tớ), cùng vớiviệc xác định địa chỉ, thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bịtớ.- Thiết bị A gửi dữ liệu tới thiết bị B.- Thiết bị A kết thúc quá trình truyền dữ liệu.Khi A muốn nhận dữ liệu từ B, quá trình diễn ra như trên, chỉ khác là A sẽnhận dữ liệu từ B. Trong giao tiếp này, A là chủ còn B vẫn là tớ. Chi tiết việcthiết lập giao tiếp với một thiết bị nào đó trong mạng I2C.2: Bit Start và StopSTART là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOPhiệu kết thúc một giao tiếp. Hình dưới đây mô tả điều kiện START và báoSTOP. Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA vàSCL đều ở mức cao (SDA = SCL= HIGH). Lúc này bus I2C được coi là dỗi(“bus free”), sẵn sàng cho một giao tiếp. Hai điều kiện START và STOP làkhông thể thiếu trong việc giao tiếp giữa các thiết bị I2C với nhau.Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpHình 1.4. Điều kiện START và STOP của bus I2CĐ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 (cao = 1; thấp = 0) báohiệu một điều kiện STARTĐ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.Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ. Sau tínhiệu START, bus I2C coi như đang trong trang thái làm việc (busy). Bus I2C sẽrỗi, sẵn sàng cho một giao tiếp mới sau tín hiệu STOP từ phía thiết bị chủ.Sau khi có một điều kiện START, , trong quá trình giao tiếp, khi có mộttín hiệu START được lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tụctrongtrạng thái bận. Tín hiệu START và lặp lại START đều có chức năng giống nhaulà khởi tạo một giao tiếp.Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập3. Định dạng dữ liệu truyềnDữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền đitại mỗi sườn dương của xung đồng hồ trên dây SCL, quá trình thay đổi bit dữliệu xảy ra khi SCL đang ở mức thấp.Mỗi byte dữ liệu được truyền có độ dài là 8 bits. Số lượng byte có thểtruyền trong một lần là không hạn chế. Mỗi byte được truyền đi theo sau làmột bit ACKđể báo hiệu đã nhận dữ liệu. Bit có trọng số cao nhấtHỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập(MSB) sẽ được truyền đi đầu tiên, các bít sẽ được truyền đi lần lượt. Sau 8xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi. Lúc này 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ạomột xung ACK ứng với xung clock thứ 9 trên dây SDA để báo hiệu đã nhậnđủ 8 bit. Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trìnhtruyền hoặc kết thúc.Một byte truyền đi có kèm theo bit ACK là điều kiên bắt buộc, nhằm đảmbảo cho quá trình truy ền nhận được diễn ra chính xác. Khi không nhận đượcđúng địa hay khi muốn kết thúc quá trình giao tiếp, thiết bị nhận sẽ gửi mộtxung Not ACK(SDA ở mức cao) để báo cho thiết bị chủ biết, thiết bị chủ sẽ tạoxung xung STOP để kết thúc hay lặp lại một xung START để bắt đầu quá trìnhmới.4. Định dạng địa chỉ thiết bịMỗi thiết bị ngoại vi tham gia vào bus i2c đều có một địa chỉ duy nhất,nhằm phân biệt giữa các thiết bị với nhau. Độ dài địa chỉ là 7 – bit, điều đó cónghĩa là trên một bus I2C ta có thể phân biệt tối đa 128 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 đó mà có sự phản hồi tươngứng đến con chủ.Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpM ỗ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. Địa chỉ đó có thể là cố định hay thay đổi. Riêng bit điều khiển hướngsẽ quy định chiều truyền dữ liệu. Nếu bit này bằng “0” có nghĩa là byte dữ liệutiếp theo sau sẽ được truyền từ chủ đến tớ, còn ngược lại nếu bằng “1” thì cácbyte đầu tiên sẽ là dữ liệu từ tớ gửi đến chủ. Việc thiết lập giá trị cho bit này docon chủ thi hành, con tớ sẽ tùy theo giá trị đó mà có sự phản hồi tương ứng đếncon chủ. Việc thiết lập giá trị cho bit này do con chủ thi hành, con tớ sẽ tùy theogiá trị.5. Truyền dữ liệu trên bus I2C, chế độ Master SlaveViệc truyền dữ liệu diễn ra giữa con chủ và con tớ. Dữ liệu truyền có thểtheo 2 hướng, từ chủ đến tớ hay ngược lại. Hướng truyền được quy định bởibit thứ 8 trong byte đầu tiên được truyền đi.Truyền dữ liệu từ chủ đến tớ (ghi dữ liệu). Thiết bị chủ khi muốn ghi dữliệu đến con tớ, quá trình thực hiện là:- Thiết bịchủ tạo xung START.- Thiết bị chủ gửi địa chỉ của thiết bị tớ mà nó cần giao tiếp cùng với bit= 0 ra bus và đợi xung ACK phản hồi từ con tớ.- Khi nhận được xung ACK báo đã nhận diện đúng thiết bị tớ, con chủbắt đầu gửi dữ liệu đến cho con tớ theo từng byte một. Theo sau mỗibyte này đều là một xung ACK. Số lượng byte truyền là không hạn chế.Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập- Kết thúc quá trình truyền, con chủ sau khi truyền byte cuối sẽ tạo xungSTOP báo hiệu kết thúc.Quá trình kết hợp ghi và đọc dữ liệu: giữa hai xung START và STOP, thiết bịchủ có thể thực hiện việc đọc hay ghi nhiều lần, với một hay nhiều thiết bị.Để thực hiện việc đó, sau một quá trình ghi hay đọc, thiết bị chủ lặp lại mộtxung START và lại gửi lại địa chỉ của thiết bị tớ và bắt đầu một quá trìnhmới. Chế độ giao tiếp Master Slave là chế độ cơ bản trong một bus I2C, toànbộ bus được quản lý bởi một master duy nhất. Trong chế độ này sẽ không xảyra tình trạng xung đột bus hay mất đồng bộ xung clock vì chỉ có một masterduy nhất có thể tạo xung clock.6. Chế độ Multi MasterTrên bus I2C có thể có nhiều hơn một master điều khiển bus. Khi đóbus I2C sẽ hoạt động ở chế độ Multi Master. Chế độ này được hiểu là trêntrong trên cùng một bus có thể hiều hơn một thiết bị làm Slave có thể trởthành một Master nếu nó có khả năng trở thành Master ở một thời điểm nàođó. Tuy nhiên nếu sử dụng một IC điều khiển các chip nhớ thì chế độ Multi –Master không ồn tại vì các chip nhớ được thiết kế là Slave, không có khảnăng trở thành Master.II: Modul I2C với PIC1. Modul I2C với PICVới những tiện ích đem lại, khối giao tiếp I2C đã được tích hợp cứng trongkhá nhiều loại vi điều khiển khác nhau. Trong các loại Vi điều khiển PIC dòngMid range phổ biến tại Việt Nam, chỉ từ 16F88 mới có hỗ trợ phần cứng I2C,còn các loại chip khác không có. Với những loại Vi điều khiển không có hỗ trợphần cứng giao tiếp I2C, để sử dụng ta có thể dùng phần mềm lập trình, khi đó tasẽ viết một chương trinh điều khiển 2 chân bất kỳ của Vi điều khiển để nó thựchiện giao tiếp I2C (các hàm START, STOP, WRITE, READ).Trong việc lập trình cho PIC có rất nhiều phần mềm viết chương trình nhưCCS, AMS,Mplab… nhưng tôi chỉ đề cập đến phần giao tiếp I2C sử dụngMplab.Trong Mplab, cần quan tâm đến những câu lệnh sau:Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập OpenI2C(MASTER,SLEW_OFF); // khởi tạo I2C, chọn chip làm chủ hay tớ SSPADD=0x31; // đặt tốc đọ xung clock(SCL) StartI2C();// bắt đầu I2C IdleI2C(); // ACK, đợi phản hồi WriteI2C(noi dung can ghi);// ghi dữ liệu StopI2C();// dừng I2C RestartI2C();// bắt đầu lại I2C AckI2C(); // ACK phản hồi điNotAckI2C(); // NotAck phản hồi đi.2. Ví dụ sử dụng modul I2C của PIC 18f4520 với ds1307( đ ồng h ồ th ờigian thực).DS1307 là chip đồng hồ thời gian thực, khái niệm thời gian thực ở đâyđược dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử dụng, tínhbằng giây, phút, giờ… DS1307 là một sản phẩm của Dallá Semiconductỏ.Chip này có 7 thanh ghi8 bit chứa thời gian là: giây, phút, giờ, thứ, ngày,tháng, năm. Ngoài ra DS1307 còn có một thanh ghi điều khiển ngõ ra phụ và56 thanh ghi trống có thể dùng như RAM. DS1307 được đọc và thông quagiao diện I2C nên cấu tạo bên ngoài rất đơn giản. DS1307 xuất hiện ở hai góiSOIC và DIP có 8 chân.Hình 2.1 Hình ảnh DS1307Các chân của DS1307 được mô tả như sau:Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tập- X1 và X2 là hai ngõ kết nối với một thạch anh 32768KHz làm nguồ tạo daođộng cho chip.- Vbat : cực dương của một pin 3V nuôi chip.- GND: chân mas chung cho cả pin 3V và Vcc.- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển.Chú ý n ếu là Vcc không nguồn nhưng Vbat được cấp thì DS1307 vẫn danghoạt động nhưng không đọc và ghi được.- SQUW/OUT: một ngõ phụ tạo xung vuông, tần số của xung có thể được lậptrình.- SCL và SDA là hai đường giao xung nhịp và dữ liệu của giao diện I2C.Có th ể kết nối DS1307 bằng một mạch điện đơn giản sau:Hình 2.2: Mạch ứng dụng đơn giản của DS1307Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpĐây là một mạch giữa PIC 18f4520 và DS1307 được vẽ trong phầnmềm proteus.Hình 2.3: mạch PIC 18f4520 và DS1307.Mạch trên sử dụng LCD hiển thị thời gian thực từ ds1307, chip PICđược coi như một Master và gọi slave (ds1307) trả lời. . Và đây là chươngtrình của modul I2C PIC 18f4520.Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpHình 2.4: Chương trình với modul I2CVới chương trình này, trên phần mềm proteus sẽ hiển thị kết quả mô phỏnglà:Hỗ trợ ôn tập[ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC]Hỗ trợ ôn tậpHình 2.5: Kết quả mô phỏng proteusĐây chỉ là một ví dụ rất nhỏ và đơn giản trong việc ứng dụng giao tiếpI2C. Ngoài ra còn sử dụng I2C giao tiếp giữa chip này với chip khác, giaotiếp chip với IC, … Vì vậy nó khá phổ biến và quan trọng trong vi điều khiển.
Tài liệu liên quan
- Tìm hiểu về giao dịch quyền chọn OPTION và nghiên cứu các giải pháp nhằm nâng cao hiệu quả sử dụng Option trong kinh doanh tiền tệ .doc
- 77
- 1
- 9
- Tìm hiểu về giao thức định tuyến EIGRP trong Router của CISCO
- 70
- 4
- 58
- Tìm hiểu về giao thức định tuyến BGP
- 52
- 2
- 16
- Tìm hiểu về giao thức định tuyến RIP và cấu hình trên Router
- 64
- 3
- 41
- Tìm hiểu về thiết kế phòng master doc
- 15
- 399
- 0
- Tìm hiểu về giao thức định tuyến border gateway protocol
- 88
- 755
- 0
- Đồ án môn học TÌM HIỂU VỀ GIAO THỨC PPTP
- 56
- 676
- 6
- tìm hiểu về giao diện, giao thức các hệ thống mạng trong công nghiệp
- 112
- 448
- 0
- chuyên đề tìm hiểu về giao thức liên lạc trên internet
- 13
- 612
- 0
- tìm hiểu về giao thức truyền tải thời gian thực rtp
- 15
- 1
- 3
Tài liệu bạn tìm kiếm đã sẵn sàng tải về
(2.31 MB - 16 trang) - Tìm hiểu về giao tiếp i2c ( master – slave) Tải bản đầy đủ ngay ×Từ khóa » Tìm Hiểu Về I2c
-
Chuẩn Giao Tiếp I2C Là Gì - ĐIỆN TỬ TƯƠNG LAI
-
Giới Thiệu Chuẩn Giao Tiếp I2C
-
Giao Tiếp I2C - DevIOT
-
1_Chuẩn Giao Tiếp I2C - Kỹ Sư Nghèo
-
Giao Tiếp I2C — Tài Liệu ESP32 1.0
-
Giao Tiếp I2C Với Nhiều Module | Cộng đồng Arduino Việt Nam
-
I²C – Wikipedia Tiếng Việt
-
Giao Thức I2C Và Giao Tiếp Với Cảm Biến Nhiệt Hồng Ngoại MLX90614
-
Giới Thiệu Chuẩn Giao Tiếp I2C - Blog Chia Sẻ Kiến Thức Và Đam Mê ...
-
Giao Tiếp I2C Là Gì
-
Chuẩn Giao Tiếp I2C Là Gì - Christmasloaded
-
Giao Tiếp I2c Là Gì
-
Tìm Hiểu Về Chuẩn I2C - Trung Tâm đào Tạo Thiết Kế Vi Mạch Semicon
-
Lập Trình C Cho Hệ Thống Nhúng (P4- Giao Tiếp I2C Trong V850E)