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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc 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-01-2009, 04:56 PM   #1
vdtk3
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 30
:
Bạn vào trang www.lvr.com có nhiều tài liệu về giao tiếp máy tính.
vdtk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2009, 06:51 PM   #2
hung_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Aug 2008
Bài gửi: 6
:
một tài liệu chắc có thể giúp ích cho bạn
http://dientuvietnam.net/forums/showthread.php?t=20513
chúc bạn thành công. thân
hung_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-08-2009, 03:25 AM   #3
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Em đã nạp được firmware và máy tính đã nhận.Dùng chương trình tạo sẵn của Windriver để kiểm tra kết nối,và send vài dữ liệu được rồi nhưng vẫn chưa hiểu lắm.Bây giờ em muốn làm một cái như thế này :viết một chương trình giao tiếp trên máy tính (bằng vb6 hoặc VC6 hoặc Vb.hôặc VC.net) gồm các ô check box tương ứng với các port b của PIC.Khi ô được check thì led nối với box đó sẽ sáng.Em đang tìm hiểu nhưng gặp rất nhiều khó khăn.Các anh đi trước gợi mở cho em vài ý tưởng được không ?
Em xin cảm ơn !!!
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-08-2009, 09:40 AM   #4
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi thaithien View Post
Em đã nạp được firmware và máy tính đã nhận.Dùng chương trình tạo sẵn của Windriver để kiểm tra kết nối,và send vài dữ liệu được rồi nhưng vẫn chưa hiểu lắm.Bây giờ em muốn làm một cái như thế này :viết một chương trình giao tiếp trên máy tính (bằng vb6 hoặc VC6 hoặc Vb.hôặc VC.net) gồm các ô check box tương ứng với các port b của PIC.Khi ô được check thì led nối với box đó sẽ sáng.Em đang tìm hiểu nhưng gặp rất nhiều khó khăn.Các anh đi trước gợi mở cho em vài ý tưởng được không ?
Em xin cảm ơn !!!
Mình không sử dụng windriver. Nhưng ý tưởng chung là trên windows mọi thứ đều là file và do đó có thể mở bằng hàm CreateFile, truy xuất bằng WriteFile hoặc ReadFile.

Các driver như microchip generic driver, HID, winusb đều cung cấp cơ chế truy xuất thiết bị qua các hàm file I/O.

Windriver có thể tuơng tự như vậy. Để giao tiếp với driver bạn cần kiểm tra code mẫu trên PC mà nó tạo ra dựa vào đó tìm ra cách truy xuất thiết bị.

Công việc còn lại chỉ còn gửi/nhận vài byte, kiểm tra, đóng mở LED.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-08-2009, 08:39 PM   #5
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Mình đang đọc hai cuốn đó bằng tiếng anh.Cũng tương đối.Vậy bạn cho mình xin đi.Thanks trước nhé.
@anh bien_van_khat :anh giải thích thêm cho em một chút được không ?Em chưa hiểu nguyên lý lắm :giả sử như trên giao diện của chương trình giao tiếp xảy ra sự kiện checked của checkbox thì làm sao có thể bật tắt các led trên các port,làm sao chương trình biết các chân của vi điều khiển.Phải chăng chương trình giao tiếp chỉ thực hiện việc truyền các dữ liệu đến vi điều khiển (các endpoint).Còn việc bật hay tắt led thì là nhiệm vụ của chương trình firmware đã nạp cho endpoint.Chẳng hạn mình sẽ viết thế này có được không :
- Phía endpoint :giả sử khi endpoint nhận từ host giá trị là 34 thì nó sẽ bật led Port_B1,nhận giá trị 35 thì bật led Port_B2...
-Còn phía chương trình giao tiếp thì thế này :khi xảy sự kiện checked ở checkbox thì truyền cho endpoint giá trị 34,35.....
Em nghĩ vậy không biết có đúng không nữa.Anh bien_van_khat chỉ dùm em nghen.Em cảm ơn anh nhiều !!!!
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-08-2009, 08:57 PM   #6
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi thaithien View Post
@anh bien_van_khat :anh giải thích thêm cho em một chút được không ?Em chưa hiểu nguyên lý lắm :giả sử như trên giao diện của chương trình giao tiếp xảy ra sự kiện checked của checkbox thì làm sao có thể bật tắt các led trên các port,làm sao chương trình biết các chân của vi điều khiển.Phải chăng chương trình giao tiếp chỉ thực hiện việc truyền các dữ liệu đến vi điều khiển (các endpoint).Còn việc bật hay tắt led thì là nhiệm vụ của chương trình firmware đã nạp cho endpoint.Chẳng hạn mình sẽ viết thế này có được không :
- Phía endpoint :giả sử khi endpoint nhận từ host giá trị là 34 thì nó sẽ bật led Port_B1,nhận giá trị 35 thì bật led Port_B2...
-Còn phía chương trình giao tiếp thì thế này :khi xảy sự kiện checked ở checkbox thì truyền cho endpoint giá trị 34,35.....
Em nghĩ vậy không biết có đúng không nữa.Anh bien_van_khat chỉ dùm em nghen.Em cảm ơn anh nhiều !!!!
Đúng, ý tưởng là vậy.

Tuy nhiên, endpoint không phải là các vi điều khiển.

Endpoint (điểm đầu cuối) là khái niệm về logic.

Nếu kết nối giữa thiết bị và host được xem như 1 sợi dây hay 1 đường ống, thì ở mỗi đầu của đường ống đó là các endpoint. Thiết bị hoặc host đọc/ghi vào các đầu của ống.

Đối với USB, các đường ống này là 1 chiều, nên có endpoint OUT và endpoint IN. In hay out là hướng dữ liệu xét từ phía host. Đôi khi người ta cũng gộp 1 cặp EP OUT và EP IN thành 1 cặp và gọi chung là EP.

Một thiết bị có thể có nhiều endpoint. Tuy nhiên EP0 (gồm EP0 OUT + EP0 IN) là bắt buộc, đây là control EP.

Cứ thêm mỗi 1 hoặc 1 cặp EP mới thì thiết bị có thêm 1 interface. Ví dụ với 1 con PIC bạn có thể làm cả chuột và bàn phím.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]

thay đổi nội dung bởi: bien_van_khat, 04-08-2009 lúc 09:11 PM.
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-08-2009, 10:15 PM   #7
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Securing Your USB Transmission, topic của một kỹ sư của Microchip

http://www.embedded.com/design/testi...8900582?pgno=1
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-08-2009, 02:23 PM   #8
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Có ai có kinh nghiệm lập trình nhận và xuất dữ liệu qua cổng USB của một bảng USB I/O board đã có Driver (của hãng sản xuất), xem trao đổi ở địa chỉ sau:

http://www.dieukhien.net/vn/discuss....3047&pagenum=1

xin trao đổi giùm. Tôi đang muốn dùng Visual Studio/.NET để nhận dữ liệu và xuất dữ liệu tới bảng giao diện USB đã nạp driver (có file dll) rồi liệu có thể được không?

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-08-2009, 08:41 PM   #9
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 HaiAu2005 View Post
Có ai có kinh nghiệm lập trình nhận và xuất dữ liệu qua cổng USB của một bảng USB I/O board đã có Driver (của hãng sản xuất), xem trao đổi ở địa chỉ sau:

http://www.dieukhien.net/vn/discuss....3047&pagenum=1

xin trao đổi giùm. Tôi đang muốn dùng Visual Studio/.NET để nhận dữ liệu và xuất dữ liệu tới bảng giao diện USB đã nạp driver (có file dll) rồi liệu có thể được không?

Hải Âu
Anh Hùng, cái này làm cực kỳ đơn giản, nếu cần thiết anh gửi yêu cầu lên, em nghĩ sẽ có nhà thiết kế làm được cái này cho anh bằng PIC.

Cần có yêu cầu cụ thể hơn.

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 23-08-2009, 11:14 PM   #10
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Nếu Falleap có gửi cho mấy dòng mã làm mẫu giao tiếp hoặc tài liệu nào hướng dẫn ngắn gọn thì tốt. Không/chưa cần làm bằng PIC, chỉ cần chương trình mẫu để sử dụng thiết bị ở Lab thôi. Mình không/chưa có nhu cầu và thời gian làm PIC, hiện tại để phục vụ cho việc phát triển thuật toán điều khiển dùng Driver và USB DAQ Card đã có sẵn thì sẽ nhanh hơn.

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-08-2009, 07:38 AM   #11
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 HaiAu2005 View Post
Nếu Falleap có gửi cho mấy dòng mã làm mẫu giao tiếp hoặc tài liệu nào hướng dẫn ngắn gọn thì tốt. Không/chưa cần làm bằng PIC, chỉ cần chương trình mẫu để sử dụng thiết bị ở Lab thôi. Mình không/chưa có nhu cầu và thời gian làm PIC, hiện tại để phục vụ cho việc phát triển thuật toán điều khiển dùng Driver và USB DAQ Card đã có sẵn thì sẽ nhanh hơn.

Hải Âu
http://www.icsharpcode.net/OpenSourc...b/default.aspx

Nếu anh muốn tự làm cái này thì anh có thể lên mạng gõ đại một cái USB, nó có hàng đống cái người ta đã làm sẵn.

Cái này em nghĩ anh nên đặt hàng ai đó làm sẽ tốt hơn, vì nếu có code mẫu mà anh làm được thì em nghĩ chắc anh đã làm lâu 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 28-08-2009, 12:01 PM   #12
ngocthanh07
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 44
:
Em thấy các anh dần dần bàn về những điều càng ngày càng to lớn và vượt xa kiến thức bình thường của đa số tụi em.
Cho em hỏi một câu

muốn dùng PIC(PIC nào phù hợp) để mở USB, đọc một file text hoặc tạo và ghi vào một file text thì nên làm những gì.
Phần biệt mấy cái Embeeded USB Host, Stack, Mass Storage, HID ... gì đó như thế nào. Chỉ liên quan đến việc mở và đọc file trên USB bằng cách dùng PIC thôi(không liên quan gì đến máy tính ) thì nên xem tài liệu về phần nào.
Quả thật em thấy cái này thật khủng khiếp. Mong các anh nói vài câu đơn giản định hướng giúp em
ngocthanh07 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2009, 12:56 PM   #13
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi ngocthanh07 View Post
muốn dùng PIC(PIC nào phù hợp) để mở USB, đọc một file text hoặc tạo và ghi vào một file text thì nên làm những gì.
Phần biệt mấy cái Embeeded USB Host, Stack, Mass Storage, HID ... gì đó như thế nào. Chỉ liên quan đến việc mở và đọc file trên USB bằng cách dùng PIC thôi(không liên quan gì đến máy tính ) thì nên xem tài liệu về phần nào.
Quả thật em thấy cái này thật khủng khiếp. Mong các anh nói vài câu đơn giản định hướng giúp em
Bus USB là bus Master-Slave, trong đó thiết bị điều khiển bus được gọi là USB host. USB host trong PC là full host, với tính năng đầy đủ.

Embedded Host: USB host với các tính năng tối thiểu, chỉ hỗ trợ 1 số thiết bị nhất định.

Sofware Stack: nói chung là 1 mớ các file mã nguồn, các phần mềm hỗ trợ để thực hiện một giao thức gì đó (USB, TCP/IP, Bluetooth, ZigBee...), để dựa trên nền đó bạn phát triển ứng dụng của bạn. Bạn ko cần phải tự code lại toàn bộ phần giao thức của nó.

Mass Storage Device (MSD): là 1 class của USB, các USB flash drive là MSD.

Nếu bạn muốn mở USB Flash Drive, đọc file trên đó thì cần dùng PIC có USB Embedded Host, có thể tham khảo ở đây:
http://forum.microchip.com/usb

Microchip cung cấp miễn phí stack và rất nhiều ví dụ để thực hiện công việc này.

Bạn có thể xem 1 số demo ở đây:

http://www.picvietnam.com/forum/showthread.php?t=3584
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-09-2009, 12:07 PM   #14
ngocthanh07
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 44
:
Trích:
Nguyên văn bởi bien_van_khat View Post
Nếu bạn muốn mở USB Flash Drive, đọc file trên đó thì cần dùng PIC có USB Embedded Host, có thể tham khảo ở đây:
http://forum.microchip.com/usb

Microchip cung cấp miễn phí stack và rất nhiều ví dụ để thực hiện công việc này.
[/url]
Mình muốn vẽ mạch sử dụng PIC32 để đọc và ghi dữ liệu vào file (Tức là USB Embbedded HOST ?), tham khảo cái
PIC32 USB Starter kit thì thấy nó vẽ sơ đồ như hình đính kèm
Mình muốn hỏi liệu có cần con TPS20X1B (datasheet
http://focus.ti.com/lit/ds/symlink/tps2041b.pdf
)

Nếu cần dùng con đó, thì ở VN có thể mua có không, hoặc nếu không mua có thì có con nào thay thế có thể mua đuợc không ?
Sợ vẽ mạch ra, mua PIC về mà không có con đó cái phải bỏ thì uổng phí.


Mình có tham khảo cái luồng R&P USB Embedded host. http://www.picvietnam.com/forum/showthread.php?t=3584
Trong luồn đó theo sơ đồ R&P vẽ thì đưa thẳng chân VBUS của PIC24 vào chân nguồn của USB rồi nói chúng vào 5V, không hề dùng đến TPS20X1B, liệu với PIC32 mình có thể làm vậy không ?

Thank
Hình Kèm Theo
File Type: jpg hoi.jpg (23.8 KB, 23 lần tải)
ngocthanh07 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-09-2009, 12:55 PM   #15
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi ngocthanh07 View Post
Mình muốn vẽ mạch sử dụng PIC32 để đọc và ghi dữ liệu vào file (Tức là USB Embbedded HOST ?), tham khảo cái
PIC32 USB Starter kit thì thấy nó vẽ sơ đồ như hình đính kèm
Mình muốn hỏi liệu có cần con TPS20X1B (datasheet
http://focus.ti.com/lit/ds/symlink/tps2041b.pdf
)

Nếu cần dùng con đó, thì ở VN có thể mua có không, hoặc nếu không mua có thì có con nào thay thế có thể mua đuợc không ?
Sợ vẽ mạch ra, mua PIC về mà không có con đó cái phải bỏ thì uổng phí.


Mình có tham khảo cái luồng R&P USB Embedded host. http://www.picvietnam.com/forum/showthread.php?t=3584
Trong luồn đó theo sơ đồ R&P vẽ thì đưa thẳng chân VBUS của PIC24 vào chân nguồn của USB rồi nói chúng vào 5V, không hề dùng đến TPS20X1B, liệu với PIC32 mình có thể làm vậy không ?

Thank
Theo PIC32 Family Reference Manual chân Vbus của PIC luôn luôn phải nối vào chân Vbus trên USB connector .

Ở sơ đồ trên, con TPS20x1B dùng để đóng mở nguồn 5v cấp cho device. Nguồn này được đóng mở bằng chân VUSBON, do module USB host điều khiển.

Trong sơ đồ USB Embedded host của RP, PIC được thiết kế chỉ đóng vai trò là Host do đó nó luôn phải cấp nguồn ra USB connector, nên Vbus của connector luôn nối lên 5v.

Đối với PIC32 USB Starter kit, PIC32 được thiết kế để có thể là Host hoặc là Device do đó nó cần phải có cơ chế để ngắt nguồn cấp ra USB connector khi là device. Ở đây người thiết kế sử dụng 1 con switch, thực chất tương đương 1 con MOSFET.

Do đó:
* Nếu bạn muốn PIC của bạn vừa có thể làm device vừa có thể làm host thì bạn cần đặt 1 cái switch ở chân Vbus của USB Connector. Khi làm host thì đóng, khi làm device thì hở. Switch có thể là jumper hay 1 con FET. Trong trường hợp trên board của bạn không có nguồn 5v. Bạn có thể dùng MCP1253-33X50 để chuyển mức từ 3v3 lên 5v, có khả năng cấp 100mA vừa đủ với spec của USB

* Nếu bạn ko cần device mode, thì nối thẳng nó lên 5v.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]

thay đổi nội dung bởi: bien_van_khat, 28-12-2009 lúc 10:36 AM.
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 09:19 PM.


Đượ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