giao tiếp máy tính với vi điều khiển pic18f4550 qua cổng usb

83
ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 1 Chương 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 1.1. Giới thiệu chung về Oscilloscope Hình vẽ 1.1: Máy hiển thị sóng Oscilloscope Máy Hiện sóng “oscilloscope” là một thiết bị hiển thị đồ thị - nó vẽ ra đồ thị của một tín hiệu điện. Trong hầu hết các ứng dụng, đồ thị chỉ ra tín hiệu thay đối thế nào theo thời gian: Trục dọc (Y) biểu diễn điện áp và trục ngang (X) biểu diễn thời gian. Cường độ hay độ sáng của sự hiển thị đôi khi được gọi là trục Z. Đây là đồ thị đơn giản có thể chỉ ra cho ta nhiều điều về một tín hiệu. Sau đây là một số công năng: - Nhận dạng tín hiệu (Xung vuông, răng cưa, hình sin, tín hiệu hình, tín hiệu tiếng…) - Xác định rõ các giá trị thời gian và mức điện áp và đường đi của một tín hiệu - Tính toán được tần số của một tín hiệu dao động - Nhận thấy “các phần động” của một mạch điện được biểu diễn bởi tín hiệu - Chỉ ra nếu một thành phần lỗi làm méo dạng tín hiệu - Tìm ra tín hiệu như thế nào là dòng một chiều hay dòng xoay chiều

Upload: hq-mu

Post on 10-Apr-2016

72 views

Category:

Documents


13 download

DESCRIPTION

Free

TRANSCRIPT

Page 1: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 1

Chương 1:

GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI

1.1. Giới thiệu chung về Oscilloscope

Hình vẽ 1.1: Máy hiển thị sóng Oscilloscope

Máy Hiện sóng “oscilloscope” là một thiết bị hiển thị đồ thị - nó vẽ ra đồ thị của một tín

hiệu điện. Trong hầu hết các ứng dụng, đồ thị chỉ ra tín hiệu thay đối thế nào theo thời

gian: Trục dọc (Y) biểu diễn điện áp và trục ngang (X) biểu diễn thời gian. Cường độ hay

độ sáng của sự hiển thị đôi khi được gọi là trục Z. Đây là đồ thị đơn giản có thể chỉ ra cho

ta nhiều điều về một tín hiệu.

Sau đây là một số công năng:

- Nhận dạng tín hiệu (Xung vuông, răng cưa, hình sin, tín hiệu hình, tín hiệu

tiếng…)

- Xác định rõ các giá trị thời gian và mức điện áp và đường đi của một tín hiệu

- Tính toán được tần số của một tín hiệu dao động

- Nhận thấy “các phần động” của một mạch điện được biểu diễn bởi tín hiệu

- Chỉ ra nếu một thành phần lỗi làm méo dạng tín hiệu

- Tìm ra tín hiệu như thế nào là dòng một chiều hay dòng xoay chiều

Page 2: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 2

- Chỉ ra tín hiệu như thế nào là nhiễu và nếu có thì nhiễu thay đổi thế nào theo thời

gian...

Hình vẽ 1.2: Dạng đồ thị trên Oscilloscope

Máy oscilloscope trông rất giống với một cái tivi nhỏ, nó có một mạng lưới được vẽ trên

màn hình và có nhiều núm điều khiển hơn tivi. Mặt trước của một oscilloscope thường có

các phần điều khiển được chia thành các phần Dọc, Ngang và Trigger. Có các điều khiển

hiển thị và các đầu nối đầu vào.

1.2. Chức năng của Oscilloscope

Sự hữu ích của một máy oscilloscope không bị giới hạn chỉ trong thế giới của các thiết bị

điện tử. Với một bộ chuyển đổi thích hợp, một máy oscilloscope có thể đo đạc được tất cả

các kiểu hiện tượng. Một bộ chuyển đổi là một thiết bị mà tạo ra tín hiệu điện đáp ứng lại

các kích thích vật lí, ví dụ như âm thanh, áp lực cơ khí, áp suất, ánh sáng hoặc nhiệt độ.

Ví dụ như, một microphone là một bộ chuyển đổi...

Một kỹ sư ô tô có thể dùng máy oscilloscope để đo đạc sự rung của động cơ. Một nghiên

cứu sinh y khoa có thể dùng máy oscilloscope để đo đạc các sóng não. Các khả năng là

vô tận!

1.3. Oscilloscope số và tương tự

Page 3: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 3

Hình vẽ 1.3: Oscilloscope số và tương tự

Thiết bị điện tử có thể được chia làm 2 loại: tương tự và số. Thiết bị tương tự làm việc

với các điện áp biến đổi liên tục, trong khi thiết bị số làm việc với các số nhị phân rời rạc

mà có thể biểu diễn các mẫu điện áp. Lấy ví dụ, máy quay đĩa thông thường là thiết bị

tương tự, còn máy chơi đĩa compact là một thiết bị số.

Các máy oscilloscope cũng có các loại tương tự và loại số. Máy oscilloscope tương tự là

việc trực tiếp với điện áp đặt vào được đo để di chuyển dòng electron ngang qua màn

hình máy oscilloscope

Trái lại, máy oscilloscope số lấy mẫu dạng sóng và dùng một bộ chuyển đổi tương tự/số

(A/D) để chuyển đổi điện áp được đo thành thông tin số. Sau đó, nó dùng thông tin số

này để tái cấu trúc lại dạng sóng trên màn hình

Đối với nhiều ứng dụng, hoặc là máy oscilloscope số hoặc là máy oscilloscope tương tự

sẽ được dùng. Tuy nhiên, mỗi loại máy có một số đặc tính riêng làm cho nó thích hợp

hơn hoặc kém thích hợp hơn trong các tác vụ riêng.

Page 4: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 4

Người ta thường thích các máy oscilloscope tương tự hơn vì nó quan trọng để hiển thị

nhanh chóng các tín hiệu đang thay đổi trong thời gian thực (hay như là chúng đang diễn

ra)

Các máy oscilloscope số cho phép bạn ghi lại và xem các sự kiện mà chúng có thể chỉ

diễn ra duy nhất 1 lần. Chúng có thể xử lý dữ liệu dạng sóng số và gửi các dữ liệu đó tới

máy tính để xử lý. Như vậy, chúng có thể lưu trữ dữ liệu dạng sóng số để xem và in ra

sau đó.

1.4. Oscilloscope tương tự

Khi bạn nối đầu dò của máy oscilloscope vào mạch điện, tín hiệu điện áp đi qua đầu dò

tới hệ thống dọc của máy oscilloscope. Tùy thuộc vào bạn thiết đặt chia thang đo dọc

(điều khiển volts/div) như thế nào thì bộ suy hao làm giảm điện áp tín hiệu hoặc là bộ

khuếch đại làm tăng điện áp tín hiệu điện áp đặt vào các bản lái tia làm cho một điểm

sáng di chuyển. (môt dòng electron đập vào lớp phosphor bên trong CRT tạo ra điểm

sáng). Điện áp dương làm cho điểm sáng đi lên trong khi điện áp âm làm cho điểm sáng

đi xuống.

Tín hiệu cũng đồng thời đi tới hệ thống trigger để khởi động hay kích một “quét ngang”.

Quét ngang là một thuật ngữ chỉ việc hệ thống ngang làm cho điểm sáng di chuyển ngang

trên màn hình. Việc kích hệ thống ngang gây ra thời gian cơ bản để di chuyển điếm sang

ngang trên màn hình từ trái sang phải trong một khoảng thời gian xác định. Nhiều lần

quét thành các dãy nhanh làm cho chuyển động của điểm sáng được hợp thành một

đường liền nét. Ở các tốc độ cao hơn, điểm sáng có thể quét ngang màn hình lên tới

500,000 lần mỗi giây.

Page 5: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 5

Hình vẽ 1.4: Oscilloscope tương tự

Cùng với nhau, việc quét ngang và việc lái dọc vạch ra một đồ thị tín hiệu trên màng

hình. Bộ kích khởi là cần thiết để ổn định hóa tín hiệu tuần hoàn. Nó đảm bảo rằng lần

quét bắt đầu ở cùng một điểm với tín hiệu tuần hoàn, dẫn tới một hình ảnh rõ ràng được

chỉ ra trên hình sau:

Hình vẽ 1.5: Bộ kích khởi (Trigger)

Kết luận lại, để dùng một máy oscilloscope tương tự, bạn cần điều chỉnh ba thiết lập cơ

bản để thích ứng với tín hiệu đưa vào:

- Việc làm suy giảm hoặc khuếch đại tín hiệu. Dùng điều khiển volts/div để điều

chỉnh biên độ của tín hiệu trước khi nó được đặt vào các bản lái tia chiều dọc.

- Thời gian cơ bản. Dùng điều khiển sec/div để thiết đặt độ lớn của thời gian trên

mỗi khoảng chia được biển diễn ngang qua màn hình.

Page 6: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 6

- Kích khởi máy oscilloscope. Sử dụng mức kích để ổn định hóa tín hiệu tuần hoàn

cũng như việc kích các sự kiện đơn.

Cũng vậy, việc điều chỉnh các điều khiển tiêu cự và cường độ cho phép bạn tao ra hình

ảnh sắc nét và dễ nhìn (không bị chói).

1.5. Sơ lượt về máy Oscilloscope số

1.5.1. Khái niệm về Oscilloscope số

Để tìm hiểu khái niệm về Osilloscope số ta cần phải hiểu được thế nào là một Osilloscope

có nhớ. Osilloscope có nhớ là loại Osilloscope dùng để khảo sát các loại tín hiệu tức

thời, tuần hoàn chậm, hay tín hiệu ngắn, tín hiệu quá độ... Dải tần số có thể đến 150MHz.

Dải tín hiệu từ hàng chục mV đến hàng trăm vôn.

Osilloscope số là loại dao động ký có nhớ số. Nguyên lý làm việc dựa trên việc số hóa tín

hiệu khảo sát nhờ bộ chuyển đổi A /D gọi là quá trình lấy mẫu và chuyển đổi. Các mẫu

được ghi vào bộ nhớ, sau đó được biến đổi trở lại thành tương tự phục vụ cho mục đính

hiển thị.

1.5.2. Cấu trúc Oscilloscope số

Hình vẽ 1.6: Cấu trúc của Oscilloscope số

- Tín hiệu đo: Xung vuông, răng cưa, hình sin, tín hiệu hình, tín hiệu tiếng, áp lực

cơ khí, áp suất, ánh sáng hoặc nhiệt độ…

- Mạch đo: Tùy thuộc vào loại tín hiệu đầu vào mà mạch đo sẽ tương tự như là

mạch khuếch đại và chuyển đổi tín hiệu. Mạch khuếch đại thường là mạch có hệ

số khuếch đại >0. Mạch chuyển đổi đóng vai trò chuyển đổi từ tín hiệu sau mạch

khuếch đại về loại tín hiệu phù hợp với loại tín hiệu đầu vào của bộ ADC. Thông

thường tín hiệu mà các oscilloscope đo thường là các tín hiệu dòng hoạc tín hiệu

áp. Vì vậy mạch khuếch đại thường là các mạch giảm dòng hoặc mạch phân áp

Mạch

đo

Bộ

ADC

Bộ

VXL

Máy tính hiển

thị kết quả

Tín

hiệu đo

Page 7: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 7

sử dụng các phần tử như biến dòng, biến áp, linh kiện bán dẫn, mạch điện trở, điện

cảm, điện dung…

- Bộ ADC: Là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số. Tín hiệu đo sau

khi đi qua mạch đo sẽ được đưa vào bộ ADC. Bộ ADC sẽ chuyển đổi dạng tín

hiệu này từ tín hiệu tương tự thành tín hiệu số để đưa đến bộ vi xử lí. Trên thực tế

bộ ADC có độ phân giải khác nhau: 8bit, 10bit, 12bit, 16bit, 24bit... Độ phân giải

càng lớn thì tín hiệu đầu ra số sẽ càng gần với tín hiệu đầu vào tương tự. Đầu ra số

của bộ ADC có thể là bus song song hoặc nối tiếp.

- Bộ vi xử lí: Bộ vi xử lí đóng vai trò xử lí trung tâm, nó nhận kết quả đo từ bộ

ADC để gia công và xử lí trước khi gửi về máy tính để hiển thị. Bộ vi xử lí được

sử dụng phổ biến hiện nay là các họ vi điều khiển như 8051, AVR, PIC, PSOC,

ARM... với tốc độ xử lí phù hợp. Ngày nay các vi điều khiển được tích hợp thêm

trong nó các bộ ADC có khả năng trích mẫu tốc độ cao, ngoài ra nó còn có khả

năng ghép nối với máy tính theo các chuẩn ghép nối. Ngoài các khả năng trên một

ưu điểm lớn nữa của bộ vi xử lí là khả năng lưu trữ thông tin, khả năng này phù

hợp cho các cho các osilloscope tốc độ cao.

- Máy tính hiển thị kết quả đo: Máy tính sẽ nhận các thông tin từ bộ vi xử lí sau

đó gia công và hiển thị. Việc truyền nhận thông tin từ vi xử lí đến máy tính và

ngược lại sẽ được thực hiện qua các chuẩn ghép nối như RS232, LPT, USB, khe

cắm mở rộng…

1.5.3. Nguyên lý hoạt động của Oscilloscope số

Một vài hệ thống mà được cấu thành từ các máy oscilloscope số thì cũng tương tự như

bằng các máy oscilloscope tương tự; tuy nhiên, các máy oscilloscope số bao gồm thêm hệ

thống xử lý số liệu.

Với hệ thống thêm vào, máy oscilloscope số thu thập số liệu cho toàn bộ dạng sóng và

sau đó hiển thị chúng Khi các bạn nối đầu đo (dò) của máy oscilloscope số vào mạch

điện; hệ thống dọc sẽ điều chỉnh biên độ của tín hiệu như trong máy oscilloscope tương

tự.

Page 8: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 8

Tiếp tới, bộ chuyển đổi tương tự/số trong hệ thống thu thập lấy mẫu tín hiệu ở các thời

điểm rời rạc và chuyển đổi điện áp tín hiệu ở các điểm này thành giá trị số, gọi là các

điểm lấy mẫu. Xung lấy mẫu của hệ thống ngang quy định bộ ADC lấy mẫu bao nhiên

lần. Tốc độ mà ở đó xung “ticks” được gọi là tốc độ lấy mẫu và đươc đo bằng số mẫu

trên giây (Xem hình vẽ dưới).

Hình vẽ 1.7: Nguyên lý hoạt động của Oscilloscope số

Các điểm mẫu từ ADC được lưu trữ trong bộ nhớ như là các điểm dạng sóng. Có nhiều

hơn một điểm mẫu có thể cấu thành nên một điểm dạng sóng.

Cùng với nhau, các điểm dạng sóng cấu thành nên một bản ghi dạng sóng. Số điểm sóng

được dùng để tạo nên một bản ghi dạng sóng được gọi là độ dài bản ghi. Hệ thống kích

khởi quy định điểm bắt đầu và điểm kết thúc bản ghi. Màn hình nhận các điểm bản ghi

này sau khi chúng được lưu trữ trong bộ nhớ.

Tùy thuộc vào khả năng của máy oscilloscope thiết kế, việc xử lý thêm các điểm mẫu có

thể được tiến hành để làm nâng cao chất lượng hiển thị. Bộ tiền kích khởi có thể hữu ích

cho phép xem các sự kiện trước điểm kích.

Page 9: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 9

Về cơ bản, với một máy máy oscilloscope số cũng như với máy máy oscilloscope tương

tự, cần điều chỉnh các thiết lập dọc, ngang và kích khởi để có thể đo đạc được.

Page 10: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 10

CHƯƠNG 2:

TỔNG QUAN VI ĐIỀU KHIỂN PIC18F2455/2550/4455/4550

2.1. Giới thiệu vi điều khiển PIC18F2455/2550/4455/4550

Họ vi điều khiển PIC18F2455/2550/4455/4550 là họ vi điều khiển tiên tiến của

MICROCHIP, đặc biệt họ này có tích hợp cổng USB 2.0, ADC 10 bit và tích hợp nhiều

công cụ khác. Mạnh, mềm dẻo là từ đánh giá ngắn gọn về họ vi điều khiển này. Chương

này giới thiệu tổng quan các khối tích hợp của họ vi điều khiển PIC18F và các đặc điểm

của các khối tích hợp, mục đích là phục vụ cho việc thiết kế ở các chương sau.

Các đặc điểm cổng USB:

- USB V2.0

- Tốc độ thấp (1.5 Mb/s) và tốc độ toàn phần (12Mb/s)

- Hỗ trợ tới 32 điểm cuối

- RAM 1 kByte cho khối USB

- Mạch thu phát USB trên chip cùng với mạch ổn áp 3.3V

- Cổng song song streaming (SPP) cho truyền streaming USB

- Hỗ trợ cả 4 chế độ truyền:

• Truyền điều khiển (Control transfer)

• Truyền ngắt (Interrupt transfer)

• Truyền đồng bộ (Isochronous transfer)

• Truyền khối (Bulk transfer)

Các đặc điểm ngoại vi:

- Dòng vào/ra (sink/source) cao 25mA/25mA

- Ba ngắt ngoài

Page 11: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 11

- Bốn khối timer (timer0 đến timer3)

- Có tới 2 khối CCP (Capture/Compare/PWM)

- Capture 16 bit cực đại, độ phân giải 6.25 ns ( TCY /16 )

- So sánh 16 bit cực đại, độ phân giải 100 ns ( TCY )

- PWM có lối ra với độ giải từ 1 đến 10 bit

- Khối CCP nâng cao ECCP (Enhanced Capture/Compare/PWM)

- Nhiều chế độ lối ra

- Có thể chọn cực tính

- Thời gian chết lập trình được

- Tự động tắt và tự động khởi động

- Khối USART nâng cao

- Hỗ trợ bus LIN

- Cổng truyền nối tiếp đồng bộ chủ MSSP (Master Synchronous Serial Port)

- ADC 10 bit, 13 lối vào, thời gian thu thập dữ liệu lập trình được

- 2 bộ so sánh tương tự với đa hợp lối vào

Các đặc điểm của vi điều khiển

- Cấu trúc tối ưu biên dịch C với tập lệnh mở rộng tùy chọn

- Bộ nhớ chương trình flash nâng cao cho phép 100.000 lần xóa/ghi

- Bộ nhớ dữ liệu EEPROM cho phép 1.000.000 lần xóa/ghi

- Lưu trữ dữ liệu trong bộ nhớ flash/EEPROM hơn 40 năm

- Ngắt nhiều mức ưu tiên

- Watchdog timer mở rộng, chu kỳ khả trình từ 41 ms đến 131 s

- Bảo vệ mã lập trình

Page 12: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 12

- Nguồn nuôi đơn 5V cho lập trình nối tiếp trên mạch qua 2 chân

- Mạch gỡ lỗi qua 2 chân

- Dải điện áp hoạt động rộng (2.0V đến 5.5V)

Bảng 2.1: Các tính năng kỹ thuật của các vi điều khiển PIC18F2455/2550/4455/4550

Trong họ vi điều khiển PIC18, chữ giữa “F” cho phép Vdd từ 4.2V đến 5.5V, chữ giữa

“LF” cho phép mở rộng giải Vdd từ 2.0V đến 5.5V.

2.2. Dao động xung nhịp

Mạch dao động với nhiều tùy chọn. Họ vi điều khiển PIC18F2455/2550/4550 có 12 tùy

chọn mạch dao động, bao gồm:

- 4 chế độ dao động tinh thể hoặc cộng hưởng gốm

- 4 chế độ xung nhịp ngoài

- Một bộ dao động nội cung cấp xung nhịp 8MHz và mạch dao động RC nội cung

cấp xung nhịp 31KHz, cũng như 6 lựa chọn tần số xung nhịp từ 125kHz đến

4MHz, tất cả ta có 8 lựa chọn tần số xung nhịp.

- Nhân tần dùng PLL (Phase Loop Lock) áp dụng cho cả dao động tinh thể tần số

cao và dao động ngoài cho dải tần số xung nhịp từ 4MHz đến 48MHz.

- Hoạt động xung nhịp kép không đồng bộ (Asynchronous dual clock operation):

khối USB hoạt động xung nhịp tần số cao trong khi các khối còn lại trong vi điều

khiển hoạt động với xung nhịp tần số thấp hơn.

Page 13: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 13

Hình 2.1: Sơ đồ khối PIC18F2455/2550 (28 chân)

- Theo dõi an toàn xung nhịp (Fail-Safe clock monitor): tùy chọn này cho phép

nguồn xung nhịp chính luôn luôn được theo dõi, nếu xảy ra trường hợp xung nhịp

Page 14: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 14

chính tắt vi điều khiển sẽ tiếp tục hoạt động với tần số xung nhịp thấp hơn.

- Khởi động hai tốc độ (Two-Speed Start-up): Tùy chọn này cho phép nguồn xung

nhịp nội hoạt động khi reset lúc khởi động hay vi điều khiển hoạt động trở lại từ

chế độ ngủ (wake-up from sleep mode) cho đến khi nguồn xung nhịp chính đã sẵn

sàng.

Thạch anh dao động / cộng hưởng gốm: Ở chế độ HS, HSPLL, XT, XTPLL thạch anh

dao động/ cộng hưởng gốm mắc ở chân OSC1 và OSC2. Ở mỗi chế độ C1, C2 đặt cạnh

thạch anh dao động/cộnghưởng gốm có giá trị khác nhau (tham khảo datasheet

PIC18F2455/2550/4550).

Nhân tần số PLL: Trong vi điều khiển PIC18F2455/2550/4550 có khối PLL (Phase

Loop Lock), điều này cho phép khối USB hoạt động ở tần số cao trong khi xung nhịp của

hệ thống ở tần số thấp hơn. PLL được phép hoạt động ở các chế độ dao động HSPLL,

XTPLL, ECPLL và ECPIO. Nó được thiết kế để sinh ra tần số xung nhịp chuẩn 96MHz

từ tần số lối vào cố định 4MHz.

Khối dao động nội (INTOSC): Trong vi điều khiển PIC18F2455/2550/4550 có khối dao

động nội phát ra hai tín hiệu xung nhịp khác nhau. Lối ra trực tiếp 8 MHz, lối ra qua bộ

chia (postscaler) cung cấp xung nhịp từ 31 KHz đến 4 MHz. Lưu ý nguồn dao động lấy

từ thạch anh dao động/ cộng hưởng gốm gọi là dao động ngoài. Nguồn dao động nội lối

ra 31KHZ cho phép trong các trường hợp:

- Timer bật nguồn (Power-up timer)

- Theo dõi an toàn xung nhịp

- Watchdog timer

- Khởi động hai tốc độ (Two-Speed Start-up)

Lối ra dao động nội được chuẩn bởi hãng chế tạo nhưng vẫn có thể tinh chỉnh bởi người

sử dụng, việc tinh chỉnh này được thực hiện nhờ thanh ghi điều chỉnh dao động

(Oscillator Control Register).

Page 15: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 15

Hình 2.2: Sơ đồ khối PIC18F4455/4550 (40/44 chân)

Page 16: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 16

Hình 2.3: Sơ đồ khối dao động

Các chế độ dao động nội: Sư lựa chọn nguồn xung nhịp cho USB xác định bởi các chế độ

dao động nội riêng biệt:

- Chế độ INTHS: Xung nhịp USB được cung cấp bởi dao động trong chế độ HS.

Page 17: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 17

- Chế độ INTXT: Xung nhịp USB được cung cấp bởi dao động trong chế độ XT

- Chế độ INTXT: Xung nhịp USB được cung cấp bởi dao động trong chế độ XT

- Chế độ INTCKO: Xung nhịp USB được cung cấp từ dao động bên ngoài thạch

anh dao động/ cộng hưởng gốm.

- Chế độ INTIO: xung nhịp cho USB được cung cấp vào chân OSC1/CLK1, còn

chân OSC2/CLK2 có chức năng như chân I/O.

- Tần số dao động cho USB là 6 MHz hoặc 48 MHz tùy thuộc vào chế độ tốc độ

thấp (low speed) hay chế độ tốc độ toàn phần (full speed).

- Tần số dao động cho USB là 6 MHz hoặc 48 MHz tùy thuộc vào chế độ tốc độ

thấp (low speed) hay chế độ tốc độ toàn phần (full speed).

2.3. Bộ nhớ

Bộ nhớ Flash nâng cao (Enhanced Flash) sử dụng cho bộ nhớ chương trình và bộ nhớ dữ

liệu EEPROM. Số lần xóa/ghi cho bộ nhớ chương trình là 100.000 lần và cho bộ nhớ dữ

liệu là 1.000.000 lần. Dữ liệu lưu lại trong bộ nhớ đến 40 năm mà không cần làm tươi. Có

ba loại bộ nhớ trong họ PIC18:

- Bộ nhớ chương trình

- RAM dữ liệu

- EEPROM dữ liệu

Theo cấu trúc Harvard, bộ nhớ chương trình và dữ liệu dùng 2 bus riêng, điều này cho

phép tiếp cận đồng thời 2 vùng bộ nhớ. EEPROM dữ liệu có thể coi như thiết bị ngoại vi

vì tiếp cận thông qua bộ thanh ghi điều khiển. Họ vi điều khiển PIC18 có bộ đếm chương

trình 21 bit nên có khả năng định vị 2 Mbyte bộ nhớ chương trình.

IC18F2455,IC18F4455 có 24 Kbyte bộ nhớ flash và có thể chứa tới 12.288 lệnh từ đơn.

IC18F2550, PIC18F4550 có 32 Kbyte bộ nhớ flash và có thể chứa đến 16.384 lệnh từ

đơn.

Khả năng tự lập trình: Họ vi điều khiển PIC18F2455/2550/4550 có khả năng tự nạp

Page 18: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 18

chương trình vào bộ nhớ chương trình mà không cần phải có thiết bị phụ bên ngoài, điều

này được thực hiện bằng đoạn chương trình con Bootloader đặt trên phần cao bộ nhớ

chương trình vào được bảo vệ. Khả năng tự lập trình cho phép các ứng dụng dùng họ vi

điều khiển này có khả năng nâng cấp firm-ware.

Bộ nhớ chương trình Flash: 24Kbytes cho PIC18FX455, 32 Kbytes cho PIC18FX550.

Hình 2.4: Bản đồ tổ chức bộ nhớ họ vi điều khiển PIC18F2455/2550/4550

2.4. Khối Timer

Họ vi điều khiển PIC18 có 4 bộ timer: timer0, timer1, timer2 và timer3. Mỗi timer có tính

năng riêng.

Timer0:

- Định chế độ hoạt động bằng phần mềm: timer hoặc counter, 8 bit hoặc 16 bit

- Bộ chia khả trình 8 bit chuyên dụng

- Nguồn xung nhịp chọn được (trong hay ngoài)

- Khả năng chọn cạnh đối với xung nhịp ngoài

Page 19: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 19

- Ngắt khi tràn

Timer1:

- Chọn bằng phần mềm timer hay counter 16 bit

- Khả năng đọc viết thanh ghi 8 bit (TMR1H và TMR1L)

- Chọn nguồn xung nhịp trong hay ngoài

- Ngắt khi tràn

- Khối RESET hoạt động trên cơ sở xung kích sự kiện CCP.

- Cờ trạng thái xung nhịp (T1RUN)

Timer2:

- Timer 8 bit (TMR2) và thanh ghi chu kỳ (PR2)

- Khả năng đọc viết cả 2 thanh ghi

- Lập trình bằng phần mềm cho bộ chia (1:1, 1:4, 1:16)

- Ngắt khi TMR2 gặp PR2

- Tùy chọn dùng như xung nhịp dịch cho khối MSSP

Timer3:

- Chọn bằng phần mềm hoạt động như là timer hoặc counter 16 bit

- Khả năng đọc ghi thanh ghi 8 bit (TMR3H và TMR3L)

- Khả năng chọn nguồn xung nhịp (trong hoặc ngoài)

- Ngắt khi tràn

- Khối RESET hoạt động trên cơ sở xung kích sự kiện CCP

2.5. Khối CAPTURE/SO SÁNH/PWM (CCP).

Họ vi điều khiển PIC18F2455/2550/4455/4550 có tất cả 2 khối CCP. Mỗi khối chứa

thanh ghi 16 bit. Chế độ Capture: Cặp thanh ghi CCPRxH:CCPRxL bắt giá trị 16 bit của

thanh ghi TMR1 hoặc TMR3 khi sự kiện xảy ra ở chân CCPx tương ứng. Một sự kiện

Page 20: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 20

được định nghĩa:

- Mỗi khi có cạnh lên

- Mỗi khi có cạnh xuống

- Mỗi khi có cạnh lên thứ 4

- Mỗi khi có cạnh lên thứ 16

Sự kiện được chọn bởi bit chọn chế độ CCPxM3:CCPxM0 (CCPxCON<3:0>). Khi sự

kiện Capture được thực hiện, bit cờ yêu cầu ngắt (CCPxIF) được SET và chỉ xóa bằng

phần mềm.

Chế độ so sánh: Thanh ghi 16 bit CCPRx có giá trị hằng số được so sánh với giá trị của

cặp thanh ghi TMR1 hoặc TMR3. Khi xảy ra sự kiện bằng nhau, chân CCPx có thể là:

- Chuyển mức cao

- Chuyển mức thấp

- Phát xung (cực tính dương hoặc âm)

- Giữ nguyên không thay đổi trạng thái (phản ánh trạng thái chốt I/O)

Chân CCPx xác định trên cơ sở giá trị của bit chọn chế độ (CCPxM3:CCPxM0) . Khi sự

kiện so sánh bằng nhau bit cờ ngắt CCPxIF được set (mức1).

Chế độ PWM (Pulse-Width Modulation: điều chế độ rộng xung): Chân CCPx phát sinh

xung PMW độ phân giải 10 bit. Độ rộng xung (Duty Cycle) của xung PWM được hình

thành theo minh họa hình dưới đây.

Page 21: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 21

Hình 2.5: Hình thành xung PWM ở lối ra

Độ rộng xung PWM được xác định bằng cách viết vào thanh ghi CCPRxL và các bit

CCPxCON<5:4> , CCPRxL chứa 8 bit cao và CCPxCON<5:4> chứa 2 bit thấp. giá trị 10

bit độ phân giải là giá trị CCPRxL : CCPxCON<5:4>

Độ rộng xung PWM được tính theo công thức:

CCPRxL và CCPxCON<5:4> có thể được viết vào mọi thời điểm nhưng giá trị độ rộng

xung không chốt vào CCPRxH cho tới khi có sự gặp nhau (bằng) giữa PR2 và TMR2.

Trong chế độ PWM CCPRxH là thanh ghi chỉ đọc.

2.6. Khối USB (Universal Serial Bus)

Họ PIC18FX455/X550 tích hợp cổng USB hỗ trợ cả tốc độ truyền toàn phần (full-peed)

12Mb/s và tốc độ thấp (low-speed) 1.5 Mb/s cho phép giao tiếp nhanh giữa USB máy chủ

và USB vi điều khiển PIC. Hỗ trợ đến 32 điểm cuối. RAM 1 kbyte cho USB. Hỗ trợ đủ 4

lối truyền: truyền điều khiển (Control transfer); truyền ngắt (Interrupt transfer); truyền

đẳng thời (Isochronous transfer) và truyền khối (Bulk transfer).

Hoạt động của khối USB được định cấu hình và quản lý thông qua 3 thanh ghi điều

khiển. Hơn nữa có 19 thanh ghi quản lý giao tiếp USB thực. Các thanh ghi đó là:

- Thanh ghi điều khiển USB (UCON): Thanh ghi này chứa các bit cần cho điều

PWM Duty Cycle=(CCPRxL : CCPxCON <5 : 4 >*Tosc*(TMR2 Pr esscale Value)

Page 22: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 22

khiển trong quá trình truyền gồm: cho phép ngoại vi USB chính; reset con trỏ bộ

đệm ping-pong; điều khiển chế độ treo; cấm truyền gói.

- Thanh ghi cấu hình USB (UCFG): Trước khi liên lạc qua USB, khối USB kết hợp

phần cứng ngoài và/hoặc trong phải được đặt cấu hình. UCFG chứa các bit liên

quan đến việc đặt: tốc độ full-speed hay low-speed; cho phép dùng điện trở kéo

lên trong IC; cho phép thu-phat trong IC; sử dụng bộ đệm ping-pong.

- Thanh ghi trạng thái truyền USB (USTAT): Báo cáo trạng thái giao tiếp trong SIE.

Hình vẽ 2.6: Sơ đồ khối USB

- Thanh ghi địa chỉ linh kiện USB (UADDR): Chứa duy nhất địa chỉ USB mà ngoại

vi sẽ giải mã khi tích cực. UADDR = 00h khi reset USB bởi vi điều khiển. Địa chỉ

USB phải được viết bởi vi điều khiển trong pha setup USB được hỗ trợ bởi

firmware của Microchip.

- Thanh ghi số frame (UFRMH:UFRML): Thanh ghi số frame chứa số frame 11 bit,

8 bit thấp chứa trong UFRML, 3 bit cao chứa trong UFRMH. Cặp thanh ghi được

cập nhật với số frame hiện tại khi gói SOF được nhận. Thanh ghi số frame được

Page 23: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 23

dùng căn bản cho lối truyền đẳng thời (isochronous transfer).

- Thanh ghi cho phép điểm cuối từ 0 đến 15 (UEPn): Mỗi của 16 điểm cuối hai

chiều có thanh ghi điều khiển độc lập UEPn, n là số điểm cuối.

2.7. Điều khiển điểm cuối USB

Mỗi của 16 điểm cuối hai chiều có thanh ghi điều khiển độc lập UEPn, n là số điểm cuối

USB RAM. Dữ liệu USB di chuyển giữa lõi vi điều khiển và SIE (Serial Interface

Engine) thông qua vùng nhớ gọi là RAM USB. Đây là nhớ cổng đôi đặc biệt, vùng nhớ

dữ liêu bình thường ở Bank 4 đến Bank 7 (400h tới 7FFh) dung lượng 1Kbyte. Bank 4

(400h đến 4FFh) được dùng đặc biệt cho điều khiển đệm điểm cuối, trong khi Bank 5 đến

Bank 7 dùng cho dữ liệu USB.

Ngắt USB: Khối USB có thể phát ra nhiều điều kiện ngắt. Trên hình 2.6 cho thấy logic

ngắt cho khối USB. Có hai lớp ngắt trong khối USB. Mức cao gồm các ngắt trạng thái

USB, nó đặt cho phép và đặt cờ trong thanh ghi cho phép ngắt UIE (USB Interrupt

Enable) và thanh ghi trạng thái ngắt USB UIR (USB Interrupt Status Register) tương

ứng. Mức thấp gồm các điều kiện lỗi USB, nó đặt cho phép và đặt cờ trong thanh ghi

trạng thái ngắt lỗi USB UEIR (USB Error Interrupt Status Register) và thanh ghi cho

phép ngắt lỗi USB UEIE (USB Error Interrupt Enable Register).

Hình 2.7: Các ngắt của khối USB

Page 24: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 24

2.8. Khối biến đổi ADC 10 bit

Khối ADC 10 bit: Khối ADC của họ vi điều khiển này có khả năng kết hợp với việc thời

gian thu thập dữ liệu khả trình cho phép không cần chờ chu kỳ lấy mẫu nên giảm thời

gian biến đổi AD.

Khối biến đổi AD có 10 lối vào đối với PIC18 vỏ 28 chân và 13 lối vào đối với vỏ 40/44

chân. Khối này có 5 thanh ghi:

- Thanh ghi kết quả A/D cao (ADRESH)

- Thanh ghi kết quả A/D thấp (ADRESL)

- Thanh ghi điều khiển A/D 0 (ADCON0)

- Thanh ghi điều khiển A/D 1 (ADCON1)

- Thanh ghi điều khiển A/D 2 (ADCON2)

Hình 2.8: Sơ đồ mạch điện thu thập dữ liệu cho biến đổi A/D

Chọn xung nhịp biến đổi A/D: Thời gian biến đổi A/D mỗi bit được định nghĩa là TAD .

Yêu cầu thời gian biến đổi A/D là 11* TAD cho biến đổi A/D 10 bit. Có 7 tùy chọn cho

TA:

- 2 TOSC

- 4 TOSC

Page 25: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 25

- 8 TOSC

- 16 TOSC

- 32 TOSC

- 64 TOSC

- Dao động RC nội

Hình 2.9: Sơ đồ khối biến đổi A/D

Bảng 2.10: TAD theo tần số hoạt động của vi điều khiển

Page 26: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 26

Để biến đổi A/D hoạt động đúng, TAD phải nhỏ có thể có nhưng lớn hơn TAD tối thiểu

Thời gian biến đổi A/D = TACQ 11* TAD TAD1 , trong đó TAD1 là thời gian tụ

xả

2.9. Khối tham chiếu điện áp so sánh

Khối tham chiếu điện áp so sánh là một cầu chia áp gồm 16 điện trở (trên hình 2.11).

Mục đích của khối này là tạo ra điện áp chuẩn khả trình cho cho các mạch so sánh tương

tự. Định cấu hình cho tham chiếu điện áp so sánh bằng thanh ghi điều khiển tham chiếu

điện áp so sánh CVRCON.

Hình 2.11: Sơ đồ tham chiếu điện áp so sánh

2.10. Ngắt

PIC18F2455/2550/4455/4550 có nhiều nguồn tín hiệu ngắt và hai mức độ ưu tiên ngắt.

Vector ngắt ưu tiên mức cao là 000008h và vector ngắt ưu tiên mức thấp là 000018h. Có

10 thanh ghi được dùng để điều khiển ngắt là:

- RCON

- INTCON

Page 27: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 27

- INTCON2

- INTCON3

- PIR1, PIR2

- PIE1, PIE2

- IPR1, IPR2

Mỗi nguồn tín hiệu ngắt có 3 bit để điều khiển hoạt động. Chức năng của 3 bit này là:

- Bit cờ để chỉ thị một sự kiện ngắt xảy ra

- Bit cho phép để cho phép ngắt, chương trình nhảy đến địa chỉ vector ngắt của tín

hiệu ngắt khi bit cờ được set

- Bit ưu tiên ngắt để chọn mức độ ưu tiên ngắt

Hình 2.12: Sơ đồ logic các tín hiệu ngắt

Page 28: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 28

Mức độ ưu tiên ngắt được cho phép bằng cách SET bit IPEN (RCON<7>). Khi độ ưu tiên

được cho phép, có 2 bit cho phép ngắt toàn cục. SET bit GIEH (INTCON<7>) cho phép

tất cả các ngắt mà SET độ ưu tiên cao. SET bit GIEL (INTCON<6>) cho phép tất cả các

ngắt mà SET độ ưu tiên thấp. Khi cờ ngắt, bit cho phép và cờ cho phép ngắt toàn cục

SET chương trình sẽ nhảy đến địa chỉ vector ngắt 000008h hoặc 000018h tùy thuộc vào

mức độ ưu tiên. Các ngắt riêng rẽ có thể không cho phép thông qua các bit cho phép

tương ứng.

Ngắt USB

Không giống như các giao diện ngoại vi khác, khối USB có khả năng phát ra nhiều tín

hiệu ngắt. Các tín hiệu ngắt USB gồm có vài tín hiệu ngắt liên lạc thông thường, vài tín

hiệu ngắt sự kiện trạng thái và vài tín hiệu ngắt sự kiện lỗi. Trong khối USB được trang

bị mạch logic ngắt riêng cho khối USB (đã trình bày trong phần 2.7 và sơ đồ logic ngắt

USB ở hình 2.6)

2.11. Các chi tiếc đặc biệt họ PIC18F2455/2550/4455/4550

Họ vi điều khiển này có vài chi tiết đặc biệt nhằm tăng độ tin cậy tối đa và giảm giá thành

do các linh kiện bên ngoài được giảm tối đa. Các chi tiết đặc biệt có thể kể ra là:

- Nguồn dao động phong phú

- Các reset:

- Reset nguồn bật (POR)

- Timer nguồn bật (PWRT)

- Timer khởi động dao động (OST)

- Reset Brown-out (BOR)

- Quản lý năng lượng với nhiều chế độ hoạt động

- Theo dõi an toàn xung nhịp

- Khởi động 2 tốc độ

Page 29: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 29

- Bảo vệ mã chương trình

- Lập trình nối tiếp trong chip

- Tập lệnh phong phú

Đây là họ vi điều khiển 8 bit mạnh, mềm dẻo và chất lượng của hãng MICROCHIP nói

riêng và của cả thế giới nói chung.

Page 30: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 30

CHƯƠNG 3:

SƠ LƯỢT VỀ CHUẨN USB 2.0

3.1. Giới thiệu chung về USB

3.1.1. Khái niệm về USB

USB (Universal Serial Bus) là bus nối tiếp đa năng cho phép các thiết bị đầu cuối giao

tiếp với máy tính chủ (Host Computer).

3.1.2. Các mục tiêu hướng tới khi sử dụng USB

- Dễ dàng mở rộng các thiết bị đầu cuối của PC.

- Cung cấp giải pháp chi phí thấp song vẫn hỗ trợ truyền dẫn với tốc độ lên đến

480Mb/s.

- Hỗ trợ ứng dụng thời gian thực như voice, audio, video,...

- Giao thức linh hoạt cho các chế độ hỗn hợp: isochronous data transfers và

asynchronous messaging.

- Tích hợp công nghệ thiết bị tiện nghi.

- Được Windows và các hệ điều hành khác hỗ trợ do đó có thể không cần driver

mức thấp cho các thiết bị USB.

- Đa năng do đó nhiều thiết bị có thể ghép nối với PC thông qua chuẩn USB.

- Độ tin cậy cao.

3.1.3. Mô tả hệ thống USB

Một hệ thống USB được mô tả bởi ba định nghĩa: Kết nối USB, các thiết bị USB và USB

host. Kết nối USB được hiểu là kiểu kết nối mà trong đó các thiết bị USB được kết nối và

giao tiếp với máy tính chủ. Kết nối USB bao gồm các vấn đề sau:

- Kiến trúc Bus: Mô hình kết nối giữa các thiết bị USB và Host.

Page 31: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 31

- Những mối quan hệ Inter-layer : Dưới dạng một tập khả năng, các tác vụ USB

được thực hiện tại mỗi lớp trong hệ thống.

- Các mô hình luồng dữ liệu: Là hình thức mà trong đó dữ liệu di chuyển trong hệ

thống qua USB.

Lập trình USB: USB cung cấp một sự kết nối dùng chung. Việc truy cập tới kết nối được

lập trình theo thứ tự để hỗ trợ truyền dữ liệu đẳng thời và khử sự phân xử ban đầu.

3.1.4. Kiến trúc Bus

Bus tuần tự đa năng nối các thiết bị USB với Host USB. Về mặt kết nối vật lý USB là

một kiến trúc tầng sao. Một Hub ở tại trung tâm của mỗi sao, mỗi đoạn dây là một kết nối

từ điểm tới điểm giữa Host và một Hub hoặc một chức năng nào đó, hoặc một Hub nối

tới Hub khác hoặc chức năng khác. Với 7bit địa chỉ, ngoài máy chủ USB ra nó có thể

quản lý tối đa 127 thiết bị ngoại vi. Hình 4.1 sẽ minh hoạ kiến trúc của USB.

Hình 3.1: Mô hình bus USB

3.1.5. Máy chủ USB (USB Host)

Chỉ có duy nhất một Host trong một hệ thống USB bất kỳ. Giao diện USB tới hệ thống

máy chủ được xem như bộ điều khiển Host. Bộ điều khiển Host có thể được thực hiện

Page 32: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 32

trong một kết hợp gồm phần cứng, chương trình cho vi điều khiển (firmware) hoặc phần

mềm. Một Hub gốc (root hub) được tích hợp chỉ trong hệ thống Host để cung cấp một

hoặc nhiều điểm lắp thêm.

3.1.6. Các thiết bị USB

Thiết bị USB có thể là một trong các thiết bị sau:

- Hub: cung cấp điểm lắp thêm vào USB.

- Các chức năng: Cung cấp các khả năng cho hệ thống như một kết nối ISDN,

digital joystick, hoặc speakers.

- Thiết bị hiểu được giao thức USB

3.1.7. Cáp USB

USB truyền tín hiệu và nguồn qua một cáp 4 sợi hình 3.2:

- Vbus: Điện áp cung cấp cho thiết bị.

- Tín hiệu D+.

- Tín hiệu D-.

- Dây đất GND.

Có 3 tốc độ truyền dữ liệu:

- USB tốc độ cao (USB high-speed): 480Mb/s.

- USB toàn tốc (USB full-speed): 12Mb/s.

- USB tốc độ thấp (USB low-speed): 1.2Mb/s.

Hình vẽ 3.2: Cable USB

Page 33: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 33

Cáp USB bao gồm 4 dây, D+ và D- được dùng để truyền tín hiệu, Vbus và GND để cấp

nguồn cho thiết bị (Thường thì Vbus =5V còn GND=0V tại nguồn). USB cho phép chiều

dài các đoạn cáp có thể thay đổi lên tới vài mét.

Ở phía máy chủ Host thì D+ và D- được nối đất qua các điện trở Rpd còn về phía thiết bị

ngoại vi, các đầu dây D+, D- được bảo vệ bởi điện trở cuối (đó chính là các điện trở Rpu.

Thiết bị tốc độ cao hoặc toàn tốc cần có điện trở nối +3.3 V cho đầu D+, thiết bị tốc độ

thấp cần có điện trở nối lên 3.3 V cho đầu D-. Những điện trở này tạo nên các mức điện

thế khác nhau giữa D+ và D- giúp cho máy chủ phát hiện được việc cắm vào hay rút ra

của thiết bị cũng như tốc độ truyền dữ liệu của thiết bị.

3.2. Mô hình luồng dữ liệu USB

3.2.1. Các thành phần trong việc kết nối USB

Việc thực hiện kết nối USB gồm các thành phần:

- Thiết bị vật lý USB (USB physical device): Là thiết bị tách rời được nối với Host

thông qua cáp USB để thực hiện các chức năng theo yêu cầu của người dùng cuối.

- Phần mềm khách (Client software): Phần mềm thực thi ở trên Host, tương ứng với

thiết bị USB. Phần mềm này có thể được hệ điều hành cung cấp hoặc đi kèm theo

thiết bị của nhà sản xuất.

- Phần mềm hệ thống USB (USB system software): Là phần mềm hỗ trợ USB trong

hệ điều hành riêng. Phần mềm hệ thống USB được cung cấp bởi hệ điều hành, nó

độc lập với thiết bị USB và phần mềm khác.

- USB Host Controller (Giao diện BUS của Host): Là phần cứng và phần mềm cho

phép thiết bị USB gắn với Host.Với thiết bị vật lý USB có các lớp sau:

- Lớp giao diện BUS USB (USB bus Interface) có vai trò trong việc kết nối vật

lý/báo hiệu/gói tin giữa thiết bị USB với Host.

- Lớp thiết bị USB (USB device Layer) là nơi phần mềm hệ thống USB thực hiện

các hoạt động chung với thiết bị USB.

Page 34: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 34

- Lớp chức năng (Function layer): Cung cấp các khả năng bổ sung tới Host thông

qua một client sofware thích hợp.

Hình vẽ 3.3: Mô hình luồng dữ liệu USB

3.2.2. Bus Topology

Bus Topology gồm 4 thành phần chính:

- Host và các thiết bị: đây là thành phần sơ cấp của 1 hệ thống USB.

- Cấu trúc vật lý: cho thấy các thành phần của USB được nối với nhâu như thế nào.

- Cấu trúc logic: cho thấy vai trò và trách nhiệm của các thành phần USB khác nhau và

USB xuất hiện như thế nào từ hình phối cảnh của Host và 1 thiết bị.

- Mối liên quan giữa chức năng và phàn mềm khách (Client Software).

3.2.2.1. USB Host

Page 35: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 35

Hình vẽ 3.4: Kết cấu Host

Kết cấu logic của Host được chỉ ra trong hình trên gồm có:

- Bộ điều khiển Host.

- Phần mềm hệ thống USB đã được gộp chung (thực chất nó gồm: USB Driver,

Host Controller và Host software).

- Phần mềm khách (Client Software).

3.2.2.2. Các thiết bị USB

Hình vẽ 3.5: Kết cấu thiết bị vật lý

Kết cấu logic của một thiết bị USB vật lý trong hình trên gồm:

- Giao diện bus USB.

- Thiết bị USB logic.

- Chức năng.

Các thiết bị USB vật lý cung cấp các chức năng bổ sung cho Host. Các thiết bị USB khac

Page 36: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 36

nhau thì cung cấp các chức năng khác nhau. Mặc dù vậy thì các thiết bị USB logic có nối

ghép tới Host cơ bản giống nhau.

3.2.2.3. Kiến trúc bus vật lý (Physical Bus Topology)

Kết nối vạt lý của các thiết bị USB thông qua kiến trúc tầng sao (tiered star topology) như

hình dưới. Các điểm nối USB được thông qua bởi 1 lớp thiết bị USB được hiểu là Hub.

Các điểm nối bổ sung được kết nối thông qua Hub được gọi là các cổng. Host bao gồm cả

1 Hub được nối với nó là Hub gốc (Root Hub). Các kết nối được thực hiện tại các cổng

của Hub gốc. Các thiết bị cung cấp các chức năng bổ sung cho Host được hiểu là các

chức năng (Funtion) .

Hình vẽ 3.6: Kiến trúc bus vật lý USB

3.2.2.4. Kiến trúc bus logic

Trong khi các thiết bị vật lý được kết nối tới Host theo kiến trúc tầng sao thì quá trình

truyền thông giữa Host với mỗi thiết bị logic được xem như là kết nối trực tiếp tới cổng

gốc (root port). Trong trường hợp này thì bản thân các Hub cũng là các thiết bị logic,

nhưng hình vẽ dưới đây không vẽ ra để cho hình vẽ đơn giản dễ hiểu.

Page 37: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 37

Hình vẽ 3.7: Kiến trúc bus logic USB

3.2.2.5. Mối quan hệ giữa chức năng và phần mềm khách

Trong quá trình hoạt động, phần mềm khách nên độc lập với các thiết bị khác có thể được

gắn tới USB.

3.2.3. Luồng truyền thông USB

Hình vẽ 3.8: Luồng truyền thông USB

USB có thể cung cấp dịch vụ truyền thông giữa phần mềm ở trên Host và nhiều chức

năng của USB, mỗi chức năng có thể có yêu cầu luồng truyền thông khác nhau cho mỗi

sự tương tác với phần mềm. USB cung cấp việc sử dụng toàn bộ bus tốt hơn là việc cho

phép tách ra nhiều luồng truyền thông khác nhau của 1 chức năng USB, mỗi luồng truyền

thông sử dụng một vài truy cập bus để thực hiện truyền thông giữa phần mềm và chức

năng của USB. Mỗi luồng truyền thông sẽ kết thúc tại mỗi điểm cuối (end point) trên một

thiết bị, thiết bị điểm cuối được dùng để nhận dạng luồng truyền thông.

Page 38: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 38

Hình vẽ 3.9: Luồng truyền thông USB

Phần mềm ở trên Host liên lạc với thiết bị logic qua tập hợp các luồng truyền thông. Tập

hợp các luồng truyền thông sẽ được lựa chọn bởi nhà thiết kế phầm mềm hay phần cứng

để phù hợp với các yêu cầu truyền thông của thiết bị cũng như đặc tuyến truyền đạt của

USB.

3.2.4. Các loại truyền dữ liệu USB

USB truyền dữ liệu qua 1 ống dẫn (đường truyền) giữa 1 bên là bộ nhớ đệm được liên kết

với 1 phần mềm khách trên máy chủ với 1 bên là 1 điểm cuối trên thiết bị USB. USB

cung cấp các dạng truyền tải khác nhau đã được tối ưu hóa để đáp ứng một cách thích

hợp nhất các nhu cầu của phần mềm khách và chức năng.

Có 4 kiểu truyền USB:

- Control tranfer (Truyền điều khiển): thường sử dụng để cài đặt phần cứng và đưa

ra các lệnh cho điều khiển thiết bị. Kiểu truyền này được làm việc ở mức ưu tiên

cao với khả năng kiểm soát lỗi tự động. Mỗi gói tin có thể truyền lên đến 64byte.

- Isochronous tranfer (truyền đẳng thời): khi lượng dữ liệu cần truyền lớn với tốc độ

dữ liệu đã được qui định, chẳng hạn như dùng cho card âm thanh thì thường áp

dụng truyền đồng bộ. Theo cách truyền này một giá trị tốc độ dữ liệu xác định

được duy trì. Việc hiệu chỉnh lỗi không được thực hiện vì các lỗi lẻ tẻ cũng không

gây ảnh hưởng đáng kể đến chất lượng cuộc truyền.

- Interrup tranfer (Truyền ngắt): sử dụng cho các thiết bị cần cung cấp một lượng dữ

Page 39: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 39

liệu nhỏ (chỉ truyền theo hướng vào) và tuần hoàn chẳng hạn như: chuột, bàn phím

đều sử dụng kiểu truyền ngắt. Không giống như cơ chế ngắt, ở đây không có yêu

cầu ngắt được gửi tới chủ USB mà máy tính sẽ hỏi vòng theo chu kỳ xem có thiết

bị nào gửi dữ liệu tới không. Thường thiết bị gửi tới chủ máy tính 8 byte dữ liệu

trong một lần truyền. Các thiết bị sử dụng kiểu truyền ngắt như bàn phím, chuột

hay cũng có thể dùng cho một thiết bị đo lường khác.

- Bus tranfer (Truyền khối): khi có lượng dữ liệu lớn cần truyền và cần kiểm soát lỗi

tryuền, nhưng lại không có yêu cầu thúc ép về thời gian truyền thì dữ liệu thường

được truyền theo kiểu khối. Kiểu truyền này thường áp dụng cho các thiết bị như

máy in, máy quét.

3.3. Giao diện vật lý BUS USB

Bus USB có hai kiểu đầu nối thông dụng: kiểu A và kiểu B, thiết kế như vậy nhằm mục

đích không xảy ra đấu nối nhầm giữa đầu cắm với thiết bị và đầu cắm với Hub. Khác với

chuẩn RS 232, việc đấu nối ở bus USB không chia ra các kiểu đấu nối khác nhau, chẳng

hạn nối thẳng và bắt chéo. Bus USB sử dụng một Cable bốn sợi dây để nối với các thiết

bị, trong đó một cặp đường truyền hai sợi xoắn được dùng làm các dữ liệu vi sai (D+ và

D-) còn hai dây làm nguồn nuôi 5V và nối đất (GND) (hình 3.10).

Hình 3.10: Cable USB

Cable nối luôn thực hiện sự liên kết 1:1, nghĩa là Cable chỉ nối với Hub và thiết bị. Kết

nối qua Cable USB sử dụng 4 đường dẫn có màu khác nhau qui định cho các tín hiệu trên

bus.

Chân Tên gọi Màu dây Mô tả

Page 40: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 40

Bảng 3.11: Các dây dẫn trong USB

Các ổ cắm phía sau máy tính thường là kiểu đầu nối A, qua đó có thể nối trực tiếp các

thiết bị USB vào máy tính PC. Các thiết bị có tốc độ thấp chẳng hạn như chuột cũng có

thể đấu thẳng vào ổ cắm này bằng một phích cắm cũng kiểu A.

Hình 3.12: Đánh số các chân nối ổ cắm USB và cab nối kiểu A và B

3.4. Giao thức truyền

3.4.1. Các trường trong truyền thông USB

Thứ tự bit được truyền qua bus USB là bit có trọng số nhỏ nhất (LSB) được truyền đầu

tiên cho đến bit MSB. USB có 4 loại gói truyền trên bus là: gói nhận dạng (Token), gói

dữ liệu (Data), gói khởi đầu khung (Start Of Frame) và gói bắt tay (Handshake). Trong

mỗi gói lại gồm có nhiều trường, truyền thông USB có các loại trường sau:

- Trường đồng bộ (SYNC): tất cả các gói đều được bắt đầu bằng trường SYNC, đó

là chuỗi nhị phân mã NRZI (Non Return to Zero Inverted) của chuỗi “KJKJKJ”.

Việc sử dụng SYNC làm khởi đầu cho một gói nó giống như bit Start trong RS

232. Tất cả các gói đều giới hạn giữa SOP (Start – Of - Packet) và EOP (End – Of

– Packet).

1

2

3

4

VCC

D-

D+

GND

Đỏ

Trắng

Xanh lục

Đen

+5VCC

Dữ liệu (D-)

Dữ liệu (D+)

Nối đất

Page 41: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 41

- Trường nhận dạng (PID): theo sau ngay trường SYNC trong mỗi gói của USB, gói

có chiều dài 8bit gồm 4 bit thấp là 4bit nhận dạng gói, 4bit cao là đảo của 4bit thấp

nhằm kiểm soát lỗi khi truyền. Trường PID mô tả loại gói sẽ được truyền sau nó.

Cả chủ USB và các thiết bị USB đều nhận biết được các mã trường nhận dạng đã

được qui định. Nếu mã nhận được là không nằm trong các mã đã qui định chủ

USB sẽ không hỗ trợ. Sau đây là bảng danh sách mã trường nhận dạng của các

loại gói trong USB.

- Trường địa chỉ (ADDR): là địa chỉ riêng để truy cập tới thiết bị. Thiết bị có thể

nhận dữ liệu hay truyền dữ liệu về máy chủ (phụ thuộc vào giá trị gói nhận dạng

PID) thông qua địa chỉ của nó. Trường địa chỉ sử dụng 7 bit [A0 ÷ A6]. Trường

địa chỉ có trong các gói IN, SETUP, OUT. Mỗi địa chỉ, chỉ định cho một thiết bị

đơn lẻ khi bắt đầu được cấp nguồn các thiết bị có địa chỉ mặc định là zero và chủ

USB nhận bảng mô tả của thiết bị thông qua địa chỉ mặc định này.

- Trường điểm cuối (End Point): một trường điểm cuối sử dụng 4 bit cho phép lựa

chọn điểm cuối trong thiết bị. Trừ điểm cuối zero, số điểm cuối là riêng biệt cho

từng thiết bị chức năng. Một điểm cuối là địa chỉ của một bộ đệm trong thiết bị,

trường địa chỉ được định nghĩa trong các gói IN, SETUP và OUT. Từ điểm cuối

tới chủ USB thiết lập một kênh trao đổi thông tin gọi là đường ống. Tất cả các

thiết bị chức năng đều hỗ trợ một đường ống mặc định với điểm cuối là zero, chủ

USB sẽ trao đổi với thiết bị mới gắn vào thông qua đường ống này.

- Trường số khung: trường số khung có độ dài 11bit, nó được gửi trong gói SOF

(Start Of Frame Packets). SOF được gửi bởi chủ USB theo chu kỳ 1ms

0.005ms.

- Trường dữ liệu: trường dữ liệu có độ dài từ 0 đến 1023byte, các byte được gửi đi

lần lượt. Trong mỗi byte dữ liệu bit dữ liệu nhỏ nhất được gởi trước và cuối cùng

là bit bit có trong số lớn nhất (Msb).

3.4.2. Các loại gói trong truyền thông USB

Page 42: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 42

Gói nhận dạng (Token Packets): chỉ cho biết loại truyền ngay sau nó. Có 3 loại gói nhận

dạng:

- IN: Báo thiết bị biết chủ USB muốn đọc thông tin.

- OUT: báo cho thiết bị rằng chủ USB muốn gởi thông tin.

- SETUP: được sử dụng bắt đầu trong truyền điều khiển.

Gói khởi đầu khung (Start Of Frame): gói khởi đầu khung được phát ra từ chủ USB theo

chu kỳ 1.00ms 0.005ms, gói khởi đầu khung (SOF) bao gồm các trường:

- 8bit: PID nhận dạng loại gói.

- 11bit: số khung.

- 5bit: kiểm tra lỗi CRC5.

Gói dữ liệu (Data Packets): một gói dữ liệu bao gồm một trường PID (8bit).

Gói bắt tay (Handshake Packets): có 3 loại gói bắt tay

- ACK: trả lời dữ liệu đã nhận thành công.

- NAK: báo thiết bị không trả lời dữ liệu nhận hay nhận bị lỗi. Tất cả các gói bắt tay

đều được truyền theo kiểu ngắt để báo tin cho chủ USB biết dữ liệu không được

gửi.

- STALL: chỉ ra rằng thiết bị USB là không có khả năng truyền hoặc nhận dữ liệu

hay đường ống yêu cầu là không hỗ trợ.

3.5. Điểm danh và gói phần mềm điều khiển

3.5.1. Điểm danh

Khả năng tự động nhận ra và cài đặt phần mền điều khiển cho các thiết bị USB là do hệ

thống thường xuyên kiểm tra thông tin thiết bị trên cổng. Việc điểm danh được thực hiện

độc lập bởi hệ điều hành, không cần một chương trình người sử dụng phải thực hiện công

việc này. Khi một thiết bị USB được kết nối vào mạng, hub nhận ra nó thông qua mức

điện áp trên đường dữ liệu. Vì trong mỗi thiết bị USB đường dữ liệu được nối nguồn

Page 43: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 43

thông qua điện trở, do đó khi kết nối vào bus điện áp đường dữ liệu trên hub được đưa lên

mức cao báo cho hub biết một thiết bị đã kết nối vào cổng tương ứng.

Khi hệ điều hành nhận biết một thiết bị mới được kết nối, nó yêu cầu thiết bị kết nối cung

cấp thông tin về thiết bị. Thiết bị có nhiệm vụ đưa ra bảng cung cấp thông tin về mình

dưới dạng một bảng mô tả (Description). Bảng mô tả là một cấu trúc dữ liệu được qui

định chính xác về nội dung, cách sắp xếp dữ liệu và chiều dài của nó. Hệ điều hành dựa

vào thông tin cung cấp từ bảng mô tả thiết bị mà gọi các phần mềm điều khiển tương

ứng.

3.5.2. Phần mềm điều khiển

Chức năng của phần mềm điều khiển (driver) thiết bị nói chung, có thể mô tả như một

mắt xích liên kết giữa phần cứng và phần mềm của một hệ thống. Trong môi trường từ

Window 98 không có một chương trình ứng dụng nào có thể truy cập trực tiếp lên phần

cứng. Cách tốt nhất là gọi ra một phần mềm điều khiển thiết bị, phần mềm này trao đổi

trực tiếp với phần cứng hoặc qua lớp đệm nằm sâu hơn trong hệ thống. Phần mềm điều

khiển được các nhà sản xuất thiết bị cung cấp kèm theo và được viết trong khuôn khổ đầu

tư cho thiết bị của một công ty. Phần mềm làm việc trong chế độ lõi với quyền ưu tiên

cao hơn. Một phần mềm điều khiển được xem xét giống như một thiết bị ảo, nghĩa là một

chương trình người dùng sử dụng một phần mềm điều khiển giống như chính một thiết

bị.

Tất cả các phần mềm điều khiển USB đều dựa trên Win32-Driver-Model (WDM), mô

hình này đã được sử dụng trong Window NT và được tương thích trong Window 98. Tất

cả các lệnh gọi phần mềm điều khiển đều chạy qua phềm mềm quản lý vào/ra (I/O

Manager). Các chương trình người dùng khác nhau gửi gói yêu cầu tới phần mềm quản lý

vào/ra, phần mềm này sau đó phân phối tới phần mềm điều khiển cụ thể.

3.6. Một số vi mạch sử dụng trong kết nối USB

Trên thị trường hiện nay đã cung cấp một số IC chuyên dụng sử dụng cho việc kết nối

USB. Bên cạnh đó nhiều vi điều khiển (Microcontroller) của các hãng khác nhau cũng đã

Page 44: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 44

tích hợp cổng USB tạo thuận lợi trong việc sử dụng. Các IC này đều tích hợp phần cứng

bổ trợ tự động phát hiện các gói dữ liệu, yêu cầu từ chủ USB, và tự động gởi các bảng mô

tả thiết bị tới chủ USB.

Các vi mạch hỗ trợ kết nối USB là các Microcontroller có hỗ trợ phần cứng, phần dẻo.

Phần mềm trao đổi dành cho người thiết kế tạo điều khiện tối đa cho người sử dụng. Các

Microcontroller hỗ trợ USB với các tốc độ trao đổi tin: 1.5Mbps (Low - Speed), 12Mbps

(Full - Speed) và 480Mbps (Hight - Speed). Các thiết bị truyền tin tốc độ thấp và trung

bình như: CY7C63001, AN21XX, CY7C64xxx, PIC18f4550, 68HC705JB2,v.v... Các

thiết bị có tộc độ cao như: FTDI FT8U232, FTDI FT8U245, CY68013 FX2,

NET2280,v.v... Sau đây là một số vi điều khiển hay dùng:

CY7C63001

Bộ vi xử lý 8bit theo khiến trúc Harvard.

- Chạy đồ hồ 6MHz.

- 128byte RAM.

- Hỗ trợ USB tốc độ 1.5Mbps.

- Đóng gói 20 chân.

PIC16C745, PIC16C765 (Microchip)

- Hỗ trợ USB 1Mbps với 6 điểm cuối.

- 5 kênh ADC 8bit,v.v…

PIC18F4550 (Microchip)

- Hỗ trợ USB 12Mbps với 16 điểm cuối. Mỗi điểm cuối 2 bộ đệm 512byte.

- Chạy xung nhịp 48MHz.

NET2888 (Netchip)

- Hỗ trợ USB 1.0 và 1.1.

Page 45: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 45

- Hỗ trợ 5 đểm cuối.

- Chạy với xung nhịp 48MHz.

68HC705JB3 (Motorola)

- Hỗ trợ USB tốc độ 1.5Mbps.

- Hỗ trợ 2 ngắt điều khiển điểm cuối.

- 144byte RAM.

PDIUSBD11 (của Philips)

- Hỗ trợ USB 12Mbps.

- Một điểm điều khiển và 6 điểm cuối chung.

- Chạy với xung nhịp 12MHz.

CY7C68001

- Hỗ trợ USB tốc độ 480Mbps và 12Mbps.

- Hỗ trợ 5 điểm cuối với bộ đệm 512byte cho truyền khối và 1024byte cho truyền

đẳng thời. 4Kbyte FIFO.

Page 46: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 46

CHƯƠNG 4:

THIẾT KẾ VÀ CHẾ TẠO CÁC KHỐI CHỨC NĂNG

4.1. Khối nguồn nuôi điện áp thấp

Hình vẽ 4.1: Khối nguồn nuôi

Các đặc trưng thiết kế nguồn nuôi điện áp thấp:

- Điện áp lối vào 220 VAC

- Trong mạch nguồn nuôi có sử dụng Biến áp nguồn đôi: -12V| 0V|+12V

- Dòng cực đại lối ra là : 1A

4.2. Mạch xử lý trung tâm

Page 47: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 47

Hình vẽ 4.3: Mạch xử lý trung tâm

Hình vẽ 4.4: Mạch nguồn cho vi điều khiển

Page 48: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 48

Hình vẽ 4.5: Mạch hiển thị lcd

Hình vẽ 4.6: Mạch led báo trạng thái

Page 49: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 49

4.3. Mạch phân áp

4.3.1. Mạch phân áp DC

Hình vẽ 4.7: Mạch phân áp DC

3.2. Mạch phân áp AC

Hình vẽ 4.8: Mạch phân áp AC

Page 50: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 50

4. Mạch cộng

Hình vẽ 4.9: Mạch cộng

* Một số linh kiện khác sử dụng trong mạch

LM324

Hình vẽ: LM324

LM324 là một IC khuếch đại thuật toán, công suất thấp bao gồm 4 bộ khuếch đại thuật

Page 51: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 51

toán (Op-Amp) trong nó. Thông thường một bộ khuếch đại thuật toán (Op-Amp) thì cần

phải có nguồn đôi. Tức là phải có nguồn dương và nguồn âm. Chẳng hạn như Opamp

741. Tuy nhiên các Opamp trong LM324 được thiết kế đặc biệt để sử dụng với nguồn

đơn. Tức là chỉ cần Vcc và GND là đủ.

Một điều đặc biệt nữa là nguồn cung cấp của LM324 có thể hoạt động độc lập với nguồn

tín hiệu. Ví dụ nguồn cung cấp của LM324 là 5V nhưng nó có thể làm việc bình thường

với nguồn tín hiệu ở ngõ vào V+ và V- là 15V.

Vấn đề cần quan tâm khi thiết kế mạch với IC LM324:

- Điện áp cung cấp: Nguồn cung cấp cho LM324 tầm từ 5V~32V.

- Áp tối đa ngõ vào: từ 0~32V đối với nguồn đơn và cộng trừ 15V đối với nguồn

đôi.

- Công suất của Lm324 loại chân cắm (Dip): khoảng 1W.

- Điện áp ngõ ra: từ 0 ~ (Vcc - 1,5V).

+ Dòng ngõ ra khi mắc theo kiểu đẩy dòng (dòng Sink): dòng đẩy tối đa đạt được

20mA.

+ Dòng ngõ ra khi mắc theo kiểu hút dòng (dòng Souce): dòng hút tối đa có thể lên

đến 40mA.

- Tần số hoạt động của LM324: 1MHz.

- Độ lợi khuếch đại điện áp DC của LM324 tối đa khoảng 100 dB.

Page 52: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 52

Chương 5: CÁC GIẢI THUẬT PHẦN MỀM

5.1. Giải thuật cho vi điều khiển

Hình vẽ 5.1: Thuật toán khối vi điều khiển

Page 53: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 53

Chương trình CCS:

#define __USB_PIC_PERIF__ 1//Pic lam thiet bi ngoai vi

#include <18F4550.h> //khai bao thu vien Pic18f4550

#device ADC=8 //dung bo chuyen doi analog sang so 8 bit

#fuses

HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN

//Cau hinh cho Pic

#use delay(clock=48000000)

//khai báo các hằng

#DEFINE USB_HID_DEVICE TRUE // Sử dụng lớp HID

#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //Kiểu truyền ngắt

#define USB_EP1_TX_SIZE 32 // Dùng 32 bytes bộ nhớ phần cứng

#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Kiếu truyền ngắt

#define USB_EP1_RX_SIZE 32 //Dùng 32 bytes bộ nhớ phần cứng

// Liet ke cac thu vien trong CCS

#include <pic18_usb.h> //Khai bao thu cvien usb trong pic18

#include <usb_desc_hid-8-byte.h> //Cau hinh va mo ta thiet bi cho thiet bi USB

#include <usb.c> //cai dat ma nhan dang va mo ta thiet bi usb

#include <lcd_lib_4bit.c> //khai bao thu vien lcd 4 bit

//Khai bao cac bien

int16 CCP1Value,CCP2Value; // Gia tri CCP hien tai

int16 CCP1OldValue,CCP2OldValue; // Gia tri CCP truoc do

int16 dem=0; //dem ngat timer1

Page 54: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 54

int8 h=12;

int16 freqAC_high,freqAC_low,freqPulse_high,freqPulse_low;

//BOOLEAN CCP1Captured;

//chuong trinh debug giam sat tinh trang ket noi cua usb vao host

void usb_debug_task(void)

{

static int8 last_connected;

static int8 last_enumerated;

int8 new_connected;

int8 new_enumerated;

new_connected=usb_attached();

new_enumerated=usb_enumerated();

if(new_enumerated)

{

output_high(pin_b0);

delay_ms(10);

output_low(pin_b0);

delay_ms(10);

}

else

output_high(pin_b0);

last_connected=new_connected;

last_enumerated=new_enumerated;

Page 55: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 55

}

//dinh nghia cac gia tri host truyen xuong

#define kenhAC 9

#define kenhPulse 10

#define kenhDC 11

#define ca3kenh 12

///////////////////////////////////////////

#int_timer1

void count_interupt()

{

dem++;

}

#int_ccp1

void capture_freqAC()

{

CCP1Value = CCP_1 +(65535*dem-CCP1OldValue);

CCP1OldValue = CCP_1;

dem=0;

}

#int_ccp2

void capture_freqFulse()

{

CCP2Value = CCP_2 +(65535*dem-CCP2OldValue);

Page 56: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 56

CCP2OldValue = CCP_2;

dem=0;

}

void main()

{

unsigned int8 in_data[8];

unsigned int8 out_data[8];

unsigned int8 timebase=100;

unsigned int16 ADC0;//gia tri adc doc tu chan an0

unsigned int16 ADC1;//gia tri adc doc tu chan an1

unsigned int16 ADC2;//gia tri adc doc tu chan an2

unsigned int16 ADC3;//gia tri adc doc tu chan an3

output_high(pin_b0);//tat led o chan b0

output_low(pin_b4);// tat led o chan b4

output_low(pin_b2);// tat led o chan b2

output_low(pin_b3);// tat led o chan b3

//cai dat adc

setup_adc(ADC_CLOCK_INTERNAL);//thoi gian chuyen doi ADC theo xung noi VĐK

setup_adc_ports(AN0_TO_AN3 | VSS_VDD);//chon kenh do an0 ,an1,an2,an3

set_adc_channel(0);

//capture gia tri timer1

SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_8);//Timer1 định thì

setup_ccp1(CCP_CAPTURE_RE);//Capture theo cạnh lên

Page 57: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 57

setup_ccp2(CCP_CAPTURE_FE);//Capture theo cạnh xuống

set_timer1(0);

CCP1Value = 0;

CCP1OldValue = 0;

CCP2Value = 0;

CCP2OldValue = 0;

//CCP1Captured = TRUE;

enable_interrupts(INT_CCP1);//dung bo capture1

enable_interrupts(INT_CCP2);//dung bocapture2

enable_interrupts(INT_TIMER1);//ngat timer1

enable_interrupts(GLOBAL); //ngat toan cuc

usb_init();

lcd_init();

set_adc_channel(0);

read_adc();

delay_us(1);

lcd_putcmd(line_1);

printf(lcd_putchar,"Do An Tot Nghiep ");

lcd_putcmd(line_2);

printf(lcd_putchar," Khoa Dien-BKDN ");

delay_ms(2000);

lcd_putcmd(line_1);

printf(lcd_putchar," OscilloScope ");

Page 58: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 58

lcd_putcmd(line_2);

printf(lcd_putchar," Pic18F4550 ");

while (TRUE) {

usb_task();

usb_debug_task();

if (usb_enumerated())

{

if (usb_kbhit(1))

{

usb_get_packet(1, in_data, 8);

switch (in_data[0])

{

case 1: timebase = 4; break;//1ms

case 2: timebase = 21; break;//5ms

case 3: timebase = 43; break;//10ms

case 4: timebase = 216; break;//20ms

case 5: timebase = 436; break;//50ms

case 6: timebase = 1248; break;//100ms

case 7: timebase = 2456; break;//200ms

case 8: timebase = 6125; break;//500ms

}

switch (in_data[1])

{

Page 59: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 59

case kenhAC: //kenhAC

{

//bong bao

output_high(pin_b4);//bat led b4

output_low(pin_b2);// tat led b2

output_low(pin_b3);// tat led b3

//Doc ADC

set_adc_channel(0);

delay_us(1);

ADC0 = read_adc();

delay_us(5);

set_adc_channel(2);

delay_us(1);

ADC2 = read_adc();

delay_us(5);

//chia tan so

freqAC_high=CCP1value /256;//byte cao cua tan so

freqAC_low=CCP1value %256; //byte thap cua tan so

//// truyen du lieu 8 bit

out_data[0]=ADC0;

out_data[1]=ADC2;

out_data[4]=freqAC_high;//truyen byte cao cua tan so dong xoay chieu

out_data[5]=freqAC_low;//truyen byte thap cua tan so dong xoay chieu

Page 60: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 60

}

break;

case kenhPulse://kenh do xung

{

//led bao

output_high(pin_b2);//bat led b2

output_low(pin_b4);//tat led b4

output_low(pin_b3);//tat led b3

//doc adc

set_adc_channel(1);

delay_us(1);

ADC1 = read_adc();

delay_us(5);

//chia tan so

freqPulse_high=CCP2value /256;//byte cao cua tan so xung

freqPulse_low= CCP2value %256; //byte thap cua tan so xung

////truyen du lieu 8 bit

out_data[2]=ADC1;

out_data[6]=freqPulse_high;//truyen byte cao cua tan so xung

out_data[7]=freqPulse_low;//truyen byte thap cua tan so xung

}

break;

case kenhDC://kenh DC

Page 61: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 61

{

//led bao

output_high(pin_b3);//bat led b3

output_low(pin_b2);//tat led b2

output_low(pin_b4);//tat led b4

//doc adc

set_adc_channel(3);

delay_us(1);

ADC3 = read_adc();

delay_us(5);

////truyen du lieu 8 bit

out_data[3]=ADC3;

}

break;

case ca3kenh: //2 kenh AC va DC

{

//led bao//

output_high(pin_b4);//

output_high(pin_b2);//

output_high(pin_b3);//

//doc adc1

set_adc_channel(1);

delay_us(1);

Page 62: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 62

ADC1 = read_adc();

delay_us(5);

//doc adc0

set_adc_channel(0);

delay_us(1);

ADC0 = read_adc();

delay_us(5);

//doc adc2

set_adc_channel(2);

delay_us(1);

ADC2 = read_adc();

delay_us(5);

//doc adc3

set_adc_channel(3);

delay_us(1);

ADC3 = read_adc();

delay_us(5);

//chia tan so

freqAC_high=CCP1value /256;//byte cao cua tan so dong xoay chieu

freqAC_low=CCP1value %256; //byte thap cua tan so dong xoay chieu

freqPulse_high=CCP2value /256;//byte cao cua tan so xung

freqPulse_low= CCP2value %256; //byte thap cua tan so xung

//truyen du lieu

Page 63: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 63

out_data[0]=ADC0;

out_data[1]=ADC2;

out_data[2]=ADC1;

out_data[3]=ADC3;

out_data[4]=freqAC_high;//truyen byte cao cua tan so dong xoay chieu

out_data[5]=freqAC_low;//truyen byte thap cua tan so dong xoay chiieu

out_data[6]=freqPulse_high;//truyen byte cao cua tan so xung

out_data[7]=freqPulse_low;//truyen byte thap cua tan so xung

}

break;

}

for(h=0;h<timebase;h++); //thoi gian truyen goi du lieu tiep theo

usb_put_packet(1, out_data, 8,USB_DTS_TOGGLE); //Truyen du lieu len may

tinh

}

}

}

}

Page 64: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 64

5.2. Giải thuật cho máy vi tính

Hình vẽ 5.2: Thuật toán trên máy vi tính

Page 65: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 65

Chương trình Visual basic 6.0:

Option Explicit

Dim timer As Long

Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long,

ByVal y As Long) As Long

Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long,

ByVal y As Long, ByVal Color As Long) As Byte

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Dim REX() 'REX[ ] holds the real part of the frequency domain

Dim IMX() 'IMX[ ] holds the imaginary part of the frequency domain

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Command2_Click()

If Command2.Caption = "Start" Then

Command2.Caption = "Stop"

Data.Enabled = True

'timer = 1

countt.Enabled = True

Else

Command2.Caption = "Start"

Data.Enabled = False

countt.Enabled = False

Page 66: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 66

End If

End Sub

Private Sub Command3_Click()

With TChart1

.Zoom.ZoomRect .Axis.Bottom.CalcXPosValue(50), _

.Axis.Left.CalcYPosValue(.Axis.Left.MaxYValue), _

.Axis.Bottom.CalcXPosValue(100), _

.Axis.Left.CalcYPosValue(.Axis.Left.MinYValue)

End With

End Sub

Private Sub Command4_Click()

TChart1.Zoom.Undo

End Sub

Private Sub Command5_Click()

TChart1.Axis.Bottom.Scroll 10, False

End Sub

Private Sub Command6_Click()

Form1.PrintForm

End Sub

Private Sub countt_Timer()

timer = timer + 1

End Sub

Private Sub Data_Timer()

Page 67: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 67

On Error Resume Next

Dim freqAC_low, freqAC_high As Byte ' tan so dong xoay chieu

Dim freqPulse_low, freqPulse_high As Byte ' tan so xung

Dim adc1_low, adc1_high As Byte ' adc kenh 1

Dim adc2_low, adc2_high As Byte 'adc kenh 2

Dim freq_sumAC As Long

Dim freq_sumPulse As Long

Dim total As Long

Dim voltageAC, voltagePulse, voltageDC, freqAC, freqPulse, ADC1, ADC2, ADC3,

ADC4, vhd, amp_display As Double

If Not MyDeviceDetected Then

FindTheHid

If MyDeviceDetected Then

Label2.Caption = "DETECTED USB"

Label2.ForeColor = RGB(0, 255, 0) 'green

Else

Label2.Caption = "NOT DETECTED USB"

Label2.ForeColor = RGB(255, 0, 0) 'red

End If

End If

Call ReadAndWriteToDevice

Call time_base

Call select_channel

Page 68: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 68

'//////////////////doc tan so kenh AC///////////////

freqAC_low = ReadBuffer(6)

freqAC_high = ReadBuffer(5)

freq_sumAC = freqAC_low + freqAC_high * 256

freqAC = 12000000 / (freq_sumAC * 8)

''''''''''''''''''''''''''''''''

''''''''''''doc tan so kenh do xung''''''''''''''''

freqPulse_low = ReadBuffer(8)

freqPulse_high = ReadBuffer(7)

freq_sumPulse = freqPulse_low + freqPulse_high * 256

freqPulse = 12000000 / (freq_sumPulse * 8)

'''''''''adc va dien ap kenh do dien ap AC'''''''''''''

'adc1_high = ReadBuffer(1)

'adc1_low = ReadBuffer(2)

'ADC1 = adc1_low + adc1_high * 256

ADC1 = ReadBuffer(1)

ADC3 = ReadBuffer(2)

voltageAC = ADC1 / 255 * 50 ''dung de ve do thi

amp_display = ADC3 / 255 * 50 ''dung de hien thi gia tri bien do

vhd = amp_display / 1.41421356 ''gia tri hieu dung

'''''''''''adc va dien ap kenh 2'''''''''

'adc2_high = ReadBuffer(3)

'adc2_low = ReadBuffer(4)

Page 69: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 69

'ADC2 = adc2_low + adc2_high * 256

ADC2 = ReadBuffer(3)

voltagePulse = ADC2 / 255 * 5

'''''''''Kenh do DC'''''''''''

ADC4 = ReadBuffer(4)

voltageDC = ADC4 / 255 * 50

'''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''hien thi ket qua lan cac label'''''

''''''hien thi kenh do dien ap AC

Label4.Caption = "Freq_AC:" & " " & Format(freqAC, "0.00") & " " & "Hz"

Label5.Caption = "RMS:" & " " & Format(vhd + 3, "0.00")

Label6.Caption = "AMP:" & " " & Format(amp_display + 3, "0.00") & " " & "V"

''''''''''''hien thi kenh do dien ap Pulse''''''

Label7.Caption = "Freq_Pulse:" & " " & Format(freqPulse, "0.00") & " " & "Hz"

Label8.Caption = "ADC Value:" & " " & Format(ADC2, "0")

Label9.Caption = "Voltage Pulse:" & " " & Format(voltagePulse, "0.00") & " " & "V"

''''''''''''''hien thi dien ap DC''''''''''''''''''''''

Label23.Caption = Format(voltageDC, "0.00") & " " & "V"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''VE DO THI DANG SONG BANG TEECHART""""""""""""""""""

''''''''////////tab do dien ap xoay chieu//////////////////

TChart1.Axis.Left.SetMinMax -HScroll1.Value, HScroll1.Value

TChart1.Series(0).AddXY timer * 1, voltageAC - 25, "", vbRed 've do thi

Page 70: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 70

TChart1.Series(1).AddXY timer * 1, voltagePulse, "", vbBlue 've do thi

TChart1.Series(3).AddXY timer * 1, voltageDC, "", vbGreen 've do thi

'TChart1.Series(3).AddXY timer * 1, voltage4, "", vbYellow 've do thi

TChart1.Series(2).AddXY timer * 5, 0, "", vbBlack 've do thi truc hoanh

TChart1.Page.Current = TChart1.Page.Count

''''''''////////tab do dien ap 1 chieu//////////////////

'TChart2.Axis.Left.SetMinMax -6, 6

'TChart2.Series(0).AddXY timer * 1, voltage3, "", vbGreen 've do thi

'TChart2.Series(1).AddXY timer * 1, voltage4, "", vbBlack 've do thi

'TChart2.Page.Current = TChart2.Page.Count

'/////////////////////////////////////////////////////////////////////////////

End Sub

Private Sub time_Timer()

Label3.Caption = " Time " & " " & Format(Now, "hh:nn:ss")

End Sub

Private Sub time_base()

If Option1(0) Then

OutputReportData(0) = 1 '1

Data.Interval = 1

ElseIf Option1(1) Then

OutputReportData(0) = 2 '5

Data.Interval = 5

ElseIf Option1(2) Then

Page 71: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 71

OutputReportData(0) = 3 '10

Data.Interval = 10

ElseIf Option1(3) Then

OutputReportData(0) = 4 '20

Data.Interval = 20

ElseIf Option1(4) Then

OutputReportData(0) = 5 '50

Data.Interval = 50

ElseIf Option1(5) Then

OutputReportData(0) = 6 '100

Data.Interval = 100

ElseIf Option1(6) Then

OutputReportData(0) = 7 '200

Data.Interval = 200

ElseIf Option1(7) Then

OutputReportData(0) = 8 '500

Data.Interval = 500

End If

End Sub

Private Sub select_channel()

If Option2(0) Then

OutputReportData(1) = 9 'kenh AC==an0

Label4.Enabled = True 'kenh

Page 72: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 72

Label5.Enabled = True 'kenh

Label6.Enabled = True 'kenh

Label7.Enabled = False 'kenh

Label8.Enabled = False 'kenh

Label9.Enabled = False 'kenh

Label22.Enabled = False 'kenh3

Label23.Enabled = False 'kenh3

ElseIf Option2(1) Then

OutputReportData(1) = 10 'kenh Pulse==an1

Label7.Enabled = True 'kenh2

Label8.Enabled = True 'kenh 2

Label9.Enabled = True 'kenh2

Label4.Enabled = False 'kenh1

Label5.Enabled = False 'kenh1

Label6.Enabled = False 'kenh1

Label22.Enabled = False 'kenh3

Label23.Enabled = False 'kenh3

ElseIf Option2(2) Then

OutputReportData(1) = 11 'kenh DC==an3

Label7.Enabled = False 'kenh2

Label8.Enabled = False 'kenh 2

Label9.Enabled = False 'kenh2

Label4.Enabled = False 'kenh1

Page 73: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 73

Label5.Enabled = False 'kenh1

Label6.Enabled = False 'kenh1

Label22.Enabled = True 'kenh3

Label23.Enabled = True 'kenh3

ElseIf Option2(3) Then

OutputReportData(1) = 12 ' ca 3 kenh

Label4.Enabled = True 'kenh1

Label5.Enabled = True 'kenh1

Label6.Enabled = True 'kenh1

Label7.Enabled = True 'kenh2

Label8.Enabled = True 'kenh2

Label9.Enabled = True 'kenh2

Label22.Enabled = True 'kenh3

Label23.Enabled = True 'kenh3

End If

End Sub

Page 74: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 74

Chương 6: KẾT QUẢ VÀ NHẬN XÉT

6.1.Kết quả đạt được:

Giao diện chương trình Visual Basic 6.0:

Dạng sóng điện áp 50Hz:

Page 75: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 75

Dạng xung 10KHz:

Page 76: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 76

Mô hình thực tế:

Page 77: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 77

Page 78: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 78

6.2. Kết luận:

6.2.1 Kết quả đạt được:

Qua thời gian tìm hiểu và nghiên cứu,em đã hoàn thành đồ án với những kết quả đạt được

như sau:

-Đã hoàn thành nhiệm vụ của đồ án là thiết kết chế tạo một bộ đo hiển thị dạng sóng

điện áp sử dụng vi điều khiển Pic18F4550 (của hãng Microchip) ghép nối máy tính qua

chuẩn giao tiếp USB 2.0 .

-Đã chế tạo thành công bộ đo sóng đơn giản,rẽ tiền,nhưng cũng khá chất lượng với cấu

tạo đơn giản,dễ nâng cấp phần cứng lẫn phần mềm,có giao diện người dùng dễ sử

dụng,ghép nối với máy tính qua cáp USB gọn nhẹ phục vụ cho việc học tập và nghiên

cứu của sinh viên,đặc biệt là những sinh viên chuyên ngành về Điện-Điện tử.

-Thiết bị chế tạo có thể đo được điện áp từ 0-50 V với điện áp một chiều,và từ 0-35 V

đối với điện áp xoay chiều.Ngoài ra có thể đo và hiển thị dạng sóng của điện áp có tần số

từ 50Hz-10KHz.

-Thiết bị hoạt động khá ổn định.

6.2.2 Những hạn chế của đề tài:

Do hạn có hạn chế về mặt thời gian tìm hiểu đối với dòng Pic18 của Microchip và

chuẩn giao tiếp USB 2.0,cũng như một số điều kiện khách quan lẫn chủ quan khác mà đề

tài còn một số hạn chế như sau:

- Kết quả hiển thị vẫn chưa đạt được độ chính xác cao.

- Giới hạn thang đo điện áp và tần số còn thấp.

- Phần mô hình thiết bị vẫn chưa được gọn nhẹ tối ưu.

-Vẫn còn nhiễu về dạng sóng khi đo nhiều kênh cùng một lúc.

6.2.3 Hướng phát triển và ứng dụng đề tài vào thực tế:

Page 79: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 79

Để thiết bị của đề tài thực sự được đi vào thực tế khai thác hiệu quả với mục đích phục

vụ cho việc học tập nghiên cứu của học sinh sinh viên thì cần có một số cải tiến và hoàn

thiện đề tài như sau:

-Nâng cao dãi điện áp và tần số đo cho thiết bị.

-Tìm cách chống nhiễu cho thiết bị khi đo cùng lúc nhiều kênh,để thiết bị hoạt động đúng

chức năng là đo đa kênh.

-Có thể dùng những loại vi điều khiển cấp cao hơn,mạnh hơn như DsPic,Pic32 …sử

dụng chuẩn giao tiếp USB 3.0 để tăng tốc độ xử lý,tốc độ truyền dữ liệu để kết quả đo

gần sát với giá trị thực tế hơn. Sử dụng những chip có bộ chuyển đổi analog sang số

(khối ADC) có độ phân gian cao hơn để dạng sóng điện áp ra mịn hơn,chính xác hơn…

Phụ Lục

Trình biên dịch CCS và mạch nạp Burn-E

I.Giới thiệu về trình biên dịch CCS

1.Tổng quan về CCS:

Page 80: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 80

CCS là trình biên dịch ngôn ngữ lập trình bậc cao C cho vi điều khiển Pic của

Microchip.Chương trình này là sự tích hợp của 3 trình riêng biệt cho 3 dòng Pic khác

nhau đó là:

-PCB cho dòng Pic 12-bit opcodes

-PCM cho dòng Pic 14-bit opcodes

-PCH cho dòng Pic 16 và 18 bit

Tất cả 3 trình biên dịch này được tích hợp lại vào trong một chương trình bao gồm cả

trình soạn thảo và trình biên dịch CCS.

1. Ưu và nhược điểm của trình biên dịch CCS: Hiện nay có nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển như: Keil-

C,HT-PIC,MikroC ,CCS…Tuy nhiên ở trong đồ án này em chọn trình biên dịch CCS vì

những ưu và nhược điểm sau:

+ Ưu điểm:

- Dễ sử dụng vì nó đơn giản,nó gần với ngôn ngữ C bình thường.

- Có hỗ trợ một khối lượng lớn các thư viện có sẵn,người dùng có chỉ cần khai báo ra

và sử sụng.Do vậy có thể rút ngắn thời gian lập trình.Người dùng cũng có thể tạo ra

những thu viện riêng biệt theo nhu cầu trong dự án của mình.

- Có hỗ trợ nhiều công cụ đi kèm,có phần Help khá đầy đủ hỗ trợ cho việc tự học tập.

- Nó phổ biến và ra đời từ khá sớm nên có nhiều tài liệu để tham khảo,học tập và

nghiên cứu.

- Người viết không nhất thiết phải nắm vững về phần cứng của Vi điều khiển.

-Giao diện chương trình đơn giản,dễ sử dụng để tạo ra cac Project của mình.

+ Nhược điểm:

-Không thể kết hợp với cú pháp của chương trình khác.

-Không tối ưu về code,cùng nột chương trình thì ngôn ngữ Asembly cho chip chạy ổn

định hơn và độ dài mã máy ngắn hơn.

-Khó có thể lập trình theo hướng thời gian thực và những ứng dụng khắt khe về thời

gian tính toán.

Page 81: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 81

3. Giao diện chương trình biên soạn và biên dịch CCS:

II. Mạch nạp chương trình Burn -E:

Hình dạng bên ngoài của mạch nạp Burn-E

Page 82: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 82

Các thông số của mạch nạp:

-Board sợi RF4 2 lớp, dày 1.0mm.Linh kiện bố trí trên một mặt duy nhất.

-Kích thước 62x20x9 mm.

-Giao tiếp USB 2.0 Full speed 12Mbits/s.

-Đường nạp nối tiếp ICSP -6 chân.

-Cập nhật Firmware qua phần mềm Burn-E.

-Tương thích với hệ điều hành Windows Xp,Vista,Win 7(32bit va 64 bit).

-Không cần cài đặt Driver.(Plug and Play)

Mạch nạp và phần mềm Burn-E cố thể hỗ trợ tới 700 Chip khác nhau của nhiều nhà sản

xuất.

Giao diện chương trình nạp Burn-E:

Page 83: Giao tiếp máy tính với vi điều khiển Pic18F4550 qua cổng USB

ĐỒ ÁN TỐT NGHIỆP GVHD: TS. Nguyễn Văn Minh Trí

SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1 Trang 83

III. Tài liệu tham khảo:

[1] Microchip technology Inc. – PIC18F2455/2550/4455/4550 datasheet.

[2] Datasheet LM324, TL084, LM741,LM7805,LM7812

[3] Help CCSC, Microchip.

[4] Các tài liệu nước ngoài tham khảo trên Internet Usb-in-a-nutshell,Usb complete,Usb

connectors.

[5] Giáo trình Vi điều khiển –Trần Thái Anh Âu-Khoa Điện-ĐHBK Đà Nẵng.

[6] Giáo trình Ghép nối và điều khiển thiết bị ngoại vi-Nguyễn Văn Minh Trí-Khoa

Điện-ĐHBK Đà Nẵng.

[7] Giáo trình Kỹ thuật xung số-Lâm Tăng Đức & Trần Đình Khôi Quốc-Khoa Điện-

ĐHBK Đà Nẵng.

[8] Các trang web và diễn đàn như:

http://www.google.com.vn/,

http://www.picvietnam.com/forum/

http://www.dientuvietnam.net/forums/forum.php

Và một số trang web và một số diễn đàn của nước ngoài khác.