Truyen Thong USB PIC18f2550

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 32

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN

TRƯỜNG ĐẠI HỌC THỦY LỢI

Khoa: Điện – Điện tử

========================

BÁO CÁO

ĐỀ TÀI: TRUYỀN THÔNG USB QUA PIC18F2550

Giáo viên hướng dẫn: Nguyễn Đăng Khoa


Nhóm: 19
Sinh viên thực hiện:
Nguyễn Văn Phương : 1651122689
Lê Quyết Thắng : 1651121749
Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Hà Nội, tháng 11 năm 2019

Mục lục
Chương 1: Tổng quan về PIC18F2550.............................................................4
I. Tổng quan về PIC......................................................................................4
II. VI ĐIỀU KHIỂN PIC18F2550..............................................................8
Chương 2: Giao tiếp UART và USB...............................................................13
I. Giao tiếp UART.......................................................................................13
II. Giao tiếp USB.......................................................................................16
Chương 3: Truyền thông USB dùng PIC18F2550.........................................22
I. Mô tả.........................................................................................................22
II. Phần mềm và mạch nạp.......................................................................22
III. Tạo nguồn cho vi điều khiển...............................................................26
IV. Lập trình...............................................................................................27
V. Mô phỏng.................................................................................................29
VI. Thực tế...................................................................................................30
VII. Kết luận.................................................................................................31

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 2


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Lời nói đầu:


Universal serial Bus(USB) được phát triển để đơn giản hóa và cải
thiện giao diện giữa máy tính cá nhân và thiết bị ngoại vi, khi so sánh với
các giao diện độc quyền tiêu chuẩn hoặc đặc biệt hiện có trước đây.
Từ quan điểm của người dùng máy tính, giao diện USB được cải thiện
dễ sử dụng theo nhiều cách. Giao diện USB tự cấu hình, do đó người
dùng không cần điều chỉnh cài đặt trên thiết bị và giao diện cho tốc độ
hoặc định dạng dữ liệu hoặc định cấu hình ngắt , địa chỉ đầu vào / đầu ra
hoặc kênh truy cập bộ nhớ trực tiếp.
Tiêu chuẩn USB loại bỏ yêu cầu phát triển giao diện độc quyền cho các
thiết bị ngoại vi mới. Phạm vi tốc độ truyền rộng có sẵn từ giao diện USB
phù hợp với các thiết bị khác nhau, từ bàn phím và chuột cho đến phát
trực tiếp giao diện video. Giao diện USB có thể được thiết kế để cung cấp
độ trễ khả dụng tốt nhất cho các chức năng quan trọng về thời gian hoặc
có thể được thiết lập để thực hiện chuyển nền dữ liệu hàng loạt mà ít ảnh
hưởng đến tài nguyên hệ thống. Giao diện USB được khái quát hóa
không có đường tín hiệu chỉ dành riêng cho một chức năng của một thiết
bị.
Bộ vi điều khiển PIC là một trong những bộ điều khiển phổ biến nhất từ
Microchip. Vi điều khiển PIC18F2550 có 1 mô-đun truyền thông USB
(Universal serial Bus). Chủ đề này cho thấy cách sử dụng PIC18F2550
làm USB HID (Thiết bị giao diện con người) để gửi và nhận dữ liệu giữa
vi xử lý PIC với máy tính.
Thiết bị USB HID không cần bất kỳ trình điều khiển bổ sung nào vì nó
đã được cài đặt trong hầu hết các hệ điều hành hiện đại. Trong bài viết
chúng tôi sẽ mô tả cách sử dụng bộ điều khiển vi mô PIC18F2550 để
phát triển một sản phẩm dựa trên USB.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 3


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Chương 1: Tổng quan về PIC18F2550


I. Tổng quan về PIC
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi
Microelectronics Division thuộc General_Instrument. PIC bắt nguồn từ
chữ viết tắt của “Programmable Intelligent Computer” (Máy tính khả
trình thông minh) là một sản phẩm của hãng General Instruments đặt cho
dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC 1650 được
dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì
vậy, người ta cũng gọi PIC với tên “Peripheral Interface Controller” (Bộ
điều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về
các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng
năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng
microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được
sử dụng thời bấy giờ, nhưng PIC thực sự là một vi điều khiển với kiến
trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động).
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở
hữu mới hủy bỏ hầu hết các dự án – lúc đó quá lỗi thời. Tuy nhiên, PIC
được bổ sung EPROM để tạo thành 1 bộ điều khiển vào ra khả trình.
Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các
module ngoại vi tích hợp sẵn (như USART, PWM, ADC…), với bộ nhớ
chương trình từ 512 Word đến 32K Word.

1. Một số đặc tính của PIC


Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần
cứng, nhưng chúng ta có thể điểm qua một vài nét như sau:
 8/16 bit CPU, xây đựng theo kiến trúc Harvard có sửa đổi.
 Flash và Rom có thể tùy chọn từ 256 byte đến 256 Kbyte
 Các cổng xuất/nhập (I/O) (mức logic thường từ 0V đến
5.5V, ứng với logic 0 và logic 1).
 8/16 bit timer.
 Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ
USART.
 Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit.
 Bộ so sánh điện áp (Voltage Comparator).
 Các module Capture/Compare/PWM.
 LCD
 MSSP peripheral dựng cho các giao tiếp I2C, SPI.
 Bộ nhớ nội EPROM – Có thể ghi/xóa tới 1 triệu lần.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 4


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Module điều khiển động cơ, đọc encoder.


 Hỗ trợ giao tiếp USB.
 Hỗ trợ giao tiếp CAN.
 Hỗ trợ giao tiếp LIN.
 Hỗ trợ giao tiếp IrDA.
Một số dòng có tích hợp bộ RF (PIC16f639 và RFPIC).
 Các đặc điểm đặc biệt:
 Có thể ghi/ xoá 100.000 lần với kiểu bộ nhớ chương trình
Enhanced Flash.
 EPROM có thể lưu trữ dữ liệu hơn 40 năm.
 Có thể tự lập trình lại dưới sự điều khiển của phần mềm.
 Mạch lập trình nối tiếp qua 2 chân.
 Nguồn đơn 5V cấp cho mạch lập trình nối tiếp.
 Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên
Chip cho hoạt động đáng tin cậy.Có thể lập trình mờ bảo vệ.
 Tiết kiệm năng lượng với chế độ Sleep.
 Có thể lựa chọn bộ dao động.
2. Phân loại
Tiêu chuẩn để phân nhóm dựa trên sự khác nhau về kiến trúc bộ xử lý
bên trong vi điều khiển.
 Số các thanh ghi có thể truy cập được.
 Có hay không có ngắt, số lượng ngắt.
 Số lượng các phần cứng có chức năng đặc biệt.
 Độ dài từ lệnh.

 Dựa vào những đặc điểm đó, vi điều khiển Pic được chia làm 4 họ:
a) Họ cấp thấp (Low_end)
Gồm các loại được kí hiệu 12C5xx, 16C5x, 16C505,
16HV540:
 Độ dài từ lệnh 12 bit
 Bố trí các thanh ghi: có 32 thanh ghi trên một bank, tối đa
có bốn bank.
 Đặc điểm chung:
 Rất thích hợp trong cac ứng dụng giao diện đơn giản
với ngoại vi.
 Bộ nhớ chương trình kiểu OTP hoặc EPROM xóa
được bằng tia cực tím.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 5


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Tốc độ cao, thực hiện được năm triệu chỉ thị/s với tần
số xung nhịp 20MHz.
 Chỉ có một bộ đếm Timer.
 Không có các ngắt cứng.
 Không có các lối ra tang cường.
 Nạp trình song song, trừ PIC12C5xx và PIC16C505
được nạp trình nối tiếp theo giao thực ICSP.
a) Họ cấp trung (Mid-range)
Bao gồm 12C6xx, 14C000, 16C55x, 16C6x, 16C62x,
16F62x, 16C67x, 16C8x, 16F87x và 16C9xx.
 Độ dài từ lệnh 14 bit.
 Là họ vi điều khiển Pic thông dụng nhất hiện nay.
 Bố trí các thanh ghi: 128 byte trên một bank, tối đa 4
bank.
 Là vi điều khiển vạn năng tính năng mạnh.
 Có rất nhiều biến thể khác nhau, với các kiểu đóng
vỏ đa dạng: DIP, PLCC, SSOP,…
 Đặc điểm:
 Tốc độ cao, thực hiện được năm triệu chỉ thị/s với tần
số xung nhịp 20MHz.
 Có các ngắt phần cứng.
 Có từ 1 đến 3 bộ đếm Timer.
 Có rất nhiều kiểu khác nhau về chân vào/ra tăng
cường bao gồm các vào ra tương tự, giao diện truyền
thông nối tiếp: đồng bộ, không đồng bộ, I2C, SPI,
CAN,.. bộ điều khiển LCD.
 Bộ nhớ chương trình flash ở hầu hết các vi mạch.
 Khả năng nạp trình nối tiếp ICSP.
 Có khả năng tự ghi vào bộ nhớ chương trình (sefl-
programming).
 Có phần cứng gỡ rối chương trình ICD ở một số loại.
b) Họ cao cấp(High-end).
Gồm các loại 17Cxxx
 Độ dài từ lệnh 16 bit.
 Bố trí các thanh ghi: 224 byte trên một bank, tối đa 8
bank, 48 thanh ghi chức năng đặc biệt (SFR).
 Đặc điểm:
 Kiến trúc khác so với Pic cấp trung, cấp thấp.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 6


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Có các lẹnh tăng cường và nhiều khả năng định địa


chỉ.
 Vi điều khiển giao tiếp bus, truy cập các thiết bị song
song trực tiếp.
 Có một số lối vào/ra tăng cường.
 Bộ nhớ chương trình OTP.
 Nạp trình kiểu song song.
c) Họ cấp cao (High-performance).
Gồm những loại có ký hiệu 18Cxxx và 18Fxxx:
 Độ dài từ lệnh 16 bit.
 Bố trí các thanh ghi 156 byte trên 1 bank, tối đa có
16 bank.
 Đặc điểm:
 Kiến trúc nâng cao, dựa trên nền tảng của họ cấp
trung, then xu hướng thừa kế những tính năng của các
loại cấp trung đồng thời bổ xung các tính năng mới.
Do đó dần dần có khả năng thay thế toàn bộ Pic cấp
trung.
 Có các lệnh tăng cường và nhiều khả năng định địa
chỉ.
 Có khả năng truy nhập tới 2Mbyte bộ nhớ chương
trình, 4Kbyte bộ nhớ Ram.
 Có thể lập trình được mức độ ưu tiên các nguồn ngắt.
 Khả năng vào/ra tương tự họ cấp trung.
 Tần số hoạt động tối đa 40MHz, có bộ nhân tần số
PLL.
 Có bộ nhớ chương trình flash.
 Nạp nối tiếp, có khả năng tự ghi vào bộ nhớ chương
trình.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 7


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

II. VI ĐIỀU KHIỂN PIC18F2550.


1. Tổng quan về pic18f2550.
Lý tưởng cho các ứng dụng năng lượng thấp
(nanoWatt) và kết nối được hưởng lợi từ sự sẵn có của ba
cổng nối tiếp: FS-USB (12 Mbit / s), I²C ™ và SPI ™ (tối
đa 10Mbit / s) và nối tiếp không đồng bộ (có khả năng
LIN) cổng (EUSART). 
Một lượng lớn bộ nhớ RAM để đệm và bộ nhớ chương
trình FLASH nâng cao làm cho nó lý tưởng cho các ứng
dụng giám sát và điều khiển nhúng yêu cầu kết nối định
kỳ với Máy tính cá nhân (miễn phí) qua USB để tải lên /
tải xuống dữ liệu và / hoặc cập nhật chương trình cơ sở. 
Trong khi hoạt động lên đến 48 MHz, PIC18F2550
cũng chủ yếu là phần mềm và phần cứng tương thích với
các thiết bị OTP USB tốc độ thấp
PIC16C745. PICSTART® Plus hiện KHÔNG hỗ trợ thiết
bị này nhưng có thể hỗ trợ thiết bị này trong tương lai.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 8


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

2. Sơ đồ chân.

Sơ đồ chân của PIC18F2550 dạng DIP có 28 chân.

Chức năng chân PIC18F25550


STT Tên chân Chức năng chân
1 /VPP/RE3
: Hoạt động Reset ở mức thấp
VPP : ngõ vào áp lập trình
2 RA0/AN0 RA0 : xuất/nhập số
AN0 : ngõ vào tương tự
3 RA1/AN1 RA1 : xuất/nhập số
AN1 : ngõ vào tương tự
4 RA2/AN2/VREF-/CVREF RA2 : xuất/nhập số
AN2 : ngõ vào tương tự
VREF-: ngõ vào điện áp chuẩn (thấp) của bộ
A/D
CVREF: đầu ra so sánh tương tự
5 RA3/AN3/VRFF+ RA3 : xuất/nhập số
AN3 : ngõ vào tương tự
VREF+ : ngõ vào điện áp chuẩn (cao) của bộ
A/D
6 RA4/T0CKI/C1OUT/RCV RA4 : xuất/nhập số
TOCKI : ngõ vào xung clock bên ngoài cho
timer0
C1OUT : Ngõ ra bộ so sánh 1
RCV: đầu vào RCV thu phát ngoài USB

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 9


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

7 RA5/AN4/SS/HLVDIN/C2OUT RA5 : xuất/nhập số


AN4 : ngõ vào tương tự 4
SS : ngõ vào chọn lựa SPI phụ
HLVDIN: đầu vào phát hiện điện áp cao/ thấp
C2OUT : ngõ ra bộ so sánh 2
8 VSS Chân nối đất
9 OSC1/CLKI Ngõ vào dao động thạch anh hoặc xung
clock bên ngoài.
- OSC1 : ngõ vào dao động thạch anh
hoặc xung clock bên ngoài. Ngõ vào
Schmit trigger khi được cấu tạo ở chế
độ RC ; một cách khác của CMOS.
- CLKI : ngõ vào nguồn xung bên ngoài.
Luôn được kết hợp với chức năng OSC1.
10 OSC2/CLKO/RA6 Ngõ vào dao động thạch anh hoặc xung
clock
- OSC2 : Ngõ ra dao động thạch anh.
Kết nối đến thạch anh hoặc bộ cộng
hưởng.
- CLKO : ở chế độ RC, ngõ ra của OSC2,
bằng tần số của OSC1 và chỉ ra tốc độ của
chu kỳ lệnh.
11 RC0/T1OSO/T13CKI RC0 : xuất/nhập số
T1OCO : ngõ vào bộ dao động Timer 1
T13CKI : ngõ vào xung clock bên ngoài
Timer1/Timer3
12 RC1/T1OSI/CCP2(1)/UOE RC1 : xuất/nhập số
T1OSI : ngõ vào bộ dao động Timer 1
CCP2 : ngõ vào Capture 2, ngõ ra compare 2,
ngõ ra PWM2
UOE: bộ thu USB ngoài OE
13 RC2/CCP1 RC2 : xuất/nhập số
CCP1 : ngõ vào Capture 1, ngõ ra compare
1, ngõ ra PWM1
14 VUSB Đẩu ra bộ điều chỉnh điện áp USB 3.3V bên
trong
15 RC4/D-/VM RC4 : xuất/nhập số
D- : giao tiếp USB
VM: đầu vào VM thu phát ngoài USB
16 RC5/D+/VP RC5: xuất/nhập số
D+: giao tiếp USB
VP: đầu vào VP thu phát ngoài USB
17 RC6/TX/CK RC6 : xuất/nhập số
TX : truyền bất đồng bộ USART
CK : xung đồng bộ USART

18 RC7/RX/DT/SDO RC7 : xuất/nhập số

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 10


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

RX : nhận bất đồng USART


DT : dữ liệu đồng bộ USART
SDO : dữ liệu ra SPI
19 VSS Chân nối đất
20 VDD Chân nguồn của PIC.
21 RB0/AN12/INT0/FLT0/SDI/SDA RB0: xuất/nhập số
AN12: đầu vào tương tự
INT0: ngắt ngoài 0
FLT0:đầu vào PWM
SDI: dữ liệu trong SPI
SDA: dữ liệu vào/ra I2C
22 RB1/AN10/INT1/SCK/SCL RB1: xuất/nhập số
AN10: đầu vào tương tự
INT1: ngắt ngoài 1
SCK: vào/ra nối tiếp đồng bộ cho SPI
SCL: vào/ra nối tiếp đồng bộ cho I2C
23 RB2/ AN8/INT2/VMO RB2: xuất/nhập số
AN8: đầu vào tương tự
INT2: ngắt ngoài 2
VMO: đầu ra VMO thu phát ngoài USB
24 RB3/ AN9/CCP2(1)/VPO RB3: xuất/nhập số
AN9: đầu vào tương tự
CCP2(1): đầu ra bộ so sánh 2/ đầu ra PWM2
VPO: đầu ra VPO thu phát ngoài USB
25 RB4/AN11/KBI0 RB4: xuất/nhập số
AN11: đầu vào tương tự
KBI0: Interrupt-on-change pin.
26 RB5/KBI1/PGM RB5: xuất/nhập số
KBI1: Interrupt-on-change pin
PGM: cho phép lập trình ICSP điện áp thấp
27 RB6/KBI2/PGC RB6: xuất/nhập số
KBI2: Interrupt-on-change pin
PGC: mạch vi sai và xung clock lập trình
ICSP
28 RB7/KBI3/PGD RB7: xuất/nhập số
KBI3: Interrupt-on-change pin
PGD: mạch vi sai và dữ liệu lập trình ICSP

3. Đặc điểm kỹ thuật.

 24 chân I / O với điều khiển hướng riêng


 Bộ tạo dao động 8 MHz bên trong hoặc Bộ tạo dao động
48 MHz bên ngoài
 Bộ chuyển đổi A / D 10 ch, 10 bit
 1 x A / E / USART
 1 x MSSP (SPI / I2C)
 2 x ĐCSTQ (Caputure / So sánh / PWM)
 Hẹn giờ 1 x 8 bit

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 11


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Hẹn giờ 3 x 16 bit


 Bộ nhớ chương trình 32 KB
 RAM 2.048 byte
 EEPROM 256 byte
 Dải điện áp hoạt động - 2.0V đến 5.5V
 25mA Nguồn / I / O hiện tại chìm
 Chế độ gỡ lỗi trong mạch (ICD)

 Giao diện USB 2.0 tốc độ đầy đủ (12Mbit / s):

 RAM cổng kép 1K byte + RAM GP 1K byte


 Máy thu phát tốc độ tối đa
 16 Điểm cuối (IN / OUT)
 Điện trở kéo lên bên trong (D + / D-)
 Hiệu suất 48 MHz (12 MIPS)

Đặc biệt: ta có thể nhận ra chân D+ và D- từ kết nối USB ( chân 16 và


chân 15).

4. Thông số.
Tần suất hoạt động DC – 48MHz
Kính thước bộ nhớ chương trình(Flash) 32 (Kbyte)
Tốc độ CPU (MIPS / DMIPS) 12
SRAM (byte) 2048
EEPROM (byte) 256
Thiết bị ngoại vi truyền thông kỹ thuật số 1 –UART, 1-SPI, 1-I2C-
MSSP(SPI/I2C)
Thiết bị ngoại vi Capture / So sánh / 2 Chụp đầu vào, 2 ĐCSTQ,
PWM
Timer 1x8bit, 3x16bit
Bộ so sánh 2
Số lượng mô-đun USB 1
Phạm vi nhiệt độ -40 đến 85℃
Dải điện áp hoạt động (V) 2 đến 5,5

Chương 2: Giao tiếp UART và USB

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 12


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

I. Giao tiếp UART.


1. Khái quát UART.
Các tên đầy đủ UART là “Universal Asynchronous Receiver /
Transmitter”, và nó là một vi mạch sẵn có trong một vi điều khiển nhưng
không giống như một giao thức truyền thông (I2C & SPI). Chức năng
chính của UART là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa
hai thiết bị có thể được thực hiện theo hai cách là giao tiếp dữ liệu nối
tiếp và giao tiếp dữ liệu song song.
Nếu chúng ta nhớ các bộ phận máy tính cũ như máy in, chuột, bàn phím
được liên kết với sự trợ giúp của các đầu nối. Quá trình giao tiếp giữa
máy tính và các bộ phận này có thể được thực hiện bằng UART.
Universal serial Bus (USB) đã thay đổi tất cả các loại nguyên tắc giao
tiếp trên máy tính. Nhưng UART vẫn được sử dụng trong các ứng dụng
được khai báo ở trên. Tất cả các loại kiến trúc vi điều khiển đều có phần
cứng UART tích hợp do giao tiếp nối tiếp và chỉ sử dụng hai cáp để liên
lạc.
2. UART (PIC18F2550)
Một số thiết bị như GPS, GSM, RFID, cảm biến, vv cần phải giao tiếp
với vi điều khiển PIC để truyền hoặc nhận thông tin. Để giao tiếp với vi
điều khiển PIC, một số giao thức truyền thông được sử dụng như RS232,
SPI, I2C, CAN vv Về cơ bản, một giao thức là một tập hợp các quy tắc
được cả người gửi và người nhận đồng ý.
PIC18F2550 có một mô-đun USART được tích hợp sẵn, rất hữu ích cho
giao tiếp nối tiếp. Với sự giúp đỡ của USART, chúng tôi có thể gửi / nhận
dữ liệu đến máy tính hoặc các thiết bị khác.
USART cũng được sử dụng trong giao tiếp PIC với các mô-đun khác
nhau như Wi-Fi (ESP8266), Bluetooth, GPS, GSM, v.v. Chúng ta sẽ thấy
cách giao tiếp được thiết lập giữa vi điều khiển PIC và PC thông qua
USART bằng giao thức RS232.
Chúng ta hãy bắt đầu với giao tiếp nối tiếp sử dụng PIC18F2550.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 13


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

2.1. Truyền thông không đồng bộ.


PIC18F2550 có bộ thu phát không đồng bộ tích hợp. Không đồng bộ
nghĩa là mỗi ký tự (byte dữ liệu) được đặt ở giữa các bit bắt đầu và dừng.
Bit bắt đầu luôn luôn là 0 (thấp) và bit dừng luôn luôn là 1 (cao).

Như hình các bạn có thể thấy. Khi ở trạng thái chờ mức điện thế ở mức
1 (high). Khi bắt đầu truyền START bit sẻ chuyển từ 1 xuống 0 để báo
hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra. Sau START bit là
đến các bit dữ liệu D0-D7 (Theo hình vẽ các bit này có thể ở mức High or
Low tùy theo dữ liệu). Sau khi truyền hết dữ liệu thì đến Bit Parity để bộ
nhận kiểm tra tính đúng đắn của dữ liệu truyền (vấn đề này mình sẽ giải
thích rõ hơn trong tài liệu CRC trong thời gian tới). Cuối cùng là STOP
bit là 1 báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ
tiến hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.

Các thông số cơ bản trong truyền nhận UART:


- Baund rate (tốc độ baund ): Khoảng thời gian dành cho 1 bit được
truyền. Phải được cài đặt giống nhau ở gửi và nhận.
- Frame (khung truyền ): Khung truyền quy định về số bit trong mỗi lần
truyền.
- Start bit : là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết
bị nhận có một gói dữ liệu sắp đc truyền đến. Bit bắt buộc.
- Data : dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền
trước sau đó đến bit MSB.
- Parity bit : kiểm tra dữ liệu truyền có đúng không.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 14


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

- Stop bit : là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi
xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo
tính đúng đắn của dữ liệu. Bit bắt buộc.

2.2. Tốc độ bit và tốc độ truyền.


Tốc độ truyền dữ liệu trong giao tiếp dữ liệu nối tiếp được biểu thị bằng
bps (bit trên giây). Một thuật ngữ được sử dụng rộng rãi khác cho bps là
tốc độ truyền; có nghĩa là, số lần thay đổi tín hiệu mỗi giây. Ở đây tín
hiệu ở dạng bit, do đó tốc độ bit bằng tốc độ truyền.

2.3. Chuyển đổi cấp độ.


Mặc dù có nhiều chân trong đầu nối DB9, chúng ta không cần tất cả.
Chúng ta chỉ cần sử dụng các chân RX, TX và GND.
Chuyển đổi mức PIC18F TTL(logic) thành mức RS232 và ngược lại :
PC có mức RS232 trong khi vi điều khiển PIC có mức TTL. RS232 có
mức điện áp khác nhau cho logic 0 và 1. Để làm cho nó tương thích với
các mức điện áp PIC TTL, chúng ta phải sử dụng MAX232 IC.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 15


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

II. Giao tiếp USB.


1. Khái quát giao tiếp USB
USB (Universal Serial Bus) là một giải pháp nhanh chóng và linh động
hiện nay để thực hiện giao tiếp giữa máy tính và thiết bị ngoại vi. Hầu hết
các máy tính thế hệ mới đều được hỗ trợ giao tiếp USB, thích hợp cho
việc giao tiếp với các thiết bị ngoại vi thông dụng như mouse,
keyboard,... cũng như các thiết bị ngoại vi khác được phát triển bởi người
sử dụng. USB được thiết kế ngày càng hoàn thiện, giúp tạo nhiều thuận
lợi cho người sử dụng.
Ưu điểm :
Dễ sử dụng :Người sử dụng thiết bị ngoại vi giao tiếp qua USB chỉ việc
cắm thiết bị vào cổng USB của máy tính mà không cần quan tâm nhiều
đến các thao tác cài đặt, khai báo thiết bị. Khi không còn muốn sử dụng
chỉ việc rút thiết bị ra. Các thao tác còn lại đều được thực hiện bởi máy
tính và thiết bị. Ngoài ra nguồn cung cấp cho thiết bị cũng được hỗ trợ,
trong nhiều trường hợp thiết bị không cần thêm nguồn, giúp giảm thiểu
được độ phức tạp và cồng kềnh của thiết bị.
Giá thành hợp lý: mặc dù độ phức tạp của thiết bị cao hơn, tuy nhiên
giá thành của thiết bị không quá cao, nhất là trong trường hợp sử dụng
giao tiếp USB phiên bản 1.x. Bên cạnh đó cấu trúc truyền dẫn đơn giản
cũng cho phép tiết kiệm chi phí của thiết bị.
Cho phép nhiều thiết bị trên cùng một đường truyền: USB cho phép
tối đa 127 thiết bị giao tiếp với máy tính trong cùng một thời điểm.
Nhiều sự hỗ trợ cho người phát triển sản phẩm: người phát triển sản
phẩm được hỗ trợ mọi công cụ cần thiết, từ hệ điều hành, phần mềm trên
máy tính đến phần cứng và phần mền cho thiết bị. Rất nhiều hãng sản
xuất đã hỗ trợ giao tiếp này.USB được phát triển không ngừng và mang
lại nhiều thuận lợi hơn cho người sử dụng cũng như người phát triển sản
phẩm.
Nhược điểm :
Tuy nhiên, bên cạnh đó USB còn có một số hạn chế nhất định như:
+Khoảng cách truyền nhận giữa thiết bị ngoại vi và máy tính không lớn
khoảng 5m.
+Yêu cầu nhiều sự hỗ trợ từ hệ điều hành và phần mềm trên máy tính.
+Tốc độ dữ liệu thực ra vẫn còn hạn chế.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 16


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

+Chỉ thực hiện được giao tiếp giữa máy tính (host) và ngoại vi, không
hỗ trợ chức năng giao tiếp giữa các ngoại vi với nhau. Điều này là một
phần do mục đích phát triển của USB, bên cạnh đó sự cải tiến không
ngừng sẽ dần khắc phục các nhược điểm này.
+Khi thiết bị gặp sự cố thì khả năng sửa chữa rất khó.
+Nhiều trở ngại cho người phát triển sản phẩm: do cấu trúc protocol
phức tạp, cần có nhiều kiến thức về các lĩnh vực khác nhau, bên cạnh đó
khó phát hiện ra sai sót trong quá trình phát triển sản phẩm.

2. Tốc độ báo hiệu (tốc độ truyền). 

Chế độ Viết tắt Tốc độ tổng dữ liệu Được giới thiệu


trong
Tốc độ thấp LS 1,5 Mbit / s (187,5 KB / USB 1.0
giây)
Hết tốc độ FS 12 Mbit / s (1,5 MB / s) USB 1.0
Tốc độ cao, tốc HS 480 Mbit / s (60 MB / USB 2.0
độ cao giây)
Siêu tốc SS 5 Gbit / s (625 MB / s) USB 3.0
Siêu tốc độ + SS + 10 Gbit / s (1,25 GB / USB 3.1
giây)
Siêu tốc độ + SS + 20 Gbit / s (2,5 GB / USB 3.2
giây)

3. Các thành phần.


Một mạng USB có thẻ bao gồm các thành phần:
+Host: thông thường là một máy tính, đóng vai trò là trung tâm của
mạng. Một mạng USB chỉ có duy nhất một host.
+Device: là thiết bị giao tiếp với máy tính, có nhiệm vụ thực hiện một
chức năng ngoại vi nào đó và được hỗ trợ giao tiếp USB.
+Hub: có thể hiểu đây là thiết bị trung gian giữa host và device. Hub
có vai trò mở rộng số lượng cổng giao tiếp với host, đồng thời điều chỉnh

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 17


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

tốc độ dữ liệu giữa device và host trong nhiều trường hợp có nhiều device
gắn vào host với các tốc độ dữ liệu khác nhau.
4. Cấu trúc truyền dẫn của USB.
USB truyền dữ liệu và nguồn điện qua 4 dây, bao gồm dây VUSB,
GND, và hai dây truyền dữ liệu là D+,D-.

Điện áp VUSB trên đường dây thông thường là 5V. Tùy thuộc vào chế
độ hoạt động của thiết bị mà giá trị điện áp và dòng điện trên đường
truyền có thể thay đổi.
Dữ liệu truyền trên đường dây có dạng tín hiệu vi sai trên hai dây D+ và
D- và được mã hóa dưới dạng ZRZI. Dạng mã hóa này cho phép truyền
được cả xung clock trên đường truyền. Bên cạnh đó cũng có các khung
đồng bộ được phát đi để đồng xung clock ở đầu phát và đầu thu trước khi
dữ liệu được truyền.
Cực tính của hai dây D+ và D- trên đường truyền luôn ngược nhau khi
hoạt động bình thường.
Ngoài ra tốc độ dữ liệu còn được xác định thông qua các điện trở kéo
lên trên hai dây D+ và D-.
Hai loại jack kết nối thường được sử dụng là USB connector Type A và
Type B:

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 18


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Cáp truyền dẫn là loại cáp 4 dây có màu sắc được quy định như sau:

5. Các dạng truyền nhận dữ liệu của USB


Để theo sát được nhu cầu trong việc sử dụng giao tiếp USB, có 4 dạng
truyền nhận dữ liệu được hỗ trợ, bao gồm:
+Control transfer: dạng truyền này thường được sử dụng cho việc
truyền lệnh hay trạng thái, được sử dụng trong quá trình trao đổi các
thông tin về cấu hình và cái đặt device khi device được gắn vào một cổng
USB của host.
+Interrupt transfer: khi device cần truyền dữ liệu với host, device sẽ
tạo ra một yêu cầu ngắt. Khi host xử lý các device theo quá trình hỏi
vòng, host sẽ đọc được yêu cầu này và tiến hành các thao tác trao đổi dữ
liệu với device. Kích thước tối đa của gói dữ liệu của dạng truyền này
thay đổi tùy theo chế độ truyền nhận dữ liệu (8 byte đối với low speed, 64
byte đối với full speed, 1024 byte đối với high speed).

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 19


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

+Isochronous transfer: dữ liệu được truyền liên tục và phù hợp với
các dạng dịch vụ dữ liệu có yêu cầu khắc khe về thời gian thực như dong
dữ liệu audio hay video. Dạng truyền này không được hỗ trợ cao khả
năng kiểm soát lỗi dữ liệu hay thứ tự gói dữ liệu, cho phép một mức độ
mất dữ liệu thích hợp, và chỉ cho phép ở chế độ high speed.
+Bulk transfer: thích hợp cho việc truyền nhận gói tin dung lượng
lớn, yêu cầu đọ chính xác cao về dữ liệu truyền nhận như truyền nhận dữ
liệu giữa máy in, máy scan và máy tính, có cơ chế khắc phục và sửa lỗi
tốt. Dạng truyền này chỉ thức hiện được ở chế độ full speed và high
speed.
6. Quy trình kết nối giữa device và host.
Khi một device được gắn vào một port của host, để thiết lập một kết nối
với host, device phải tiến hành một quy trình kết nối được điều khiển bởi
host. Quy trình này được gọi là enumeration và được thực hiện giữa
device và host, điều đó có nghĩa là người sử dụng không cần thực hiện
các thao tác cài đặt cho device mới. Quy trình này sẽ được tiến hành
thông qua các bước:
+Bước 1: Host phát hiện có một device mới thông qua điện trở kéo lên
trên cặp dây D+/D-. Host đợi ít nhất 100ms để chờ cho nguồn điện cung
cấp cho device đi vào trạng thái ổn định.
+Bước 2: Host yêu cầu reset device vad đặt device vào trạng thái mặc
định. Device trả lời bằng cách chuyển qua trạng thái địa chỉ zero.
+Bước 3: Hệ điều hành yêu cầu 64 byte device descriptor.
+Bước 4: Sau khi nhận được 8 byte đầu tiên của device descriptor,
host lập tức yêu cầu device reset một lần nữa.
+Bước 5: Host set địa chỉ cho device, đưa device đến trạng thái đã
được định địa chỉ.
+Bước 6: Host yêu cầu 18 byte device descriptor tiếp theo.
+Bước 7: Host tiếp tục yêu cầu configuration descriptor.
+Bước 8: Host tiếp tục yêu cầu endpoint descriptor.
+Bước 9: Host yêu cầu string descriptor.
Sau đó host tự động tìm driver cho device, sau đó yêu cầu gửi lại tất cả
các descriptor trước khi yêu cầu device thiết lập cấu hình hoạt động thông
qua set configuration request.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 20


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Quy trình này tương đối phức tạp, và không thống nhất trong các tài
liệu liên quan. Tuy nhiên, thông qua nội dung các yêu cầu đã được quy
định sẵn.
Từ host gửi xuống, ta hoàn toàn có thể dựa theo đó để trả lới các yêu
cầu của host. Đây cũng là giải thuật cho firmware của vi điều khiển.
Các bước nêu trên chỉ mang tính chất tạo ra một khái niệm mang tính
hình tượng về quy trình này.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 21


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Chương 3: Truyền thông USB dùng PIC18F2550


I. Mô tả.

II. Phần mềm và mạch nạp.


1. Phần mềm.
1.1. Phần mền CCS.
Phần mềm CCS. CCS là trình biên dịch lập trình ngôn ngữ C cho Vi
điều khiển PIC của hãng Microchip.
Chương trình là sự tích hợp của 3 trình biên dich 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ịnh 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à biên dịch là CCS, phiên bản mới nhất
là PCWH Compiler Ver 3.227.
Giống như nhiều trình biên dich C khác cho PIC, CCS giúp cho người
sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các
dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt
hiệu quả cao thông qua việc sử dụng ngôn ngữ lạp trình cấp cao – Ngôn
ngữ C.Tài liệu hướng dẫn sử dụng có rất nhiều. Nhưng chi tiết nhất chính
là bản help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ
giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xủa lý, cấu

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 22


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử
dụng…

Giao diện CCS

1.2. Phần mềm HIDterminal.


Phần mền này giúp giao tiếp USB giữa máy tính và vi điều khiển.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 23


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Giao diện HID terminal

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 24


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

1.3. Phần mềm hercules_328.


Phần mền này giúp giao tiếp UART giữa máy tính và vi điều khiển.

Giao diện hercules_328

2. Mạch nạp.
Mạch nạp đa năng Burn-E:  PIC, AVR, AT89S, EEPROM là sản
phẩm mạch đa năng do người Việt phát triển. Với khả năng có thể nạp
được các dòng vi điều khiển thông dụng như PIC, AVR, AT89S,… mà
giá thành lại rất phù hợp với các bạn sinh viên chuyên ngành điện tử,
và nó có phần mềm nạp rieeng.
Ta sẽ dùng mạch nạp Burn-e để nạp chương trình cho vi điều khiển
PIC18F2550.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 25


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Mạch nạp Burn-e

Giao diện của mạch nạp.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 26


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Sơ đồ cắm chân giữa mạch nạp và vi điều khiển.


Mạch nạp Vi điều khiển
(1)MCLR ------------------------- (1) MCLR/VPP/RE3
(2) VDD------------------------ (20) Vdd
(3) GND------------------------ (8),(19) Vss
(4) PGD ------------------------ (28) RB7/KBI3/PGD
(5) PGC ------------------------ (27) RB6/KBI2/PGC
III. Tạo nguồn cho vi điều khiển.
- Mạch tạo nguồn gồm : 1 Pic18F2550.
1 xung thạch anh 20MHz.
2 tụ 22pF.
1 tụ 470µF.
1 điện trở 10kΩ.

 Mạch nguồn trên proteus:

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 27


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Mạch thực tế:

IV. Lập trình.


Code CCS :
#include <18F2550.h>
#fuses HSPLL, NOWDT, NOPROTECT, NOLVP,
NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN
#use delay(crystal=20MHz)
//RS232 Configuration
#use
rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8)

#define USB_CONFIG_HID_TX_SIZE 16
#define USB_CONFIG_HID_RX_SIZE 16

#define USB_CONFIG_PID 1
#define USB_CONFIG_VID 4660

#include<pic18_usb.h>
#include<usb_desc_hid.h>
#include<usb.c>

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 28


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

void main(void)
{
unsigned char in_data[16];
unsigned int i;
set_tris_b(0x00);
set_tris_c(0x10);
output_b(0x00);
usb_init_cs();
Delay_ms(1000);
while(true)
{
usb_task();
if(usb_enumerated())
{
if(usb_kbhit(1))
{
usb_get_packet(1,in_data,16);
printf("\r\nReceived Data: ");
for(i=0;i<16;i++)
{
printf("%c",in_data[i]);
}
//Now Clear the in_data array
for(i=0;i<16;i++)
{
in_data[i] = '\0'; //Null Character
}
}
}
}
}

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 29


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

V. Mô phỏng.
Để mô phỏng được ta cần dùng phần mềm để tạo cổng com ảo để mô phỏng
giao tiếp uart với vi điều khiển với máy tính: đó là phần mềm Configure Virtual
Serial Port Driver.

Giao diện phần mềm Configure Virtual Serial Port Driver

Hình ảnh mô phỏng trong proteus:

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 30


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

Khi chạy mô phỏng thì phần mềm USB(HID) Terminal nhận cổng
“USB là CCS HID Demo” và phần mềm hercules_328 nhận cổng COM2
đã được tạo ảo để truyền thông từ USB sang UART.

VI. Thực tế.


Trong mạch thực tế:
 Để giao tiếp UART từ máy tính với vi xử lý thì ta
dùng module “USB to COM” dùng chip CH340.
 Khi cắm mạch thì trên phần mềm USB(HID) Terminal
sẽ tự động nhận cổng USB là “CCS HID Demo” còn
cổng UART sẽ nhận là “COM7”.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 31


Truyền Thông USB qua PIC18F2550 GVHD : Nguyễn Đăng Khoa

 Mô hình thực tế:

 Kết quả :

VII. Kết luận.


Qua đề tài trên giúp chúng em:
 Nắm được cơ bản về một dòng vi điều khiển mới là vi điều
khiển PIC.
 Nắm được cơ bản các ngôn ngữ lập trình của vi điều khiển
( lập trình ngôn ngữ C qua phần mềm CCS).
 Biết cách lập trình về giao tiếp UART và USB của vi điều
khiển.

SVTH: NGUYỄN VĂN PHƯƠNG – LÊ QUYẾT THẮNG 32

You might also like