Ứng dụng thứ hai là sự trợ giúp lớn và kinh nghiệm lớn để hiểu USB, theo sự
phát triển của ứng dụng trước đây áp dụng vào các điểm khác để phát triển và thực hiện cho thực thi này và firmware được dùng cho các công cụ làm việc khác này, được mô tảởchương trước, tiếp cận đang sử dụng là mã hoạt động:
# Include <18F4455.h>
# Fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN
# Use delay (clock = 48000000)
# Define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT # Define USB_EP1_TX_SIZE 8
# Define USB_EP1_RX_SIZE 8 # Include <pic18_usb.h>
# Include <usb_desc_hid.h> # Include <usb.c>
Đây là phần header cần thiết để thiết lập truyền thông với DCI và có thể tạo HID lớp ứng dụng, phần đầu usb_desc_hid.h thực hiện việc này.
Ứng dụng dùng 5 đầu vào tương tựsau đây cần cấu hình CIP để làm việc với thuỷ tinh có tốc độ 20 MHz cho tốc độ 48 MHZ:
Setup_adc (ADC_CLOCK_INTERNAL); Setup_adc_ports (AN0);
Set_adc_channel (0);
Phần còn lại là logic cần thiết để có thể thiết lập quan hệ giữa chúng, nhấn nút hay nhấn nút trên máy host chỉ cần để biết tên bản ghi CIP và gửi cuộc gọi một cách thích hợp.
Đặc tính khác được thể hiện trong mã thông báo. Phần Mềm
Phát triển lập trình tại host được thực hiện bằng Microsoft Visual ++, logic của
chương trình, tương tựnhư ứng dụng trước
Sau đây là cấu trúc chương trình trong ứng dụng này: Usb_Ej_1.dsp
File (file project) này chứ thông tin về cấp project và được dùng để xây dựng
project đơn hay project con. Người dùng ngoài có thể chia sẻ file project (.dsp) nhưng không được xuất file khởi tạo nội bộ.
Usb_Ej_1.h
Đây là phần header của file chính cho ứng dụng. Project khác gồm có header đặc biệt (gồm resource.h) và khai báo lớp ứng dụng Cusb_Ej_1App.
Usb_Ej_1.cpp
Usb_Ej_1.rc
Đây là danh sách tất cả các tài nguyên của Microsoft Windows mà chương trình sử dụng gồm có các icon, điểm ảnh, con trỏđược lưu trong thư mục con của RES. File này có thể viết trực tiếp vào Microsoft Visual C++.
Usb_Ej_1.clw
File này chứa thông tin để ClassWizard sử dụng khi phác thảo các lớp hay thêm lớp mới. ClassWizard cũng dùng file này để chứa thông tin cần thiết để tạo, soạn danh
sách các thông điệp, trình bày dữ liệu cho hội thoại và tạo tác vụ như thành phần nguyên bản.
Res \ Usb_Ej_1.ico
Đây là icon của file dùng cho icon ứng dụng. Icon này có trong file tài nguyên chính Usb_Ej_1.rc.
Res \ Usb_Ej_1.rc2
File này chứa tài nguyên không được viết bằng Microsoft Visual C++. Bạn nên
đặt tất cả các tài nguyên không được chỉnh sửa bời bảng phác thảo tài nguyên vào file này.
UsbHidApi.lib
File này cung cấp thông báo vềchương trình với DLL cùng tên. Kết quả
Giao diện được phát triển hỗ trợ truyền thông USB điều khiển ba kiểu truyền dữ
Hình 11: Giao diện được phát triển hỗ trợ truyền thông USB 3.13 Kết luận
Project được thực hiện qua bắt ngoặt lớn khi chúng ta kiểm soát do điều này chưa được biết đến.
Khi phát triển project có thể thấy rằng có nhiều cách truyền thông bằng bus hơi
phức tạp do nó gồm nhiều giao thức. Việc truyền thông này không được thực hiện theo
hướng như trường hợp cổng song song hay cổng nối tiếp mà dùng driver để truy nhập vào.
Có thể có vô hạn driver này do có thể tạo ra các driver riêng giống nhau, vấn đề là độ phức tạp của thuật toán được phát triên. Trong trường hợp project của ta, ta chọn sử dụng DLL “UsbHidApi” là phần mềm thương mại, file này khiến mạch máy tính phát hiện ra dạng của HID (Thiết bị giao diện người dùng), tương tự với chuột, joystick, bàn phím …
Những phát triển của project này đã mở ra cánh cửa để sử dụng tốt loại bus này,
được coi là bảng bus. Dựa trên ứng dụng này qua PIC, có thể thực hiện được rất nhiều
ứng dụng hay trong công việc khi bất cứ thiết bịđược phát triển nào có thểđược giám
sát và điều khiển qua bus này.
Chú trọng đến vi điều khiển PIC là vi điều khiển phổ biến nhất hiện nay cho các
ứng dụng đó, các chức năng luồng cần cho truyền thông với bus USB và chuyển đổi nội dung tương tự - số cho thiết bị.
Nguồn thông tin. Internet
Diễn đàn thảo luận.
Hướng dẫn lập trình ngôn ngữ Visual C++. Trang web (www.microchip.com).
Khuyến nghị.
Bước thực hiện để nghiên cứu và hiểu được bus này là quan trọng và giải đáp
những câu hỏi cơ bản khiến cho công việc nghiên cứu rõ ràng hơn.
Nên mua thiết bị ghi PIC như yêu cầu để phát triển thêm ứng dụng và hiểu bus USB.
CHƯƠNG IV
CÔNG NGHỆ USB QUA MICROCHIP 18F4550
4.1 Giới thiệu
Tài liệu này giới thiệu nền tảng cơ bản để khám phá công nghệ liên kết với các thiết bị USB. Nó cung cấp chi tiết cần thiết để giả lập một bảng phát triển, chương
trình và thí nghiệm với vi xử lý Microchip 18F4550.
Sơ đồ thực hiện dùng ởđây sử dụng việc kết hợp cách tiếp cận dùng trong giao diện CREATE USB (CUI, phụ lục 3) và pic18fusb.online.fr Wiki (Phụ lục 1). Cả hai
đều sử dụng kỹ thuật tải khởi động và phần mềm liên kết với bảng thể hiện USB toàn tốc Microchip PICDEM.
Tất cả các phần mềm dùng trong bảng phát triển có thể download miễn phí gồm có bộ biên dịch MPLAB C18 C phiên bản dùng cho sinh viên.
4.2 Vi xử lý 18f4550
Vi điều khiển Microchip PIC 18F4550 là một thiết bị phổ biến để kết nối với USB. Nó có giao diện USB 2.0 toàn tốc tích hợp sẵn. Thiết bị có sẵn nhiều ví dụ nên dễ dàng bắt đầu thí nghiệm công nghệ. PIC 18F4550 gồm 13 lối vào tương tự/số, 18 cổng vào/ra chung và một bộ chỉ thị kiểu RISC mạnh. Thiết bị có bộ nhớ16K đểlưu chương trình. Do cho phép sử dụng USB, bạn có thể có sẵn 1024 byte RAM đểlưu dữ
liệu (có thể 2048 byte).
4.3 Lắp ráp bảng phát triển
Phụ lục A cung cấp danh sách các thành phần, sơ đồ và ảnh các đơn vị hoàn thiện.
Quá trình phát triển
Hình 12 : Quá Trình Phát Triển
Trước khi lập trình lần đầu cho bảng phát triển, bạn phải download mã tải khởi
động vào 18f4550. Đọc phần có tiêu đề “Truyền tải khởi động vào 18F4550” để xem chi tiết về quá trình này.
Các chương trình được viết và phát triển trong Microchip MPLAB. Các chương
trình có thể phát triển bằng ngôn ngữ hợp ngữ hay C.
Sử dụng môi trường MPLAB để gọi bộ biên dịch C18 C hay bộ hợp ngữ. C18 hay bộ hợp ngữ sẽ biên dịch file .asm của bạn hay mã C thành file .hex.
Lập trình cho PIC 18F4550 bằng cách download file .hex qua tải khởi động dùng
chương trình PDFSUSB.EXE (lưu trú tại C:\MCHPFSUSB\Pc\Pdfsusb\PDFSUSB.exe trong MCHPFSUSB USB Framework).
Để bảng phát triển hiện ra thực đơn PDFSUSB.EXE, phải reset bảng và giữ phím “button”.
Trong môi trường PDFSUSB.EXE: Tải file Hex
Lập trình thiết bị
Thực hiện
Nó sẽ tải file hex vào 18F4550 và khởi tạo thực hiện trong thiết bị.
Phần mềm cần thiết
Phần mềm sau có thể download từ Microchip:
MPLAB IDE – môi trường phát triển để xây dựng ứng dụng.
Bộ biên dịch MPLAB C18 C Phiên bản cho sinh viên – có thể sử dụng với
MPLAB IDE để phát triển ứng dụng bằng C.
MCHPFSUSB USB Framework - gồm tải khởi động và các ví dụđể sử dụng với bảng phát triển.
Tài liệu
Tài liệu được liệt kê dưới đây sẽ có ích trong việc vận hành môi trường phát triển. Nó có thể download từ Microchip (www.microchip.com)
MPLAB IDE User’s Guide – Microchip document DS51519B Release Notes for MPLAB C18 C Compiler, Student Edition
MPLAB C18 COMPILER USER’S GUIDE – Microchip document DS51288J MPLAB C18 C Compiler Getting Started – Microchip document DS51295F MPLAB C18 Libaries Documentation – Microchip document DS51297F Release Notes for MCHPFSUSB – Microchip Full-Speed USB Solutions PICDEM FS USB Demonstration Board User’s Guide – DS51526A
4.3 Truyền tải khởi động vào 18F4550
Xem Phụ lục B – “Phần cứng để tải mã vào 18f4550” nói về các thiết bị để
truyền tải khởi động vào chip 18f4550.
Lần đầu tiên lập trình cho bảng phát triển, phải dùng chương trình ICD2 thay cho PDFSUSB.EXE. Nguyên nhân là do PIC hoàn toàn trống khi đem từ nhà máy về và bạn phải tải file hex cho tải khởi động vào PIC để kích hoạt các phiên lập trình trong
tương lai qua PDFSUSB.EXE.
File hex tải khởi động được lưu trong mã MCHPFSUSB USB Framework. Trong MPLAB, mở file hex “C:\MCHPFSUSB\fw\Boot\_output\MCHPUSB.hex”, chọn
chương trình ICD2 và click vào thiết bị lập trình. Nó sẽ truyền mã tải khởi động vào 18f4550.
Vào chếđộ tải khởi động
Mã biên dịch dạng file .hex có thể download bằng chương trình PDFSUSB.EXE.
Để download mã vào 18f4550 qua PDFSUSB.EXE, làm như sau:
Mởứng dụng PDFSUSB.EXE.
Kiểm tra cửa sổ thả“Select PICDEM FS USB Board” để xem bảng điều khiển có hiện ra không. Nếu có thì bạn sẽ thấy phần “PICDEM FS USB (0) Boot”. Chọn phần
này. Đến bước 4.
Nếu “PICDEM FS USB (0) Boot” không hiện ra, làm như sau để vào chế độ tải khởi động 18f4550:
Nhấn và giữ khoá S2.
PC sẽ kêu “beep” chỉ thị rằng 18f4550 bây giờ đã có trong ứng dụng PDFSUSB.EXE. Trong Device Manager, thiết bị sẽ xuất hiện dưới Other Devices – PIC 18F4550 Family Device.
Trở lại bước 2.
Mã biên dịch bây giờ có thể đownloa vào 18f4550 nhờ các thao tác trong ứng dụng PDFSUSB.EXE sau:
Tải file Hex. Lập trình thiết bị. Thực hiện.
PC sẽ kêu “beep” chỉ thị 18f4550 bây giờ đang hoạt động và không ở chếđộ tải khởi động nữa.
Nhấn S1 để nó tự khởi động lại ứng dụng được nạp vào 18f4550. Ngay cả khi
ứng dụng Demo Tool đang chạy ở chếđộ tải khởi động thì một lần reset bảng đơn giản (nhấn S1) sẽ không làm bảng tự vào chếđộ tải khởi động.
Nếu đây là lần đầu tiên bạn sử dụng tải khởi động thì máy tính sẽ không nhận firmware tải khởi động, vì vậy bạn phải cài driver (chỉ cần một lần). Khi Windows thông báo “Found New Hardware”, click “No, not this time” rồi chọn “Install from list”. Rồi click vào “Browse …” và chọn thư mục “C:\MCHPFSUSB\Pc\MCHPUSB Driver\Release” rồi “Next”, “Continue Anyway” và “Finish”.
4.4 Phát triển ứng dụng trong MPLAB IDE
Các bước sau để tạo ra một ứng dụng mới cho 18f4550 dùng chế độ tải khởi
động để download cho thiết bị. Mở MPLAB IDE
Từ thực đơn MPLAB Project, chọn Project Wizard. Click “Next”.
Chọn thiết bị (PIC18F4550).
Chỉnh lại Active Toolsuite là “Microchip C18 Toolsuite”.
Tạo một file project mới. Tạo một thư mục mới cho project (C:\MCHPFSUSB\fw\MyPro1). Đặt tên cho project (ví dụ MyPro1).
Thêm file vào project này. Thêm file “C:\MCHPFSUSB\fw\Demo02\rm18f4550”. Tạo một file đểlưu chương trình C. File|New. Thêm mã, Save As (ví dụ Mypro1.c). Thêm Mypro1.c vào project. File|Add new file to project.
Biên dịch Project|Build All.
Sau khi biên dịch thành công, vào chếđộ tải khởi động với 18f4550. Sử dụng ứng dụng PDFSUSB.EXE để tải chương trình vào 18f4550.
Chú ý rằng script linker đặc biệt (rm18f4550.lkr) được dùng cho ứng dụng tải khởi động. Trong rm18f4550.lkr, reset, vector ngắt có ưu tiên cao và thấp được xếp ngoài khối khởi động đểngăn ghi đè lên nó.
Ví dụ - Tải file Hex Demo02 vào 18f4550
Khi bạn đã truyền được tải khởi động vào 18f4550, bạn có thểdùng chương trình
PDFSUSB.EXE để tải file chương trình vào thiết bị.
Để vào chếđộ tải khởi động, nhấn phím chương trình trên bảng phát triển trong khi vẫn cắm cáp USB hay reset lại bảng. Nếu đây là lần đầu tiên bạn dùng tải khởi
động thì máy tính của bạn sẽ không nhận firmware tải khởi động, vì vậy bạn phải cài driver (chỉ cần một lần). Khi Windows thông báo “Found New Hardware”, click “No, not this time” rồi chọn “Install from list”. Rồi click vào “Browse …” và chọn thư mục “C:\MCHPFSUSB\Pc\MCHPUSB Driver\Release” rồi “Next”, “Continue Anyway” và “Finish”.
Ví dụ sau đây trình bày về thủ tục tải khởi động cho project Microchip Demo02,
chương trình kiểm thử có thểđược tải khởi động.
MPLAB: Với MPLAB, mở, (chỉnh lại) và xây dựng (lại) project “C:\MCHPFSUSB\fw\Demo02\Demo02.mcp”.
BOARD: Vào chếđộ khởi động bằng cách nhấn [S1 Reset] trong khi vẫn giữ [S2 enter Boot/Program].
PDFSUSB: Mở công cụ Microchip:
“C:\MCHPFSUSB\Pc|Pdfsusb\PDFSUSB.exe” (“tiện ích Microchip USB – Boot Loader”).
PDFSUSB: Trong danh sách thả xuống, chọn PIC, đặt tên là “PICDEM FS USB 0 (Boot)”.
PDFSUSB: Click “Load Hex file”:
“C:\MCHPFSUSB\fw\Demo02\Demo02.hex”. PDFSUSB: Click “Program Device”.
PDFSUSB: Click “Execute” để khởi động PIC trong chế độ người dùng (bỏ qua khuyến cáo lỗi, nó chỉdùng để reset thiết bị).
Chương trình Demo02 khi nhấn S2 thì trạng thái chân RD1 phải thay đổi (0V lên 5V …).
Xem Phụ lục C về các thành phần phụ được gắn vào chiếu sáng LED cho bảng phát triển.
Ví dụ - Chuyển từ giao diện RS-232 sang USB Các phần mềm hữu ích khác
Các phần mềm sau đây được đánh giá là hữu ích khi sử dụng bảng phát triển:
Windows Device Manager – Vào Windows Device Manager bằng cách click Start, Setting, Control Panel, icon System, tab Hardware và click nút Device Manager. Device Manager hoạt động dễ dàng hơn nhiều nếu mởchương trình devmgmt.msc từ
cửa sổ dòng lệnh.
DevCon – là một tiện tích dòng lệnh thay thế cho Device Manager. Dùng DevCon, bạn có thể kích hoạt, ngắt, khởi động lại, xoá và truy vấn các thiết bị riêng hay một nhóm thiết bị. DevCon cũng cung cấp thông tin tương ứng về nhà phát triển driver và không có sẵn trong Device Manager. Download từ
http://support.microsoft.com/kb/311272. Có các phiên bản 32 và 64 bit.
USB Sniffer/Analyzer – công cụ debug USB cho phép bạn xem các byte được truyền đi giữa host và thiết bị.
Phụ Lục A
Xây dựng môi trường phát triển 18f4550
Bản thiết kế được trình bày ởđây là sự kết hợp các cách tiếp cận thiết lập 18f4550 cơ
Các thành phần cần thiết để tạo lập phát triển 18f4550 được liệt kê sau đây:
P/N (source) Description Qty Each Total Component Designation 450-1644-ND (Digi-Key) SWITCH TACT 6MM BK 160GF 8.51MM 2 0.21 0.42 S1, S2 PIC18F4550- I/P-ND (Digi- Key)
IC PIC MCU FLASH 16KX16
40DIP 1 9.73 9.73 P1 X439-ND (Digi- Key) CRYSTAL 20.000 MHZ 20PF 49US 1 0.58 0.58 Q1 4.7KQBK-ND (Digi-Key) RES 4.7K OHM 1/4W 5% CARBON FILM 2 0.06 0.12 R1, R2 22QBK-ND (Digi-Key) RES 22 OHM 1/4W 5% CARBON FILM 2 0.06 0.12 R3, R4 1.0KQBK-ND (Digi-Key) RES 1.0K OHM 1/4W 5% CARBON FILM 1 0.06 0.06 R5 1.0MQBK-ND (Digi-Key) RES 1.0M OHM 1/4W 5% CARBON FILM 1 0.06 0.06 R6 516-1311-ND (Digi-Key)
LED 3MM 645NM RED DIFF
LOW CURR 1 0.51 0.51 LED1
478-4278-1-ND
(Digi-Key) CAP CER .10UF 50V DISC RAD 2 0.20 0.40 C1, C5 478-4178-ND
(Digi-Key)
CAP TANTALUM .47UF 35V
BC1003CT-ND (Digi-Key) CAP 15PF 50V CERAMIC C0G 5% 2 0.08 0.16 C3, C4 PBCUB1F (Winford)
USB B Female Breadboard
Adapter 1 5.60 5.60 438-1045-ND (Digi-Key) BREADBOARD 2.13x6.496 SLDLESS* 1 8.73 8.73 Total 26.95 sốlượng. Hinh 13: bo mạch test Hình 14 : mạch nguyên lý
Tạo lập
Hai thành phần trong mạch phân cực.
Một thành phần mà cực là tụ điện 470 nF (C2). Cực được đánh dấu trên tụđược theo dõi.
Thành phần nhạy phân cực thứ hai là LED. Cực được đánh dấu dưới đây (Phụ
lục 4) của LED được theo dõi.
Sắp xếp các thành phần quanh tinh thểhơi khó khăn và cần thực hiện cẩn thận để tránh đoản mạch.
Khi thực hiện, Winford USB B Female Breadbroad Adapter được dùng nhiều
hơn bộ lắp ráp USB B Female rẻhơn thường được nối với PCB (Digi-Key 609-1039-
ND). Adator này đảm bảo rằng cáp USB có kết nối tốt với bảng mạch.
Hình có tiêu đề “Breadboard Adator Detail” thể hiện cách nối ngầm dưới breadboard adapter.
Nếu bạn dùng bộ lắp ráp USB B Female thì các chân phải nối như sau:
Chân Tên Màu cáp Mô tả
1 VCC Đỏ +5VDC
2 D- Trắng Dữ liệu -
3 D+ Xanh Dữ liệu +
4 GND Đen Đất
Một sốđịnh nghĩa
Vcc +5VDC (supplied by the USB port) Vdd Ground, GND, Capacitor Resistor LED Crystal
Sử dụng nguồn USB
Các chức năng tốn ít năng lượng, năng lượng bus: Draw Max 100mA. Phụ lục B
Phần cứng để tải mã vào 18f4550
Như đã đề cập đến, lần đầu tiên bạn lập trình cho bảng phát triển thì phải dùng