B-Giới thiệu usb: Universal serial bus usb-bus truyền thông nối tiếp là 1 trong những giao diện phổ biến nhất được ứng dụng trong các sản phẩm điện tử tiên tiến hiện nay như là: flash, c
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN:
Giáo viên hướng dẫn
MỤC LỤC
I-Mở bài
Trang 21-Vị trí của đề tài 3
2-Tình hình nghiên cứu hiện nay 3
3-Cách tiếp cận đề tày 3
II-Lựa chọn phương án -Lựa chọn phương án……… 3
-Sơ đồ phần cứng và lưu đồ………6
III-Giới thiệu linh kiện và phần mền A-Vi điều khiển PIC 18F2550……….7
1-Giới thiệu sơ lược về PIC 18F2550……… 7
2- Sơ đồ chân và chức năng các chân……… 8
3- Đặc tính điện……… 8
4-Các thanh ghi……… ….9
B-Giới thiệu usb……… …… 12
1-Nhận biết tốc độ trên bus……… 14
2- Các trạng thái usb……… 14
3-Truyền thông qua bus USB………15
C- LED MA TRẬN 1 Giới thiệu về led ma trân………21
2.Cấu tạo và phương pháp điều khiển led ma trận…………22
D- Các linh kiện khác 1- ULN2803……… 22
2-TPIC6B595……….22
3- Transistor D46825……….25
IV-Tính tóan từng khối 1-Khối giao tiếp usb……… 25
2-Khối điều khiển và hiển thị……… 25
3) Tính công suất:……… 28
4-Khối nguồn……… 28
IV-Phần mền……… 28
V-Kết quả……… 35
VI-Kết luận……… … …36
Trang 31) Vị trí của đề tài: Ngày nay với sự phát triển của nền công nghiệp
điện tử thì vấn đề giao tiếp đơn giản, tốc độ truyền và xử lý dữ liệu ngày càng được chú trọng Chuẩn giao tiếp USB ngày càng được sử dụng rộng rãi để đáp ứng những yêu cầu trên để thay thế dần cho giao tiếp cổng com, lpt có tốc độ thấp hơn.
2) Tình hình nghiên cứu hiện nay:
- Ở Việt Nam:
+ Tại các trường đại học có nhiều đề tài giao tiếp máy tính với vi
điều khiển AVR bằng cổng usb, còn với PIC thì có rất ít đề tài và chủ yếu giao tiếp qua lớp HID.
+ Trên thị trường có các doanh nghiệp đã giao tiếp thành công và tự viết driver cho thiết bị và truyền với tốc độ cao
- Trên thế giới: vấn đề giao tiếp máy tính với vi điều khiển qua cổng usb đã được nghiên cứu rất lâu, và có rất nhiều sản phẩm như các kit thí nghiệm, mạch nạp cổng usb
3) Tiếp cận đề tài:
kiến thưc cơ bản về chuẩn usb, lập trình C (hoặc ngôn ngữ lập trình khác)
- Tìm hiểu các linh kiện liên quan đến đề tài, so sánh tính ưu việt của các linh kiện tương quan nhằm lựa chọn linh kiện thiết kế cho phù hợp
ứng dụng mong muốn
thơì gian để viết driver
Từ những phân tích trên và từ yêu cầu của đề tài nên em chọn phương án 1
Trang 4Các lựa chọn trong phương án 1:
- Vi xử lý: AVR, pic 18F2550, pic 18F4450
- Hiển thị: led ma trận,LCD, led 7 đoạn
- Phần mền: CCS, Delphi, mikcroC, C#,C+
- Tạo giao diện: VB, mikcroC
1) Lựa chọn vi điều khiển:
-Có 3 port xuất nhập A,B,C
-10 kênh chuyển đổi tương tự sang số 10 bit
-Có 4 timers: 3 timer 16 bit, 1 timer 1 bit
-Có hỗ trợ giao tiếp USB
-Bộ nhớ dữ liệu EEPROM: 256 bytes
-Bộ nhớ chương trình : 32768 bytes
-Có giao tiếp nối tiếp MSSP, ENHANCED UART
-Giao tiếp song song PSP
-Có 19 nguồn ngắt
- Tần số hoạt động: 0-48MHz
-Có 5 port xuất nhập A,B,C, D,E
-13 kênh chuyển đổi tương tự sang số 10 bit
-Có 4 timers: 3 timer 16 bit, 1 timer 1 bit
-Có hỗ trợ giao tiếp USB
-Bộ nhớ dữ liệu EEPROM: 256 bytes
-Bộ nhớ chương trình : 32768 bytes
-Có giao tiếp nối tiếp MSSP, ENHANCED UART
-Giao tiếp song song PSP
-Có 20 nguồn ngắt
- Tần số hoạt động: 0-48MHz
* Đề tài chọn PIC 18F2550 vì:
- Có những kiến thức cơ bản về 16F877A
- Do yêu cầu của đề tài và giá thành
2) Lựa chọn khối hiển thị:
- Led ma trận hiển thị được nhiều thông tin hơn led 7 đoạn phù hợp với việc điều khiển hiển thị từ máy tính
-LCD cũng hiển thị đựợc nhiều thông tin nhưng cở chữ nhỏ Do đó đề tài chọn led ma trận
Trang 5Trên thị trường có nhiều chương trình biên dịch C cho vi điều khiểnPIC18 Các trình bên dịch này có nhiều đặc tính giống nhau, và chúng dùng đểphát triển chương trình C cho PIC18.
Vài trình biên dịch C thường được dùng:
-MikroC
-PICC18
-C18
-CCS
MikroC: được xây dựng bởi MikroElektronika Dễ dàng để học với một số
sẵn giao diện
PICC18: được xây dựng bởi Hi-Tech Software, với hai phiên bản standardand professional PICC18 được hỗ trợ bởi phần mềm mô phỏng PROTEUS dùng
để mô phỏng vi điều khiển PIC
C18: được xây dựng bởi Microchip Inc, bao gồm việc mô phỏng, hỗ trợphần cứng
CCS: được xây dựng bởi Custom Computer Systems Inc, cung cấp một sốlượng lớn các hàm để lập trình và các mạch debugger , chúng rất hữu ích để pháttriển PIC và có hỗ trợ các hàm giao tiếp usb
Người nghiên cứu chọn CCS để viết chương trình, và VB để viết giao diện
5) Sơ đồ:
a) Phần cứng:
Vi điều khiển PIC18F4550
Máy tính
Nguồn DC
Hiển thị led ma trận
Nút nhấn (mở rộng)
usb BB
Trang 6Xử lý
Hiển thị trên giao diện
Kết thúc
Lưu đồ trên vđk Lưu đồ trên máy tính
Trang 7III- Giới thiệu linh kiện và phần mềm
A-Vi điều khiển PIC 18F2550:
1-Giới thiệu sơ lược về PIC 18F2550
-Có 3 port xuất nhập A,B,C
-10 kênh chuyển đổi tương tự sang số 10 bit
-Có 4 timers: 3 timer 16 bit, 1 timer 1 bit
-Có hỗ trợ giao tiếp USB
-Bộ nhớ dữ liệu EEPROM: 256 bytes
-Bộ nhớ chương trình : 32768 bytes
-Có giao tiếp nối tiếp MSSP, ENHANCED UART
-Giao tiếp song song PSP
Trang 8+ CLK1:ngõ vào nguồn xung bên ngoài.
-OSC2/CLK0/RA6(chân 10):
+ OSC2: ngõ vào dao động thạch anh
+ CLK0: trong việc chọn mode, bằng ¼ tần số của OSC1
+USB control register (UCON)
+USB configuration registor (UCFG)
+USB transfer status register (USTAT)
+USB device Address register (UADDR)
Thanh ghi UCON: chứa các bit cần thiết để điều khiển hoạt động của
module trong quá trình chuyển đổi Thanh ghi chứa các bit có thể điều khiển:
-Cho phép thiết bị ngoại vi USB
- Reset Ping-Pong buffer pointer
- Điều khiển chế độ suspend
-Cấm chuyển đổi gói
Ngoài ra còn chứa các bit trạng thái
Trang 9-Thanh ghi UCFG: chứa hầu hết các bit điều khiển hoạt động của module
USB:
+Tốc độ bus
+Cho phép điện trở kéo lên trong chip
+Cho phép chuyển đổi trong chip
+Sử dụng ping-pong buffer
Trang 10-Thanh ghi USATA: thanh ghi này chứa số endpoint, bộ đệm ping-pong, giá trị
con trỏ
Trang 11-Thanh ghi UADDR: chứa địa chỉ duy nhất của USB khi hoạt
động.UADDR sẽ reset về 0 khi nhận lệnh reset usb hoặc reset vi điều khiển Địa chỉ usb phải được viết trong vi điều khiển thông qua quá trình thiết lập usb cũng như trong firmware của Mỉcochip hỗ trợ
B-Giới thiệu usb:
Universal serial bus (usb-bus truyền thông nối tiếp) là 1 trong những giao diện phổ biến nhất được ứng dụng trong các sản phẩm điện tử tiên tiến hiện nay như là: flash, card âm thanh…
Usb là một chuẩn kết nối tốc độ cao với nguồn cung cấp 5v được cung cấp cho thiết bị được kết nối đến chúng, 1 bus kết nối usb có thể kết nối đến 127 thiết
bị usb được nối qua 1 cáp 4 dây và có thể truyền thông tin qua khoảng cách từ 3m đến 5m chiếu dài Nhiều thiết bị usb có thể kết nối như nhau đến 1 thiết bị gọi là hub có thể có đến 4, 8 hay thậm chí 16 port Một hub lại được kết nối vào 1hub khác, cứ như thế, số lượng tầng lớp cho phép là 6 Trên lý thuyết khoảng cách cực đại đến 1 trạm chủ là 30 mét, sử dung 5 hub
Trên lý thuyết usb có 2 phiên bản- phiên bản trước đó là 1.1 có thể hỗ trợ tốc
độ truyền thông lên đến 11Mbps Trong khi đó phiên bản 2.0 hỗ trợ đến
480Mbps được định nghĩa với 3 tốc độ dữ liệu:
Low-speed :1.5 Mbps
Full-speed :12 Mbps
Trang 12High-speed :480 Mbps
Usb bus có thể cung cấp nguồn tối đa cho thiết bi đến 100mA với nguồn 5v Cáp usb sử dụng dây có 4 lõi với 2 đầu cáp được che kín, có 2 loại đầu nối usb kiểu A và kiểu B
Đầu nối kiểu A (trái)- đầu nối kiểu B (phải)
Thứ tự chân
Ý nghĩa các chân
Trang 13Dây tín hiệu usb có 2 dây, tín hiệu được gửi từ máy chủ sử dung kỹ thuật mãhoá NRTI, Trong kỹ thuật này tín hiệu được đảo ngược cho sự thay đổi với mức logic 0.Tín hiệu cho mức logix 1 là không đổi.
Một gói dữ liệu từ host được gởi tới các thiết được nối với bus qua các hub, tất cả các thiết bị đều nhận tín hiệu nhưng chỉ duy nhất một thiết bị đã được định địa chỉ là nhận dữ liệu đó, chỉ duy nhất một thiết bị tại mỗi thời điểm bất kì có thểtruyền tới host, và dữ liệu được truyền lên lần lượt qua các hub cho đến khi đến được host
Các thuật ngữ chung:
Endpoint: có thể là nguồn hoặc nơi thu vào dữ liệu, một thiết bị usb có thể
có 1 số endpoint, giới hạn số endpoint là 16 in và 16 out endpoint
Pipe: kết nối dữ liệu logic của host và endpoint
Transaction: truyền dữ liệu trên bus
1-Nhận biết tốc độ trên bus:
Ở bus full-speed điện trở được nối từ D+ lên 3.3v và ở bus low-speed điện trở được nối từ D- lên 3.3v Khi không có thiết bị nào được nối host sẽ xem cả hai đường dữ kiệu đếu ở mức thấp Việc kết nối dữ liệu vào sẽ kéo D+ hoặt D- lên mức cao và host sẽ nhận biết đựơc là có thiết bị cắm vào bus
2- Các trạng thái usb:
Idle: bus ở trạng thái chờ khi đó một đường dữ liệu được kéo lên ở mức caocòn đường dữ liệu còn lại xuống thấp.Đây là trạng thái của dây trước và sau khi truyền xong gói dữ kiệu
Detached: khi không có thiết bị nào kết nối, host biết cả hai đường dữ liệu điều ở mức thấp
Attached: trạng thái mà có một trong hai dây tín hiệu đã được nối với điện trở treo lên 3.3v báo có thiết bị cắm vào bus
J state: giống idle
K state: ngược lại với J state
SE0: kết thúc trạng thái 0 Cả 2 dây tín hiệu được kéo xuống mức 0
SE1 : kết thúc trạng thái 1 Hai dây tín hiệu ỏ mức 1 Đây là trạng thái cấm không bao giờ xuất hiện trên bus
Trang 14Reset: trạng thái mà khi host bắt đầu kết nối với một thiết bị Một tín hiệu reset đựơc gởi đến bằng cách kéo 2 dây tín hiệu xuống mức thấp(SE0) trong ít nhất 10ms.
EOP : (end of pakaged state) đại loại là trạng thái SE0 cho thời gian truyền hai bit và trạng thái k state trong thời gian truyền một bit
Keep alive: trạng thái được gởi bằng EOP Trang thái này được gởi mổi 1 mili giây để giữ thiết bị không bị gián đoạn
Suspend : chế độ đình chỉ dùng để tiết kiệm năng lượng Sẽ không truyền bất
cứ gì đến thiết bị khỏang 3ms, 1 thết bị bị đình chỉ tiêu tốn khoảng 0.5mA từ bus, và có thể nhận biết được tín hiệu reset, và kết nối tiếp tục
Resume : 1 thíêt bị bị đình chỉ được đánh thức, bằng việc đảo ngược tín hiệutrong ít nhất 20ms, theo sau đó là 1 tín hiệu EOP chậm
3-Truyền thông qua bus USB
Mỗi thiết bị được cắm vào bus usb nó sẽ được host định cho 1 địa chỉ duy nhất và không có thết bị phụ nào được phép gởi tín hiệu lên bus nếu nó không được host ra lệnh Khi có 1 thiết bị được nối vào bus, host sẽ lấy thông tin từ địa chỉ 0 để biết các thông tin cơ bản về thiết bị và sau đó host sẽ gán cho thiết bị này
1 địa chỉ duy nhất, tiếp theo host sẽ lấy thêm các thông tin cụ thể hơn từ thiết bị như tên sản phẩm, nhà sản xuất, dung lượng của thiết bị, số hiệu sản phẩm… lúc này những giao tiếp hai chiều được bắt đầu
3.1 Gói dữ liệu
Dữ liệu được gởi qua lại trên bus usb theo gói Gói dữ liệu chứa 1 tín hiệu đồng bộ, 1 byte PID, 0- 1024 byte dữ liệu, 1 tín hiệu kiểm tra lỗi CRC và EOP
PID (packet identifier) là chuỗi 4 bit và chuỗi 4 bit này được lặp lại với số
bù của nó Có 17 giá trị PID khác nhau PID gởi tại điểm bắt đầu mỗi gói Có 4 dang gói : token packet, data packet, handshake packet, special packet
Trang 153.2 Các kiểu truyền chuỗi dữ liệu:
Có 4 cách truyển dữ liệu lên bus usb: truyển dữ liệu khối lớn (bulk transfer), truyển dữ liệu qua ngắt (interupt transfer), truyền dữ liệu điều khiển (control transfer) và truyền dữ liệu đẳng thời (isochronus transfer)
-Bulk transfer: được thiết kế để truyền 1 số lượng lớn dữ liệu mà không có sửa lỗi và không đảm bảo băng thông Nếu một out endpoint được định nghĩa như sử dụng bulk transfer thì host sẽ gửi dữ liêu ra sử dung out transaction Nếu một in endpoint được định nghĩa sử dụng bulk transfer thì host sẽ nhận dữ liệu in transaction Nói chung, bulk transfer được sử dụng những nơi mà không truyền
dữ liệu tốc độ thấp Kích thước tối đa của nó là từ 8 đến 64 bytes ở tốc độ full speed và 512 gói ở high speed.(bulk transfer không sử dụng ở chế độ low speed).-Interupt transfer: được thiết kế để truyền những mẫu nhỏ dữ liệu với 1 băngthông lớn, dữ liệu cần được truyền đi càng nhanh càng tốt mà không có thời gian trì hoãn Interupt transfer có thể truyền từ 1 đến 8 byte ở chế độ low speed, 1-64 byte full speed ,và lên đến 1024 byte high speed
-Isochonous transfer: phải bảo đảm về băng thông, nhưng không đảm bảo vềlỗi dữ liệu khi đến nơi Kiểu này thường được dùng trong những ứng dụng mà tốc
độ truyền thì rất quan trọng nhưng việc có hỏng hóc 1 hay 1số ít dữ liệu thì chẳng
có vấn đề gì Kiểu truyền dữ kiệu này thì có thể truyền đến 1023 byte ở chế độ
Trang 16full-speed, và 1024 với chế độ full-speed (kiểu này không hỗ trợ chế độ low speed).
-Control transfer: kiểu truyền dữ liệu 2 chiều sử dụng cả in và out endpoint Host sử dụng cấu hình ban đầu của thiết bị Kích thước tối đa của gói dữ liệu là 8 byte ở low-speed, 8-64 byte full-speed và 64 byte high-speed
3.3 ENUMERATION (Quá trình liệt kê)
Khi có 1 thiết bị usb được cắm vào, thiết bị này sẽ được nhận biết bởi host qua một quá trình được gọi là quá trình liệt kê Các bước của quá trình liệt kê:+Khi thiết bị cắm vào, host sẽ nhận biết usb, do 1 trong 2 chân tín hiệu (D+,D-) sẽ nối đến mức logic 1
+Host sẽ gửi đến usb một tín hiệu reset để có thể nhận biết trạng thái của nó,reset thiết bị về địa chỉ 0
+Host sẽ gởi 1 yêu cầu trên địa chỉ 0 tới thiết bị để tìm kích thước tối đa của gói dữ liệu bằng lệnh “get descriptor”(mô tả thiết bị)
+Thiết bị đáp ứng lại bằng cách gửi 1 phần nhỏ thông tin mô tả thiết bị.+Host gửi tín hiệu reset usb 1 lần nữa
+Host gán cho thiết bị 1 địa chỉ duy nhất, và gửi đến thiết bị một yêu cầu lậpđịa chỉ đến thiết bị Sau khi hoàn tất yêu cầu, thiết bị đựơc bổ sung địa chỉ mới
Và từ lúc này host đã có thể nhận biết các thiết bị mới hơn cắm vào bus
+Host gửi yêu cầu“get divice descritor” (mô tả thông tin thiết bị) để có thể nhận biết hoàn toàn các thông tin về thiết bị (thông tin về kiểu thiết bị, lớp thiết bị…)
+Host gửi yêu cầu về “get configuration description” (mô tả cấu hình) để biết thông tin cấu hình như yêu cầu về năng lượng, kiểu và số của những giao diện được hỗ trợ
+Host yêu cầu các thông tin thêm về mô tả thiết bị
Ban đẩu thiết bị đã được định địa chỉ tuy nhiên nó vẫn chưa thể dịnh xong cấuhình, sau khi host tập trung đủ tất cả thông tin về thiết bị, máy tính tải trình điều khiển thiết bị (device driver) bằng cách gửi cho nó yêu cầu “set configuration” (đặt cấu hình), kể từ đây thíêt bị đã được đặt cấu hình và sẵn sàng đáp ứng nhữngyêu cầu đặt biệt từ máy tính (truyền ,nhận dữ liệu )
3.4 Descriptors: mô tả
-Tất cả các usb đều có 1 sự phân cấp các mô tả cho các đặt tính khác nhau của từng thiết bị: số hiệu sản phẩm, phiên bản thiết bị, phiên bản usb mà nó hỗ trợ
Những mô tả chung nhất:
+ Mô tả thiết bị
+ Mô tả cấu hình
Trang 17+ Mô tả endpoint.
3.4.1 Mô tả thiết bị (device descriptor)
-Một thiết bị usb chỉ có 1 bản mô tả thiết bị, bởi vì nó biễu diễn cho cả thiết
bị, nó cung cấp các thông tin cơ bản như là nhà sản xuất, số hiệu sản phẩm, lớp thiết bị …
-blenght là chiều dài của bản mô tả thiết bị
-bdescritortype là loại descriptor
-bcdusb là số phiên bản cao nhất được hỗ trợ
Trang 18-bdeviceclass, bdevicesubclass và bdeviceprotocol: được gán bởi usb và được sử dụng bởi hệ thống để tìm lớp diver cho thiết bị.
-bmaxpacketsize0: kích thước tối đa của in và output cho 1 endpoint
-idvendor: id của nhà cung cấp
-idproduct: id của sản phẩm được gán bởi nhà cung cấp
-bcddivice: số phiên bản của thiết bị
3.4.2- CONFUGURATION DESCRIPTOR (mô tả cấu hình)
-Mô tả cấu hình đưa ra các thông tin về năng lượng cần có, số giao diện mà
nó hỗ trợ, có thể có nhiều hơn 1 cấu hình cho 1 thiết bị
Blenght: cho biết số byte dùng làm mô tả cấu hình
Bdescriptortype: dạng mô tả
Wtotalenght: tổng kích thước của bản mô tả (mô tả cấu hình, mô tả giao tiếp,
mô tả HID, mô tả endpoint)
Bnumberinterfac: số giao diện của cấu hình
Bconfigurationvalue: giao diện được chọn bởi host
Iconfigiration: chỉ số chỉ tới chuỗi mô tả cấu hình có thể đọc được
Bmattributes: các thông tin về nguồn điện
Bmaxpower: chỉ cho ta biết năng lượng tiêu thụ tối đa (mỗi bước là 2mA)
3.4.3- INTERFACE DESCRIPTOR(mô tả giao diện)
Mô tả giao diện chỉ rõ lớp thiết bị (device class) và số lượng endpoint mà nó
sử dụng Có thể có nhiều mô tả giao diện cho 1 thiết bị