Professional Documents
Culture Documents
Truyen Thong USB PIC18f2550
Truyen Thong USB PIC18f2550
Truyen Thong USB PIC18f2550
========================
BÁO CÁO
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
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.
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.
2. Sơ đồ chân.
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
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.
- 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.
+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.
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:
Cáp truyền dẫn là loại cáp 4 dây có màu sắc được quy định như sau:
+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.
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.
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…
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.
#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>
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
}
}
}
}
}
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.
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.
Kết quả :