PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 03-10-2006, 02:23 PM   #1
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
Anh oi, em chua hieu ve I2C lam va tren dien dan lai chang thay ai noi ve chuyen nay. Trong giao thuc I2C trong CCS co ham i2c_read(), nhung ham do chi la ham doc tu master truyen xuong slave dung ko a? Cai ma tui em dang can la nhu vay: master truyen xuong 10byte (10byte nay chua gia tri la vi tri muon dieu khien dong co rc), sau do slave se doc 10 byte do va xuat gia tri dieu khien cho tung dong co ung voi tung byte da duoc truyen tu master. Nhung em ko thay ai noi ve chuyen nay va co thac mac nhu sau, anh chi dum em nhe
- Du lieu tu master truyen xuong se vao dau trong slave(eeprom?),neu trong eeprom thi lam sao de con slave co the lay ra va su dung cac gia tri do?
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 02:41 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi hoangminh1234 View Post
Anh oi, em chua hieu ve I2C lam va tren dien dan lai chang thay ai noi ve chuyen nay. Trong giao thuc I2C trong CCS co ham i2c_read(), nhung ham do chi la ham doc tu master truyen xuong slave dung ko a? Cai ma tui em dang can la nhu vay: master truyen xuong 10byte (10byte nay chua gia tri la vi tri muon dieu khien dong co rc), sau do slave se doc 10 byte do va xuat gia tri dieu khien cho tung dong co ung voi tung byte da duoc truyen tu master. Nhung em ko thay ai noi ve chuyen nay va co thac mac nhu sau, anh chi dum em nhe
- Du lieu tu master truyen xuong se vao dau trong slave(eeprom?),neu trong eeprom thi lam sao de con slave co the lay ra va su dung cac gia tri do?
Bạn đọc thật kỹ tutorial của picvietnam do Linh viết ở ngay bài đầu tiên của luồng này (falleaf gửi thay cho Linh).

Linh viết bài này có một số vấn đề truyền tải chưa được rõ lắm do cách dùng câu chữ mà thôi. F viết lại đôi chút như sau:

trong giao tiếp I2C, có thể có (1 master và 1 slave) hoặc (1master và nhiều slave). Đây là giao thức chuẩn. Tuy nhiên, cải tiến giao thức này một chút, chúng ta sẽ có mạng I2C (nhiều master, mỗi con thay phiên làm master)..

Chúng ta chỉ đề cập giao tiếp I2C ở dạng chuẩn, tức là có duy nhất 1 master trong mạng.

Khi muốn dữ liệu truyền từ A tới B. Có nhiều trường hợp xảy ra như sau:
A là master, B là slave: khi đó A sẽ gửi một loạt dữ liệu có định dạng sẵn (các bạn xem lại định dạng I2C), thì trong định dạng đó có bao gồm mấy thông tin như sau (master muốn đọc hay muốn ghi? địa chỉ của slave là bao nhiêu? master có muốn kiểm tra bằng xung ACK, tức là xung báo đã truyền nhận đầy đủ hay không? và nội dung dữ liệu (nếu master muốn ghi), và địa chỉ thanh ghi của slave (nếu master muốn đọc một thanh ghi nào đó trong slave).

Nếu A là slave, thì slave không được quyền muốn. Khi nào master kêu nhận thì phải nhận, khi nào master kêu gửi, thì phải gửi. Slave thì không được quyền muốn. Nếu muốn thì làm nô tì I-Sau-ra .

Còn nếu cả A và B đều là slave, khi master cần truyền dữ liệu từ A sang B, thì Master phải yêu cầu A gửi cho master, nhận xong, master gửi lại cho B.

Như vậy vấn đề học giao tiếp I2C, chỉ đơn giản là học cách định dạng dữ liệu trong frame truyền của I2C (mô tả sơ bộ ở trên), và học cách nối mạng giữa mạng điện áp thấp và điện áp cao (vd: một thiết bị I2C 3.3V, kết nối với thiết bị 5V thì làm thế nào?).. kiểu như vậy thôi là các bạn đã có thể thiết kể rất nhiều ứng dụng với I2C, và làm việc với rất nhiều thiết bị rồi.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 04:01 PM   #3
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
tức là con tớ hoàn toàn bị động trong trường hợp này sao? Nó không thể nào lấy tí thông tin nào đem bán cho các điệp viên để kiếm chút cháo sao? Buồn vậy! Vậy theo anh làm sao giải quyết bài toán mà tụi em đang gặp phải nhỉ:

Một con chủ truyền 10 byte cho con tớ và con tớ có toàn quyền sử dụng 10 byte này??
anh cho em xin ý kiến nhé
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 09:46 PM   #4
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi hoangminh1234 View Post
Một con chủ truyền 10 byte cho con tớ và con tớ có toàn quyền sử dụng 10 byte này??
anh cho em xin ý kiến nhé
Khi con Slave nhận được dữ liệu, thì nó nằm trong thanh ghi đệm, thanh ghi nào thì F quên rồi, và khi đã nằm trong bộ đệm của nó, thì nó có toàn quyền sử dụng. Nó thích làm gì thì làm.

Các bạn lưu ý rằng, F nói trường hợp nâng cao, thì chúng ta hoàn toàn có quyền sử dụng mạng Multi Master. Khi bạn setup chip ở chế độ Slave, thì nó thụ động. Nhưng hãy thử nghĩ, tôi làm slave cho mạng này, và làm master của một mạng khác, vậy thì có được không? Vì tôi có tới 40 chân chứ không phải 2 chân.

Vậy nếu tôi làm master cho một mạng khác, mà trong đó slave của tôi lại là master của cái mạng mà tôi làm slave . Hoàn toàn được.

Nhưng vấn đề nâng cao ở chỗ nữa, nếu làm như vậy, tôi phải tốn 4 dây để làm 2 mạng. Vấn đề trước đây hình như F đặt ra cho Linh, nhưng Linh chưa giải quyết xong, đó là Multi Master trong một mạng dùng 2 dây thôi.

Vấn đề này F tiếp tục treo ở đây chờ người giải quyết.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-10-2006, 12:41 AM   #5
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
Trích:
Nguyên văn bởi falleaf View Post
Khi con Slave nhận được dữ liệu, thì nó nằm trong thanh ghi đệm, thanh ghi nào thì F quên rồi, và khi đã nằm trong bộ đệm của nó, thì nó có toàn quyền sử dụng. Nó thích làm gì thì làm.

Các bạn lưu ý rằng, F nói trường hợp nâng cao, thì chúng ta hoàn toàn có quyền sử dụng mạng Multi Master. Khi bạn setup chip ở chế độ Slave, thì nó thụ động. Nhưng hãy thử nghĩ, tôi làm slave cho mạng này, và làm master của một mạng khác, vậy thì có được không? Vì tôi có tới 40 chân chứ không phải 2 chân.

Vậy nếu tôi làm master cho một mạng khác, mà trong đó slave của tôi lại là master của cái mạng mà tôi làm slave . Hoàn toàn được.

Nhưng vấn đề nâng cao ở chỗ nữa, nếu làm như vậy, tôi phải tốn 4 dây để làm 2 mạng. Vấn đề trước đây hình như F đặt ra cho Linh, nhưng Linh chưa giải quyết xong, đó là Multi Master trong một mạng dùng 2 dây thôi.

Vấn đề này F tiếp tục treo ở đây chờ người giải quyết.

Chúc vui.
bác Falleaf nghĩ cao siêu quá, cái em hỏi chỉ ở mức cơ sở, chưa nâng cao dữ vậy đâu anh. Theo em nghĩ với yêu cầu truyền một số lượng byte ( 10 byte chẳng hạn) từ một con pic này sang một con pic khác là yêu cầu rất hay gặp . Anh Falleaf nghĩ cao quá nên vẫn chưa trả lời em câu hỏi này nhỉ?
Em nghĩ rằng dữ liệu truyền từ master sang slave sẽ được lưu tạm trong thanh ghi SSPBUF. Nếu mình lấy ra xài đúng lúc thì sẽ giải quyết được câu hỏi mà em đang đặt ra, được ko anh?
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-10-2006, 02:15 AM   #6
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Anh nói là em đọc lại bài tutorial và frame truyền!

Em chưa đọc kỹ cái bài bạn Thanh Hà gửi về hai cái app mà anh giới thiệu sao?

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 06:17 PM   #7
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
Trích:
Nguyên văn bởi falleaf View Post
và địa chỉ thanh ghi của slave (nếu master muốn đọc một thanh ghi nào đó trong slave).
cai nay sao em ko thay trong CCS noi nang gi toivay anh? Nếu ta biết được địa chỉ thanh ghi bên slave thì hoàn toàn có thể lấy ra xài rồi.
Em vừa đọc cái SPI, thấy con tớ đọc dữ liệu trong thanh ghi SSPBUF ( được master truyền xuống) sau đó xuất ra port B.
file: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Nó làm em nghĩ rằng ko biết mình có thể làm tương tự với i2c ko?? cao huynh nào rành i2c cho ý kiến nhé

thay đổi nội dung bởi: hoangminh1234, 03-10-2006 lúc 06:21 PM.
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 09:47 PM   #8
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi hoangminh1234 View Post
cai nay sao em ko thay trong CCS noi nang gi toivay anh? Nếu ta biết được địa chỉ thanh ghi bên slave thì hoàn toàn có thể lấy ra xài rồi.
Em vừa đọc cái SPI, thấy con tớ đọc dữ liệu trong thanh ghi SSPBUF ( được master truyền xuống) sau đó xuất ra port B.
file: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Nó làm em nghĩ rằng ko biết mình có thể làm tương tự với i2c ko?? cao huynh nào rành i2c cho ý kiến nhé
Bạn đọc lại frame truyền từ Master đến Slave ở hai chế độ ghi và đọc

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:42 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam