Thông báo

Collapse
No announcement yet.

[TUT] Giao tiếp USB bằng PIC18F14K50 + CCS + C# qua WinUSB

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [TUT] Giao tiếp USB bằng PIC18F14K50 + CCS + C# qua WinUSB

    Chào các anh, sau 2 ngày nghiên cứu, và 1 chiều viết TUT, em xin giới thiệu đây là TUT đầu tiên của em, mấy anh chém nhẹ tay .

    Liên kết tới bài viết: https://sites.google.com/site/lhpsci...epusbquawinusb

    Liên kết tới TUT (pdf): https://docs.google.com/open?id=0Bxl...TBYdnRzdnpQc2c

    Hầu như các anh em khi nghiên cứu về USB thường sử dụng HID để truyền theo kiểu Interrupt, và xài Driver của WinDriver để giao tiếp Bulk. Nhưng em sẽ giới thiệu 1 cách khác để có thể truyền kiểu Bulk mà ko cần WinDriver, bằng cách qua WinUSB.

    Driver WinUSB đã được cài sẵn trong máy từ Windows XP SP2 trở về sau (Win XP SP2, SP3, Vista, Win 7 va 8), hỗ trợ giao tiếp theo kiểu Control, Interrupt và Bulk, hỗ trợ nhiều Endpoint. Driver bao gồm lớp Kernel (winusb.sys, cài sẵn trong Windows/System32/driver) và lớp User (winusb.dll, cài ở Windows/System32). Em đã tham khảo cách sử dụng driver WinUSB của Microshop và các mã mẫu của Jan Axelson (tác giả cuốn sách USB Complete). Hy vọng tài liệu này sẽ có ích cho những bạn đang nghiên cứu USB, nhất là những bạn đang cảm thấy HID và giao tiếp kiểu Interrupt có tốc độ ko phù hợp nữa với ứng dụng của mình (64kB/s, còn Bulk nhanh gấp 19 lần ở Full Speed).

    TUT sử dụng PIC 18F14K50, những loại MCU và PIC khác là tương tự.
    Nếu Mod thấy hay thì xin Mod stick bài này của em lên, em cảm ơn ạh.

    P/S: Khi đóng gói phần mềm, bạn chỉ cần bộ cài driver WinUSB (đã hướng dẫn trong TUT), và file thực thi phần mềm (.exe) là đã có thể xài được. Khi qua máy mới, bạn phải cài lại driver theo hướng dẫn trong TUT.

    Link download tài liệu bằng mediafire: http://www.mediafire.com/view/?9z1tdkqqgy2ty7e
    Last edited by minh_cly; 01-08-2012, 00:04.
    Computer Science major - Vietnamese-German University
    Sponsored by

  • #2
    rất hay và ý nghĩa đó em. Cố gắn phát huy

    Comment


    • #3
      bữa mới làm với pic18f4550 + mikroC, giờ có thêm cái này

      Comment


      • #4
        Nguyên văn bởi xe đạp Xem bài viết
        bữa mới làm với pic18f4550 + mikroC, giờ có thêm cái này
        Mình thấy mọi ng chỉ quen xài HID vài WinDriver nên mình giới thiệu cái này. WinUSB còn hiếm hoi trên diễn đàn quá.
        Computer Science major - Vietnamese-German University
        Sponsored by

        Comment


        • #5
          Thanks em, cố gắng phát huy. Bài viết rất hay và xúc tích.
          My Face :

          Comment


          • #6
            Để tiện cho các bạn Download và Xem mình úp hộ lên MediaFireUSB _ Minh_Cly.pdf
            My Face :

            Comment


            • #7
              Nguyên văn bởi hienclubvn Xem bài viết
              Để tiện cho các bạn Download và Xem mình úp hộ lên MediaFireUSB _ Minh_Cly.pdf
              Cảm ơn anh, nhưng Google Docs có chức năng download file mà. Các bạn vào tài liệu của mình, nhấn Ctrl + S là có thể download được tài liệu.
              Computer Science major - Vietnamese-German University
              Sponsored by

              Comment


              • #8
                Nguyên văn bởi minh_cly Xem bài viết
                Cảm ơn anh, nhưng Google Docs có chức năng download file mà. Các bạn vào tài liệu của mình, nhấn Ctrl + S là có thể download được tài liệu.
                Bây giờ em mới biết Google Docs có chức năng này.

                Comment


                • #9
                  Nguyên văn bởi minh_cly Xem bài viết
                  Chào các anh, sau 2 ngày nghiên cứu, và 1 chiều viết TUT, em xin giới thiệu đây là TUT đầu tiên của em, mấy anh chém nhẹ tay .

                  Liên kết tới bài viết: https://sites.google.com/site/lhpsci...epusbquawinusb

                  Liên kết tới TUT (pdf): https://docs.google.com/open?id=0Bxl...TBYdnRzdnpQc2c

                  Hầu như các anh em khi nghiên cứu về USB thường sử dụng HID để truyền theo kiểu Interrupt, và xài Driver của WinDriver để giao tiếp Bulk. Nhưng em sẽ giới thiệu 1 cách khác để có thể truyền kiểu Bulk mà ko cần WinDriver, bằng cách qua WinUSB.

                  Driver WinUSB đã được cài sẵn trong máy từ Windows XP SP2 trở về sau (Win XP SP2, SP3, Vista, Win 7 va 8), hỗ trợ giao tiếp theo kiểu Control, Interrupt và Bulk, hỗ trợ nhiều Endpoint. Driver bao gồm lớp Kernel (winusb.sys, cài sẵn trong Windows/System32/driver) và lớp User (winusb.dll, cài ở Windows/System32). Em đã tham khảo cách sử dụng driver WinUSB của Microshop và các mã mẫu của Jan Axelson (tác giả cuốn sách USB Complete). Hy vọng tài liệu này sẽ có ích cho những bạn đang nghiên cứu USB, nhất là những bạn đang cảm thấy HID và giao tiếp kiểu Interrupt có tốc độ ko phù hợp nữa với ứng dụng của mình (64kB/s, còn Bulk nhanh gấp 19 lần ở Full Speed).

                  TUT sử dụng PIC 18F14K50, những loại MCU và PIC khác là tương tự.
                  Nếu Mod thấy hay thì xin Mod stick bài này của em lên, em cảm ơn ạh.

                  P/S: Khi đóng gói phần mềm, bạn chỉ cần bộ cài driver WinUSB (đã hướng dẫn trong TUT), và file thực thi phần mềm (.exe) là đã có thể xài được. Khi qua máy mới, bạn phải cài lại driver theo hướng dẫn trong TUT.

                  Link download tài liệu bằng mediafire: Free Cloud Storage - MediaFire
                  ok - cố gắng phát huy nhé !

                  Mình đã test thử cái project của bạn ( dùng proteus thôi ) ... nó chạy tốt ( tuy thằng proteus USB driver không hỗ trợ VID , PID ( chỉ nhận là 0000 ) ... máy tính thì nhận Device Image ( chạy win 7 ) .

                  Tuy nhiên ... điều khiển đã chạy tốt ( từ code VC# và CCS ).


                  --- đã từ lâu lắm đã có Component . Net cho thằng winUSB ... Lâu rồi mình không quan tâm không biết giờ nó có phiên bản nào ? Có cái này mà add vào VB , VC ... . NET thì có lẽ gọn gàng mà dễ hơn ấy nhỉ . Thử test xem sao !
                  Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                  Comment


                  • #10
                    Nguyên văn bởi queduong Xem bài viết
                    ok - cố gắng phát huy nhé !

                    Mình đã test thử cái project của bạn ( dùng proteus thôi ) ... nó chạy tốt ( tuy thằng proteus USB driver không hỗ trợ VID , PID ( chỉ nhận là 0000 ) ... máy tính thì nhận Device Image ( chạy win 7 ) .

                    Tuy nhiên ... điều khiển đã chạy tốt ( từ code VC# và CCS ).


                    --- đã từ lâu lắm đã có Component . Net cho thằng winUSB ... Lâu rồi mình không quan tâm không biết giờ nó có phiên bản nào ? Có cái này mà add vào VB , VC ... . NET thì có lẽ gọn gàng mà dễ hơn ấy nhỉ . Thử test xem sao !
                    Còn TUT này nữa, xin bác queduong verify giùm em: http://www.dientuvietnam.net/forums/...18-day-133418/

                    Cái TUT này giúp những ai "có thế mạnh" về trình dịch của MPLAB (như bác kidteam ấy), có thể một phần nào giao tiếp USB mà ko cần chuyển qua microC hay CCS.
                    Computer Science major - Vietnamese-German University
                    Sponsored by

                    Comment


                    • #11
                      bạn minh_cly, bạn cho tôi hỏi bạn dùng ccs version bao nhiêu vậy? Tôi có dịp thử làm giống bạn mà compile bị lỗi, tôi dùng ccs 4.105
                      Cám ơn trước nhá.
                      Attached Files
                      Mãi đi tìm vàng.

                      Comment


                      • #12
                        Tôi làm lại được rồi, 0 errors, 7 warnings. Thấy được .hex file, để tôi sẽ nạp thử và cho biết kết quả, nếu 0 được sẽ réo tiếp.
                        Cám ơn bà con đã đọc.
                        Mãi đi tìm vàng.

                        Comment


                        • #13
                          Có ai gặp trường hợp firmware compile bằng CCS không thể hoạt động trên hệ thống 64 bit không ?
                          Mình compile hoạt động trê Win 32 bit thì OK. Sang 64 bit thì xịt. Máy tính không nhận diện được thiết bị

                          Comment


                          • #14
                            Nguyên văn bởi duong_act Xem bài viết
                            Có ai gặp trường hợp firmware compile bằng CCS không thể hoạt động trên hệ thống 64 bit không ?
                            Mình compile hoạt động trê Win 32 bit thì OK. Sang 64 bit thì xịt. Máy tính không nhận diện được thiết bị
                            Driver cho win 32bit khác với win 64 bit bạn ạ. Bạn chỉnh sửa lại file .inf này thì sẽ chạy được với win 64 bit.
                            Good Luck

                            ;
                            ;
                            ; Installs WinUsb
                            ;

                            [Version]
                            Signature = "$Windows NT$"
                            Class = USBDevice
                            ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
                            Provider = %ManufacturerName%
                            CatalogFile = WinUSBInstallation.cat
                            DriverVer=09/04/2012,13.54.20.543

                            ; ========== Manufacturer/Models sections ===========

                            [Manufacturer]
                            %ManufacturerName% = Standard,NTamd64

                            [Standard.NTamd64]
                            %DeviceName% =USB_Install, USB\VID_0547&PID_1002

                            ; ========== Class definition ===========

                            [ClassInstall32]
                            AddReg = ClassInstall_AddReg

                            [ClassInstall_AddReg]
                            HKR,,,,%ClassName%
                            HKR,,NoInstallClass,,1
                            HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system3 2\setupapi.dll,-20"
                            HKR,,LowerLogoVersion,,5.2

                            ; =================== Installation ===================

                            [USB_Install]
                            Include = winusb.inf
                            Needs = WINUSB.NT

                            [USB_Install.Services]
                            Include =winusb.inf
                            Needs = WINUSB.NT.Services

                            [USB_Install.HW]
                            AddReg=Dev_AddReg

                            [Dev_AddReg]
                            HKR,,DeviceInterfaceGUIDs,0x10000,"{2d541d69-abbf-4594-941c-12a93ed8084c}"

                            [USB_Install.CoInstallers]
                            AddReg=CoInstallers_AddReg
                            CopyFiles=CoInstallers_CopyFiles

                            [CoInstallers_AddReg]
                            HKR,,CoInstallers32,0x00010000,"WdfCoInstaller0101 1.dll,WdfCoInstaller","WinUsbCoInstaller2.dll"

                            [CoInstallers_CopyFiles]
                            WinUsbCoInstaller2.dll
                            WdfCoInstaller01011.dll

                            [DestinationDirs]
                            ; If your INF needs to copy files, you must not use the DefaultDestDir directive here.
                            CoInstallers_CopyFiles=11
                            ; ================= Source Media Section =====================

                            [SourceDisksNames]
                            1 = %DiskName%

                            [SourceDisksFiles]
                            WinUsbCoInstaller2.dll=1
                            WdfCoInstaller01011.dll=1


                            ; =================== Strings ===================

                            [Strings]
                            ManufacturerName="Hà Nội"
                            ClassName="Universal Serial Bus devices"
                            DeviceName="Test USB with PIC18F4550"
                            REG_MULTI_SZ = 0x00010000

                            Comment


                            • #15
                              Nguyên nhân không nhận diện thiết bị có lẽ do phần cứng máy tính và cả firmware bạn ạ. Firmware build bằng mikroc và xc8 thì ok. Ccs thì xịt

                              Comment

                              Về tác giả

                              Collapse

                              minh_cly Tìm hiểu thêm về minh_cly

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X