Professional Documents
Culture Documents
LỜI CẢM ƠN
Trước tiên chúng tôi xin gửi lời cảm ơn đến các thầy, cô giáo Trường Đại Học
Công Nghệ - ĐHQGHN, bộ môn Điện Tử Viễn Thông đã nhiệt tình giảng dạy và
truyền đạt những kiến thức, kinh nghiệm quí giá trong suốt bốn năm chúng tôi học đại
học.
Tôi xin gửi lời cảm ơn sâu sắc đến PGS.TS Ngô Diên Tập, đã tận tình hướng
dẫn, cung cấp tài liệu trong suốt quá trình thực hiện đề tài này
Tôi xin gửi lời cảm ơn đến tập thể lớp K49ĐB, những người đồng hành trong
khóa học và có nhiều ý kiến đóng góp.
Một lần nữa xin gửi lời cảm ơn chân thành và sâu sắc!
1
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
MỞ ĐẦU
Có thể nói, hiện nay vi điều khiển đã rất phổ biến ở Việt Nam, và được ứng
dụng rất nhiều. Những sinh viên nghành Điện, Điện Tử , Cơ Điện Tử, Tin Học, Viễn
Thông ... hâu như ai cũng biết cách để làm việc với vi điều khiển. Ngày nay, những
tiến bộ trong công nghệ bán dẫn đã thúc đẩy sự phat triển không ngừng của nghành
công nghiệp tự động, các quá trình điều khiển tự đông hoá và điều khiển thời gian thực
đã đặt ra yêu cầu rất lớn về việc trao đổi dữ liệu giưa các hệ thống hay giữa các bộ
phân trong cùng một hệ thống.
Các mục tiêu đề ra trong luận văn:
Chương I: Sơ Lược Về Vi Điều Khiển
Chương II: Vi Điều Khiển Microchip PIC
Chương III: Vi Điều Khiển PIC 18F4550
Chương IV: Công Nghệ USB Qua Microchip 18F4550
Chương V: Chuyên Đổi Từ Thiết Bị Flash PIC 18F Sang PIC 18FXXJ
Chương VI: Đồng Hồ Báo Thức
2
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Mục lục
Mục lục 3
CHƯƠNG I ...................................................................................................................5
SƠ LƯỢC VỀ VI ĐIỀU KHIỂN..................................................................................5
1.1. Sơ Lược Về Cấu Trúc Của Vi Điều Khiển........................................................5
1.2 Một Vài Họ Vi Điều Khiển Phổ Biến:................................................................7
1.2.1 INTEL 8051...............................................................................................7
1.2.3 MOTOROLA 68HCxx..............................................................................7
1.2.4 MICROCHIP PIC 12Xxxx, 16Xxxx, 17Xxxx, 18Xxxx, DSPIC...............8
CHƯƠNG II..................................................................................................................9
VI ĐIỀU KHIỂN MICROCHIP PIC............................................................................9
2.1 Lịch Sử Phát Triển............................................................................................9
2.2 Phân Loại.........................................................................................................10
2.2.1 Họ cấp thấp (low-end)..............................................................................10
2.2.2 Họ cấp chung (Mid-range) ......................................................................10
2.2.3 Họ cấp cao (High-end) 17Cxxx...............................................................11
2.2.4 Họ cấp cao (High- performance)..............................................................12
2.3 Một Số Ưu Điểm Microchip PIC......................................................................12
CHƯƠNG III...............................................................................................................14
VI ĐIỀU KHIỂN PIC 18F4550..................................................................................14
3.1 Sơ đồ chân........................................................................................................16
3.2 Các Công Cụ Lập Trình...................................................................................20
3.3 Đơn vị ICD-U40...............................................................................................23
3.4 Tiêu Thụ Năng Lượng......................................................................................24
3.5 FIRMWARE....................................................................................................25
3.6 Các công cụ làm việc........................................................................................25
3.7 Thiết bị lớp.......................................................................................................25
3.8 Firmware HID..................................................................................................26
3.9 Một số đặc tính:................................................................................................26
3.10 Nguyên tắc hoạt động:....................................................................................26
3.11 Driver.............................................................................................................27
3.12 Mô Tả Thực Hiện Firmware Thứ Hai.............................................................29
3.13 Kết luận..........................................................................................................32
CHƯƠNG IV...............................................................................................................34
CÔNG NGHỆ USB QUA MICROCHIP 18F4550.....................................................34
4.1 Giới thiệu..........................................................................................................34
4.2 Vi xử lý 18f4550.............................................................................................34
4.3 Lắp ráp bảng phát triển.....................................................................................34
4.3 Truyền tải khởi động vào 18F4550...................................................................36
4.4 Phát triển ứng dụng trong MPLAB IDE...........................................................37
CHƯƠNG V................................................................................................................46
CHUYỂN ĐỔI TỪ THIẾT BỊ FLASH PIC18F SANG PIC18FXXJ.........................46
5.1 Chuyển đổi thiết bị...........................................................................................46
5.2 Giới thiệu..........................................................................................................46
3
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
4
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG I
5
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Các thành phần của vi điều khỉên là: CPU, RAM, ROM, các bộ đếm, bộ định
thời, các cổng vào ra, giao diện truyền thông nối tiếp, các khối chuyển đổi tương tự số
A/D và ngược lại số tương tự D/A. Khối xử lý trung tâm CPU thực hiện các chỉ thị
được lưu trong bộ nhơ chương trinh ROM để điều khiển tất cả các thành phần còn lại.
Bộ nhớ truy cập ngẫu nhiên RAM được dùng để lưu các thiết lập và các biến sử dụng
trong chương trình. Chương trình và các số liệu cố định được lưu trong ROM. Bộ nhớ
ROM của vi điều khiển sẽ trở thành phần sụn (firmware) sau khi được nạp trình. Bộ
nhớ ROM này có thể là loại ROM mặt nạ (masked ROM), với loại này chương trinh
được đưa vào ngay trong quá trình chế tạo vi mạch. Hay có thể là loại OTP ROM chỉ
cho phép nạp chương trình một lần, loại EFROM co thể ghi va xoá nhiều lần bằng tia
cực tim, ngoài ra còn loại bộ nhớ nữa là EEFROM là loại bộ nhớ không tự bay hơi có
thể được thay đổi dễ dàng bởi người lập trình.
Vi điều khiển được sử dụng rộng rãi trong các thiết bị điện tử: chúng có trong các
thiết bị viễn thông, máy văn phòng, đồ điện tử gia dụng, đồ chơi trẻ em, thiết bị giải
trí. Các thiết bị đó nói chung đều cần một cơ cấu điều khiển thông minh, có khả năng
tương tác với người sử dụng.
Chương trình cho vi điều khiển là một tập các lệnh đã được dịch thành mã máy
thường được nạp trực tiếp vào bộ nhớ ROM của vi điều khiển từ máy tinh thông
quamọt bộ nạp trình. Một phía của bộ nap được nối với cổng máy tính (COM, USB,
LPT) để nhận dữ liệu từ máy tính, phía kia đưa dữ liệu tới vi điều khiển thông qua các
chân nạp trình của vi điều khiển . Các chân này lại là các chân vào ra thông thường sau
khi vi đièu khiển đã được nạp chương trình.
Các cổng vào ra số cho các dữ liệu nhị phân di chuyển voà ra qua các chân của vi
điều khiển. Các chân này được dùng để ghép nối vi điều khiển với các thiết bị vào ra
số hay ghép nối với các bộ vi điều khiển khác để thực hiện các chức nang nào đó.
Cổng truyền thông dữ liệu nối tiếp tạo khả năng giao tiếp của hệ thống với các hệ
thống khác qua các chuẩn giao tiếp như: URAT, CAN, 12C, SPI…
Các bộ đếm dùng để tạo ra các nhịp thời gian chính xác hoặc để đếm xung.
Khối chuyển đổi A/D cho phép vi điều khiển giao tiếp với các thiết bị điện tử
tương tụ như cảm biến tương tự nhờ đó nó có thể đưa các dữ liệu tương tự vào để xử
lý và lưu trữ. Khối A/D cho phép vi điều khiển điều khiển các thiết bị không tương
thích điều khiển số.
6
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Có khối UART
38 chân vào ra
7
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Có khối UARTx
5 bộ timer 16 bit
Dung lượng bộ nhớ chương trình ROM 512 byte đến 8 Kbyte
Có khả năng định địa chỉ cho bộ nhớ ngoài ở các họ cấp cao
8
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG II
9
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
16C84 và PIC16F84. Bộ nhớ chương trình flash đã loại bỏ vai trò của vi điều khiển có
bộ nhớ xoá bằng tia cực tím, có vỏ bằng gốm đắt tiền và các đèn chiếu tia cực tím.
2.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.
Độ 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ọ:
2.2.1 Họ cấp thấp (low-end)
Gồm các loại được ký hiệu 12C5xx, 16C5x, 16C505, 16HV540
Bố chí các thanh ghi: có 32 thanh ghi trên một bank, tối đa có 4 bank
Đặc điểm chung
Rất thích hợp trong các ứ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 xoá được bằng tia cực tím.
Tốc độ cao, thực hiện được 5 triệu chỉ thị/s với tần số xung nhịp 20MHz.
Nạp trình song song, trừ PIC12C5xx và PIC16C505 được nạp trình nối
tiếp theo giao thực ICSP.
2.2.2 Họ cấp chung (Mid-range)
Bao gồm 12C6xx, 14C000, 16C55x, 16C6x, 16C62x, 16F62x, 16C67x, 16C8x,
16F87x và 16C9xx
10
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Bố chí các thanh ghi: 128 byte trên một bank, tối đa 4 bank.
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 5 triệu chỉ thị /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ộ, 12C, SPI, CAN, USB…, 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 (self-programming).
Có phần cứng gỡ rối chương trình ICD ở một số loại.
2.2.3 Họ cấp cao (High-end) 17Cxxx
Gồm các loại 17Cxxx
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 chung.
Vi điều khiển giao tiếp bus, truy nhập cac thiết bị song song trực tiếp.
Kiển trúc nâng cao, dựa trên nền tảng của họ cấp trung, theo 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.
Véctơ ngắt đơn, có thể lập trình được mức độ ưu tiên các nguồn ngắt.
Nạp trình nối tiếp, có khả năng tự ghi vào bộ nhớ chương trình.
Hiện nay mới nhất là DSPIC với nhiều tính năng vượt trội:
Kiến trúc Harvard sửa đổi, 83 lệnh đơn, với chế độ địa chỉ mềm dẻo….
2.3 Một Số Ưu Điểm Microchip PIC
Bộ nạp trình cho PIC có thể tự lắp ráp một các dễ dàng với chi phí thấp do PIC
chủ yếu nạp trình theo chuẩn ICSP (In-Circuit Siral Programming) là phương thức nạp
trình nối tiếp: các dữ liệu được nạp vào bộ nhớ chương trình thông qua 2 chân vào/ra
được gán là cổng truy nhập đến bộ nhớ chương trình trong quá trình nạp trình. Do đó
nhờ có bộ nhớ flash và nạp trình theo chuẩn ICSP mà những người nghiên cứư và sử
dụng PICđã tiết kiệm được đáng kể chi phí mua các công cụ nạp. Với bộ nhớ flash thì
thời gian nạp trình cũng được cải thiện đáng kể ( chỉ khoảng vài chục giây) so với UV
EPROM (cỡ hơn chục phút).
12
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Microchip cung cấp rất đầy đủ và chi tiết các tài liệu kỹ thuật về tất cả các loại vi
điều khiển PIC. Ngoài ra còn cung cấp phần mềm công cụ miễn phí MPLAB-IDE
được đánh giá là tốt nhất so với các công cụ phát triển tương tự của các hãng sản xuất
vi điều khiển khác (các tài liệu công cụ này được cung cấp miễn phí trên
www.microchip.com). Ngoài ra còn có rất nhiều sách viết về PIC và các trang web nói
về vi điều khiển này. Tài liệu hỗ trợ cho vi điều khiển PIC chỉ dùng sau máy tính cá
nhân PC và về doanh số bán ra thi trường hiện nay. Microchip đã đứng đầu về doanh
số bán PIC 8 bit, vượt lên trên cả các vi điều khiển của motorola.
13
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG III
Hình 1: PIC18F4550
Điểm riêng biệt của vi xử lý PIC18F4550 là nó là một trong những PIC hỗ trợ
toàn thể cho USB, nghĩa là có USB gắn trong có sẵn các chân đầu ra để nối trực tiếp
với máy tính mà không cần mạch kéo hay bất cứ mạch gắn ngoài nào khác.
14
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
15
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
không đủ yêu cầu về tốc độ cao cần thiết. Vì vậy, máy phát dao động có tốc độ 48
MHz giữa thời gian trễ do truyền tải và các ngắt khác (vòng lặp …). Không thể đạt
được tốc độ lớn hơn 200 kHz.
3.1 Sơ đồ chân
Sau đây là sơ đồ chân của PIC18F4550 trong hộp DIP-40.
Đặc biệt, có thể nhận ra chân D- và D+ từ kết nối USB (chân 23 và 24).
16
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 4: TQFP
Hình 5: QFN
17
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
AN0- I 13 kênh Input, Analog, AN6 và AN7 còn dùng cho lập
AN12 trình dữ liệu và xung clock vào.
CLKI I Lối vào của xung Clock ngoài, luôn kết hợp với chân
OSC1.
CLKO O Lối ra của bộ dao động tinh thể, nối với tinh thể hoặc
bộ cộng hưởng trong chế độ dao động thạch anh.
Giống như CKLO trong chế độ RC hoặc EC. Luôn kết
hợp với chân chức năng OSC2
COFS I/O Cổng giao tiếp chuyển đổi dữ liệu đồng bộ khung.
CSCK I/O Cổng giao tiếp chuyển đổi dữ liệu Clock vào ra nối tiếp.
CSDI I Lối vào dữ liệu nối tiếp.
CSDO O Lối ra dữ liệu nối tiếp.
EMUD I/O Cổng vào ra dữ liệu kênh truyền thông sơ cấp của ICD.
EMUC I/O Vào ra xung nhịp kênh sơ cấp.
EMUD1 I/O Vào ra dữ liệu kênh thứ cấp.
EMUC1 I/O …
EMUD2
EMUC2
18
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
EMUD3
EMUC3
I/O
SDA Vào ra Data nối tiếp đồng bộ của I2C.
SOSCO O Lối ra bộ dao động tinh thể công suất thấp 32Khz.
SOSCI I Lối vào bộ dao động 32Khz.
20
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Một bộ debug/chương trình thiết bị tổng hợp MPLAB ICD2 là bộ D/P thời gian
thực, giá rẻ có các đặc tính sau:
Giao diện USB (Toàn tốc 2Mbit/giây) và RS-232 nối tới máy host
Debug nền thời gian thực
Giao diện người dùng đồ hoạ MPLAB IDE (có bản copy miễn phí)
Mạch giám sát đoản mạch/quá tải điện thế tích hợp
Firmware cập nhật từ máy tính
Hoàn toàn gắn kèm
Hỗ trợ điện thế thấp đến 2.0 Volt (dải từ 2.0 đến 6.0)
LED chẩn đoán (Nguồn, Bận, Lỗi)
Không gian đọc/viết và miền EEDATA của vi điều khiển chính
Các bit cấu hình chương trình
Xoá không gian bộ nhớ chương trình sau khi kiểm định
Các đồng hồ ngưng ngoại vi dừng lại tại các điểm ngưng
Biểu đồ chính của kết nối với ICD2
21
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
22
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
ICD-S40 đã thay thế ICD-S20 và DCI 4 MHz. Hãy chú ý, ICD-S40 và ICD-U40
chỉ làm việc với phần mềm và không dùng MPLAB IDE CCS. ICD nguyên bản CCS 4
MHz làm việc với MPLAB IDE 5.xx.
Cần phải cấp nguồn 3V cho ICD-U40. ICD-S40 không hỗ trợ 3V. CCS cung
cấp hai giải pháp cho ICD:
3.3 Đơn vị ICD-U40
Đơn vị ICD nối với máy tính và phần mềm Debug trên USB. Nó hoạt động với
tần số xung 40 MHz nên thời gian debug nhanh hơn (có cả cáp USB). Đơn vị được cấp
nguồn ICD-U40 USB. Bộ nguồn cũng cấp nguồn 5V để nối “cầu” gần ICD trong đơn
vị (đơn vị phải được bật)
23
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Phần này dùng để kết nối với ICD của MPLAB để connector J2 có thể lập trình
lại cũng như chiếu sáng và gỡ bỏ thiết bị, với loại kết nối này thì không cần card CIP
DEMO USB FS của Microchip và có giá thành cao.
Đây là cách sử dụng ứng dụng thứ hai.
Do cổng USB có thể cấp dòng 500 mA nên phải dùng nguồn từ ngoài để cấp
nguồn. Ta dùng bộ điều chỉnh 7805 và chọn nguồn 9VDC vì đó là điện thế tối thiểu
cần để 7805 hoạt động được (và để tản nhiệt) và có thể thay bằng pin 9V nếu cần.
24
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
3.5 FIRMWARE
Thực hiện truyền thông USB
2 ví dụ được phát triển để thực hiện truyền thông qua USB:
• Cung cấp host thông tin (máy tính) cho thiết bị (vi điều khiển) và thông tin relay từ
thiết bị (vi điều khiển) cho host (máy tính).
• Quản lý các đầu vào và đầu ra số cũng như các đầu vào tương tự (bộ chuyển đổi
tương tự - số)
Thông tin truyền thông và quảng bá Web:
3.6 Các công cụ làm việc
Firmware là chương trình chạy trong CIP và điều khiển truyền thông. Nó được
viết hoàn toàn bằng C dùng MPLAB C18 của Microchip, một bộ biên dịch C của cùng
nhà sản xuất hỗ trợ chuẩn PKI ANSI C’89 và được thiết kế cùng MPLAB IDE (là
công cụ để lập trình và debug CIP). Một đặc tính khác của MPLAB C18 là khả năng
sinh ra giá trị nhị phân do vi điều khiển quản lý.
Họ PIC18F (ví dụ, PIC18F4550) dùng chỉ thị mở rộng như một kiến trúc.
Chú ý MPLAB C18 có thể download miễn phí trên trang của Microchip (xem
liên kết tham khảo). Tuy nhiên, phiên bản miễn phí (gọi là phiên bản dùng cho sinh
viên) có thời hạn sử dụng là 60 ngày. Trong 60 ngày đó, chương trình sẽ tiếp tục hoạt
động nhưng không quản lý, vì vậy bộ biên dịch sẽ sinh ra các giá trị nhị phân để tiếp
tục hoạt động nhưng sẽ tốn không gian hơn (do không được quản lý) và không dùng
các chỉ thị của PIC18F4550 phổ dụng nên cần nhiều tính năng phần mềm hơn và vì
vậy kém hiệu quả.
3.7 Thiết bị lớp
Theo chuẩn thì có nhiều loại thiết bị USB với các đặc tính khác nhau thường thấy
trong thiết bị. Ví dụ, có lớp cho camera số, một lớp cho máy scan, một cho máy in …
Các lớp thiết bị được xây dựng để nâng cao tính tương thích của các thiết bị. Vì vậy,
bất cứ hệ điều hành nào có driver làm việc với camera số đều có thể đọc được ảnh từ
camera số được thiết kế phù hợp với các thông số kỹ thuật của loại thiết bị đó.
Đặc biệt với ứng dụng của chúng ta, ta chọn sử dụng loại thiết bị HID (Thiết bị
giao diện người dùng), về cơ bản là một kết nối tương tự với chuột hay bàn phím. Lý
do ta chọn lớp này là do lượng lớn thông tin tại Microchip và kinh nghiệm có được từ
25
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
các đối tượng khác sử dụng loại driver này, ngoài ra nếu ta cần tạo một driver thì ta sẽ
dẫn đến trang này từ Microchip.
3.8 Firmware HID
Truyền thông được thực hiện qua sự hỗ trợ của firware USB HID, một nền cung
cấp yêu cầu của Microchip để thiết lập truyển thông (qua cổng USB) một cách đơn
giản.
3.9 Một số đặc tính:
Chuyên nghiệp: miễn phí, dễ sử dụng
Nhược điểm: tốc độ truyền dữ liệu nhỏ (giới hạn tới 64 kbyte/giây)
Bộ nhớ: xấp xỉ 3Kbyte
Driver của Windows: không yêu cầu
3.10 Nguyên tắc hoạt động:
Ứng dụng này là một HID cơ bản (không phải là bàn phím hay chuột và nguyên
tắc của nó như sau):
Nhận đầu ra thông báo bằng cách truyền ngắt OUT và gửi dữ liệu thông báo lại
đến lối vào host trong thông báo bằng cách truyền ngắt IN.
Nhận đầu ra thông báo nhờ truyền điều khiển (Set_ReportRequest) và thông báo
lại đầu vào host trong báo cáo nhờ truyền điều khiển (Get_ReportRequest).
Ứng dụng điều khiển bộ đệm để phân biệt các báo cáo nhận qua việc ngắt truyền
thông và báo cáo ngắt nhận qua điều khiển truyền thông.
Ứng dụng cũng điều khiển bộ đệm để phân biệt các thông báo nhận đầu vào qua
việc truyền đầu vào ngắt và các báo cáo nhận qua việc truyền điều khiển.
Nhận các báo cáo đưa đến bằng cách điều khiển truyền thông
(Set_ReportRequest) và gửi lại một báo cáo đến host trong một thông báo đưa đến nhờ
điều khiển truyền thông.
Một bộ đệm đơn giữ các bản báo cáo được lưu trữ và báo cáo nhận được đã gửi.
Việc thực hiện là sử dụng chuột thử nghiệm từ Microchip.
Project được kiểm tra trong bảng thể hiện PICDEM FS USB.
26
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
3.11 Driver
Chuẩn yêu cầu tất cả các thiết bị USB trong giai đoạn thương lượng phải được
xác định với ID nhà sản xuất và ID sản phẩm (sau đây gọi là VID và PID). Cặp giá trị
này giúp nhận biết nhà sản xuất thiết bị (PRI) và mẫu riêng của một sản phẩm được
kết nối. Vì vậy, các mẫu khác của cùng sản phẩm nói chung khác PID.
Mục đích chính của các giá trị này không chỉ là xác định thiết bị mà còn là tìm và
tải đúng driver cho nó. Vì vậy, tất cả các driver của Windows (hay các sản phẩm tương
tự) được sắp xếp như thiết bị với một hay nhiều PID và PRI sử dụng cho driver đã nói.
Đây là cách sử dụng Windows (hay hệ điều hành khác đang đề cập) dù driver được
chọn có đúng hay không.
Trong trường hợp driver dùng cho hệ điều hành khác, cặp VID/PID đủ để xác
định driver nếu cần tải và vì vậy khi một thiết bị gắn với VID/PID thì nhận biết được
hệ thống tự động tìm ra và cho phép sử dụng ngay. Tuy nhiên, nếu không nhận ra
VID/PID thì hệ điều hành sẽ hỏi người dùng cấp driver. Một ví dụ là màn hình.
Cửa sổ phát hiện phần cứng mới
Đây là phần giải thích PRI và bộ điều khiển PID về ứng dụng của chúng ta với
loại HID không cần cài đặt bất cứ driver nào (Windows tự động cập nhật).
Các công cụ dùng trong ứng dụng này được thể hiện như sau:
C18 2.30.01 +
Phiên bản yêu cầu tối thiểu: 2.30.01 +
Khuyến nghị: 2.40 +
Phiên bản này có tại http://www.microchip.com
MPLAB IDE 6.62 +
Phiên bản yêu cầu tối thiểu: 6.62 +
Khuyến nghị: 7.00 +
MPLAB (R) IDE có tại http://www.microchip.com
Bit cấu hình:
27
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Các bit cấu hình được dùng để thiết lập chế độ hoạt động của CIP (ví dụ, tần số
của bộ tạo dao động) và được thiết kế để lập trình. Các bit cấu hình do MPLAB quản
lý khi lập trình và có thể cấp cho 2 dạng:
1. Qua danh sách các bit cấu hình của MPLAB (Đặt bit cấu hình).
2. Qua các macro cùng mã dùng khai báo cấu hình thực #.
Dưới đây là hình ảnh lựa chọn các bit cấu hình của MPLAB (tuỳ chọn 1).
1. tham chiếu đến project dùng một “bộ tải khởi động”.
• Khi bạn mở ứng dụng thì luôn mở file “workspace” (*.mcw).
• Tất cả các ví dụ trong thư mục được tải qua bộ tải khởi động.
Thành phần cơ bản:
Vector reset và ngắt của bộ tải khởi động được chỉnh theo các địa chỉ 0x0800,
0x0808, 0x081.
Phần điều chỉnh liên kết với phần khởi động được sử dụng, file này là
rm18f4550.lkr và được đặt tại mỗi ứng dụng.
28
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Nếu bạn đang dùng ICD2 và không phù hợp với bộ tải khởi động thì bạn phải
điều chỉnh lại như sau:
• MPLAB đồ hoạ thay đổi liên kết rm18f4550.lkr bằng một linker chuẩn
18f4550.lkr, điều này có thể thấy được theo mặc định trong thư viện C18.
• Thay đổi đường dẫn của liên kết đến đúng vị trí để không phát sinh lỗi.
• Bạn phải xoá đi các mã theo sau:
Extern void _startup (void); / / xem c018i.c trong thư mục biên dịch C18
# Pragma _RESET_INTERRUPT_VECTOR code = 0x000800
Void _reset (void)
(
_asm Goto _startup _endasm
)
# Pragma Code
Đây là mã trong file main.c.
• Cuối cùng (tuỳ chọn) khi định hướng bit, đặt 0x30000B tắt phần ngăn viết
BOOT.
3.12 Mô Tả Thực Hiện Firmware Thứ Hai
Ứng dụng thứ hai là sự trợ giúp lớn và kinh nghiệm lớn để hiểu USB, theo sự
phát triển của ứng dụng trước đây áp dụng vào các điểm khác để phát triển và thực
hiện cho thực thi này và firmware được dùng cho các công cụ làm việc khác này, được
mô tả ở chương trước, tiếp cận đang sử dụng là mã hoạt động:
# Include <18F4455.h>
# Fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL5,
CPUDIV1, VREGEN
# Use delay (clock = 48000000)
# Define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
# Define USB_EP1_TX_SIZE 8
# Define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
29
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
# Define USB_EP1_RX_SIZE 8
# Include <pic18_usb.h>
# Include <usb_desc_hid.h>
# Include <usb.c>
Đây là phần header cần thiết để thiết lập truyền thông với DCI và có thể tạo HID
lớp ứng dụng, phần đầu usb_desc_hid.h thực hiện việc này.
Ứng dụng dùng 5 đầu vào tương tự sau đây cần cấu hình CIP để làm việc với thuỷ tinh
có tốc độ 20 MHz cho tốc độ 48 MHZ:
Setup_adc (ADC_CLOCK_INTERNAL);
Setup_adc_ports (AN0);
Set_adc_channel (0);
Phần còn lại là logic cần thiết để có thể thiết lập quan hệ giữa chúng, nhấn nút
hay nhấn nút trên máy host chỉ cần để biết tên bản ghi CIP và gửi cuộc gọi một cách
thích hợp.
Đặc tính khác được thể hiện trong mã thông báo.
Phần Mềm
Phát triển lập trình tại host được thực hiện bằng Microsoft Visual ++, logic của
chương trình, tương tự như ứng dụng trước
Sau đây là cấu trúc chương trình trong ứng dụng này:
Usb_Ej_1.dsp
File (file project) này chứ thông tin về cấp project và được dùng để xây dựng
project đơn hay project con. Người dùng ngoài có thể chia sẻ file project (.dsp) nhưng
không được xuất file khởi tạo nội bộ.
Usb_Ej_1.h
Đây là phần header của file chính cho ứng dụng. Project khác gồm có header đặc
biệt (gồm resource.h) và khai báo lớp ứng dụng Cusb_Ej_1App.
Usb_Ej_1.cpp
Đây là phần chính của mã nguồn ứng dụng gồm lớp ứng dụng Cusb_Ej_1App.
30
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Usb_Ej_1.rc
Đây là danh sách tất cả các tài nguyên của Microsoft Windows mà chương trình
sử dụng gồm có các icon, điểm ảnh, con trỏ được lưu trong thư mục con của RES. File
này có thể viết trực tiếp vào Microsoft Visual C++.
Usb_Ej_1.clw
File này chứa thông tin để ClassWizard sử dụng khi phác thảo các lớp hay thêm
lớp mới. ClassWizard cũng dùng file này để chứa thông tin cần thiết để tạo, soạn danh
sách các thông điệp, trình bày dữ liệu cho hội thoại và tạo tác vụ như thành phần
nguyên bản.
Res \ Usb_Ej_1.ico
Đây là icon của file dùng cho icon ứng dụng. Icon này có trong file tài nguyên
chính Usb_Ej_1.rc.
Res \ Usb_Ej_1.rc2
File này chứa tài nguyên không được viết bằng Microsoft Visual C++. Bạn nên
đặt tất cả các tài nguyên không được chỉnh sửa bời bảng phác thảo tài nguyên vào file
này.
UsbHidApi.lib
File này cung cấp thông báo về chương trình với DLL cùng tên.
Kết quả
Giao diện được phát triển hỗ trợ truyền thông USB điều khiển ba kiểu truyền dữ
liệu là: đầu ra số, đầu vào số và đầu vào tương tự - số.
31
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 11: Giao diện được phát triển hỗ trợ truyền thông USB
3.13 Kết luận
Project được thực hiện qua bắt ngoặt lớn khi chúng ta kiểm soát do điều này chưa
được biết đến.
Khi phát triển project có thể thấy rằng có nhiều cách truyền thông bằng bus hơi
phức tạp do nó gồm nhiều giao thức. Việc truyền thông này không được thực hiện theo
hướng như trường hợp cổng song song hay cổng nối tiếp mà dùng driver để truy nhập
vào.
Có thể có vô hạn driver này do có thể tạo ra các driver riêng giống nhau, vấn đề
là độ phức tạp của thuật toán được phát triên. Trong trường hợp project của ta, ta chọn
sử dụng DLL “UsbHidApi” là phần mềm thương mại, file này khiến mạch máy tính
phát hiện ra dạng của HID (Thiết bị giao diện người dùng), tương tự với chuột,
joystick, bàn phím …
32
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Những phát triển của project này đã mở ra cánh cửa để sử dụng tốt loại bus này,
được coi là bảng bus. Dựa trên ứng dụng này qua PIC, có thể thực hiện được rất nhiều
ứng dụng hay trong công việc khi bất cứ thiết bị được phát triển nào có thể được giám
sát và điều khiển qua bus này.
Chú trọng đến vi điều khiển PIC là vi điều khiển phổ biến nhất hiện nay cho các
ứng dụng đó, các chức năng luồng cần cho truyền thông với bus USB và chuyển đổi
nội dung tương tự - số cho thiết bị.
Nguồn thông tin.
Internet
Diễn đàn thảo luận.
Hướng dẫn lập trình ngôn ngữ Visual C++.
Trang web (www.microchip.com).
Khuyến nghị.
Bước thực hiện để nghiên cứu và hiểu được bus này là quan trọng và giải đáp
những câu hỏi cơ bản khiến cho công việc nghiên cứu rõ ràng hơn.
Nên mua thiết bị ghi PIC như yêu cầu để phát triển thêm ứng dụng và hiểu bus
USB.
33
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG IV
34
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
36
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
PC sẽ kêu “beep” chỉ thị rằng 18f4550 bây giờ đã có trong ứng dụng
PDFSUSB.EXE. Trong Device Manager, thiết bị sẽ xuất hiện dưới Other Devices –
PIC 18F4550 Family Device.
Trở lại bước 2.
Mã biên dịch bây giờ có thể đownloa vào 18f4550 nhờ các thao tác trong ứng
dụng PDFSUSB.EXE sau:
Tải file Hex.
Lập trình thiết bị.
Thực hiện.
PC sẽ kêu “beep” chỉ thị 18f4550 bây giờ đang hoạt động và không ở chế độ tải
khởi động nữa.
Nhấn S1 để nó tự khởi động lại ứng dụng được nạp vào 18f4550. Ngay cả khi
ứng dụng Demo Tool đang chạy ở chế độ tải khởi động thì một lần reset bảng đơn giản
(nhấn S1) sẽ không làm bảng tự vào chế độ tải khởi động.
Nếu đây là lần đầu tiên bạn sử dụng tải khởi động thì máy tính sẽ không nhận
firmware tải khởi động, vì vậy bạn phải cài driver (chỉ cần một lần). Khi Windows
thông báo “Found New Hardware”, click “No, not this time” rồi chọn “Install from
list”. Rồi click vào “Browse …” và chọn thư mục “C:\MCHPFSUSB\Pc\MCHPUSB
Driver\Release” rồi “Next”, “Continue Anyway” và “Finish”.
4.4 Phát triển ứng dụng trong MPLAB IDE
Các bước sau để tạo ra một ứng dụng mới cho 18f4550 dùng chế độ tải khởi
động để download cho thiết bị.
Mở MPLAB IDE
Từ thực đơn MPLAB Project, chọn Project Wizard.
Click “Next”.
Chọn thiết bị (PIC18F4550).
Chỉnh lại Active Toolsuite là “Microchip C18 Toolsuite”.
Tạo một file project mới. Tạo một thư mục mới cho project
(C:\MCHPFSUSB\fw\MyPro1). Đặt tên cho project (ví dụ MyPro1).
37
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Designation
PIC18F4550-
IC PIC MCU FLASH 16KX16
I/P-ND (Digi- 1 9.73 9.73 P1
40DIP
Key)
478-4278-1-ND
CAP CER .10UF 50V DISC RAD 2 0.20 0.40 C1, C5
(Digi-Key)
40
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Total 26.95
số lượng.
41
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Nếu bạn dùng bộ lắp ráp USB B Female thì các chân phải nối như sau:
42
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
1 VCC Đỏ +5VDC
2 D- Trắng Dữ liệu -
3 D+ Xanh Dữ liệu +
Vdd
Ground, GND,
Capacitor
Resistor
LED
Crystal
43
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Phụ lục F
Tổng quan về các cổng vào/ra trên PIC18F4550
Other
Port Traits
Functions
44
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
45
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG V
46
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
47
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 15: Kết nối bên trong cho đăc trưng mã đếm thiết bị
Trong thiết bị có ít chân hơn, ví dụ PIC18F45J10 (xem hình 17), ký tự “F” trong
tên thiết bị (ví dụ PIC18F45J10) cho biết bộ điều chỉnh điện thế gắn trong luôn nối với
VDD và luôn bật. Ký tự “LF” (ví dụ PIC18LF45J10) cho biết bộ điều chỉnh điện thế
luôn nối đất và luôn tắt.
Hình:16: Kết nối giao diện cho mã đếm “F” và “LF” của thiết bị
Chân VDDCORE/VCAP có hai chức năng. Khi bộ điều chỉnh tắt, nếu ENVREG nằm
trên thiết bị nhiều chân và thiết bị ít chân có ký tự “LF” thì V DDCORE cấp nguồn cho
thành phần số chính của thiết bị. Như vậy sẽ giảm dòng tiêu thụ của các phần khác
bằng cách loại bỏ dòng thụ động của bộ điều chỉnh điện thế, là nơi tiêu tốn năng lượng
nhất khi ở chế độ Idle hay Sleep. Ở chế độ này, năng lượng phải cấp cho cả chân
VDDCORE và chân VDD. Cách cấu hình thông thường là nối VDDCORE với VDD và cấp nguồn
từ 2,0V đến 2,7V. Cũng có thể lấy năng lượng từ nguồn riêng cho VDDCORE (2,0V đến
2,7V) và VDD (VDDCORE đến 3.6V). Như vậy cho phép thành phần chính hoạt động với
48
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
mức điện thế thấp hơn trong khi các chân vào/ra và các cổng ngoại vi hoạt động với
mức điện thế cao hơn. Khi hoạt động ở chế độ này, nhất thiết phải giữ cho VDDCORE
không vượt quá VDD kể cả khi bắt đầu.
Khi bộ điều chỉnh điện thế được bật, do ENVREG được nối với VDD ở thiết bị
nhiều chân và thiết bị ít chân với ký tự “F”, một tụ điện trở kháng chuỗi tương đương
(ESR) thấp sẽ nối vào chân VCAP để ổn định đầu ra từ bộ điều chỉnh điện thế gắn trong.
Trong chế độ này, thiết bị phải được cấp nguồn từ 2.7V đến 3.6V trên VDD. Khi bộ
điều chỉnh bị ngắt, VDDCORE phải được cấp nguồn từ 2.0V đến 2.7V để cấp năn lượng
cho thành phần chính của thiết bị.
Hình 17: Cấu hình nguồn điển hình cho thiết bị flash PIC18FXXJ nhiều chân
Hình 18: Cấu hình nguồn điển hình cho thiết bị flash PIC18FXXJ it chân
49
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 18 thể hiện cấu hình năng lượng thông dụng cho thiết bị PIC18FXXJ Flash
nhiều chân. Hình 4 thể hiện cấu hình năng lượng thông dụng cho thiết bị PIC18FXXJ
Flash ít chân.
5.3 Reset Brown-out (BOR)
Thiết bị PIC18FXXJ Flash có module BOR là một phần của bộ điều chỉnh điện
thế gắn trong. Khi đầu ra của bộ điều chỉnh hạ xuống dưới mức điện thế chính tối thiểu
thì thiết bị sẽ rơi vào trạng thái BOR. Do module BOR có trong bộ điều chỉnh điện thế
nên thiết bị với bộ điều chỉnh điện thế bị ngắt (thiết bị nhiều chân với ENVREG nối
đất và tất cả các thiết bị ít chân với ký tự “LF”) sẽ ngắt module BOR.
Điểm khác biệt với thiết bị PIC18 Flash trước, do module BOR khả trình có thể
được chọn là bật hay ngắt, nằm ở từ cấu hình hay thanh ghi điều khiển, và có thể được
cấu hình với mức điện thế nhất định mà tại đó Reset hoạt động. Các thiết bị này đòi
hỏi có BOR khả trình vì chúng cần giảm tần số hoạt động khi điện thế giảm; vì vậy,
BOR khả trình cho phép người dùng đảm bảo rằng các thông số kỹ thuật không bị ảnh
hưởng khi điện thế hệ thống giảm. Trái lại, với thiết bị PIC18FXXJ Flash, với bộ điều
chỉnh điện thế bật, chỉ cần BOR đơn mức vì chúng có thể hoạt động toàn tốc với điện
thế hoạt động tối thiểu. Chức năng BOR trong thiết bị PIC18FXXJ Flash có trong bộ
điều chỉnh điện thế và không hoạt động nếu bộ điều chỉnh bị ngắt.
5.4 XUNG
Tần số xung nhịp cao khi điện thế thấp hơn, thiết bị “LF” và “F”
Dù họ thiết bị PIC18FXXJ Flash có dải điện thế hoạt động hẹp, chúng vẫn có thể
cung cấp được nhiều MIPS/V hơn thiết bị PIC18 Flash trước. Các thiết bị này có thể
chạy với tốc độ 40 MHz (10 MIPS) khi hoạt động ở 2.25 V. Tính mềm dẻo hoạt động
tăng cường này cho phép người dùng khai thác toàn bộ năng lượng và tốc độ của thiết
bị trong dải điện thế rộng hơn.
Hình 20 thể hiện quan hệ giữa VDD và tần số hoạt động của thiết bị với bộ điều
chỉnh được bật (thiết bị nhiều chân với ENVREG nối với VDD và thiết bị ít chân với ký
tự “F”). Hình 6 thể hiện quan hệ giữa VDD, VDDCORE và tần số hoạt động của thiết bị với
bộ điều chỉnh điện thế bị ngắt. Chú ý VDD nối với VDDCORE nên điện thế hoạt động tối
đa là 2.75V.
50
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 19: VDD theo tần số hoạt động ( bộ điều chỉnh đã bật)
Hình 20: VDD theo tần số hoạt động ( bộ điềo chỉnh đã tắt)
5.5Tuỳ chọn dao động ký
Tuỳ chọn dao động ký cho thiết bị PIC18FXXJ Flash là EC, ECPLL, HS,
HSPLL và dao động ký gắn trong 31 kHz. Thiết bị PIC18FXXJ Flash không có tuỳ
chọn XT và LP thường có trong thiết bị PIC18 Flash. Chế độ RC có trong một số thiết
bị PIC18FXXJ Flash. Hãy xem data sheet để rõ hơn về thiết bị riêng.
5.6 Đồng hồ đo năng lượng
Trong thiết bị PIC18FXXJ Flash, đồng hồ đo năng lượng được bật. Ở thiết bị
trước, có tuỳ chọn bật hay tắt ở phần thiết lập cấu hình.
5.7 Độ trễ khởi động/reset
Do trong thiết bị PIC18FXXJ Flash, đồng hồ đo năng lượng luôn bật nên thời
gian khởi động các thiết bị này lâu hơn so với các phần PIC18 Flash. Cũng có độ trễ
cộng thêm vào cho thiết bị PIC18FXXJ Flash sau mỗi lần reset để copy từ cấu hình từ
bộ nhớ chương trình vào thanh ghi cấu hình. Trong thời gian trễ, dao động ký RC gắn
51
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
trong đóng vai trò nguồn thiết bị. Sau khi thanh ghi cấu hình được nạp, thiết bị chuyển
sang xung đặc biệt nhờ các bit cấu hình FOSC. Xem “Từ cấu hình” để biết thêm chi
tiết.
5.8 Sự khác Biệt Về Chân
Chân dung sai 5 Volt
Dù các thiết bị PIC18FXXJ Flash có VDD tối đa 3.6V nhưng các chân vào/ra với
tính năng số chỉ chịu được tối đa 5V. Các chân được ghép kênh với đặc tính tương tự
có dung sai không phải là 5V và không giới hạn, gồm:
Dùng bit thanh ghi TRIS cho chân đó để cho phép chân đó nâng lên 5V hay
hạ xuống mức đất.
Khi dùng một điện trở kéo trên chân cổng, khả năng kết nối giữa hai thiết bị cần
được xem xét để quyết định tỷ lệ tăng/giảm của tín hiệu trên chân cổng và giá trị chính
xác của điện trở cho ứng dụng. Ta có Phương trình 1 sau:
Phương trình 1:
Thời gian tăng/giảm = t ln(PVDD/(PVDD - TVIH))
trong đó:
t = RCt, TVIH = điện thế đầu vào mức cao của thiết bị nhận và PV DD là điện thế
mà điện trở kéo lên.
Ví dụ, như trình bày ở mạch trong Hình 7, PV DD là điện thế mà điện trở kéo lên.
Nếu R = 1kOhm, Ct = 10 pF và PVDD = 5V thì thời gian từ khi thiết bị PIC18FXXJ
52
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Flash mở đường (cho phép điện trở kéo đường lên mức cao) đến khi thiết bị A phát
hiện ra thay đổi như Phương trình 2:
Phương trình 2:
tln(PVDD/(PVDD - TVIH)) = (1K)(10 pF)ln(5V/5V*(.8*5V)) = 16 ns
Hình 21: Nối thiết bị với một điện trở kéo đẩy
Khi thiết bị PIC18FXXJ Flash có đường nối đất thì giá trị R được dùng để tính
toán t là điện trở chuỗi của phần đầu ra cộng thêm trở kháng đường. Thời gian tính
thêm do đường thường được lược đi khi so sánh với thời gian giảm xuống của đầu ra
cổng (Tiof). Xem phần đặc tính AC trong data sheet về thiết bị để biết giá trị của Tiof.
5.9 Điện trở kéo gắn trong
Để chân số trên thiết bị PIC18FXXJ Flash chịu được 5V, cần có một bộ dịch
mức. Điện trở kéo gắn trong trên chân cổng không thể kéo các chân theo tất cả các
đường lên VDD được; chúng bị giới hạn bởi VDD trừ đi ngưỡng giảm của bộ dịch hay
Vtn. Thông tin chuyên biệt thêm về các giới hạn kéo đầu ra được nói đến trong phần
các đặc tính điện của data sheet về thiết bị.
5.10 Tỷ lệ dòng trên các chân vào/ra
Một điểm đáng xem xét khi chuyển sang phần PIC18FXXJ Flash là khả năng lưu
điện của chân cổng. Trong nhiều phần PIC18 Flash, tất cả các cổng đều có khả năng
lưu 25 mA một chân. Ở thiết bị PIC18FXXJ Flash, các cổng nhất định, thường là
PORTB và PORTC, lưu được dòng 25 mA một chân. Các cổng khác có khả năng lưu
53
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
được 8 mA hoặc 2 mA một chân. Người dùng nên thường xuyên đọc data sheet về
thiết bị để xem thông tin lưu điện của họ thiết bị PIC18FXXJ Flash.
5.11 VCAP/VDDCORE và ENVREG
Thiết bị PIC18FXXJ Flash có các chân mới: VCAP/VDDCORE trên tất cả các thiết bị
và ENVREG trên các thiết bị có từ 44 chân trở lên. Mỗi chân này thay cho một trong
các chân cổng tương đương trong thiết bị PIC18 Flash. Xem phần “Bộ điều chỉnh điện
thế, VDDCORE/VCAP, thiết bị “LF” và “F”, mức VDD” để biết thêm thông tin về việc sử
dụng các chân này và hiệu ứng của chúng trong chức năng thiết bị
5.12 Bộ Nhớ Chương Trình
5.12.1 ID thiết bị
Ở các thiết bị PIC18FXXJ Flash ít chân, các phần ký hiệu “F” và “LF” có các ID
thiết bị khác nhau. Trong thiết bị PIC18 Flash, phần “F” và “LF” có cùng ID thiết bị.
Xem “Thiết lập chính xác chương trình thiết bị và công cụ phần mềm” để biết thêm
thông tin về cách thay đổi chương trình và sử dụng công cụ.
5.12.2 Từ cấu hình
Trong thiết bị PIC18 Flash, từ cấu hình được đặt ở đầu địa chỉ 300000h. Địa chỉ
này nằm trong không gian bộ nhớ chương trình người dùng thường xuyên (xem Hình 8
làm ví dụ).
Trong thiết bị PIC18FXXJ Flash, từ cấu hình được đặt ở cuối không gian bộ nhớ
người dùng (xem Hình 21). Các giá trị này được copy mỗi lần reset từ vị trí bộ nhớ
chương trình vào thanh ghi cấu hình. Khi copy xong, cơ chế ghi vào thanh ghi cấu
hình bị ngắt.
Nếu bất cứ bit cấu hình nào thay đổi trong bộ nhớ chương trình trong lúc hoạt
động, chúng sẽ không ảnh hưởng đến khi thiết bị được reset. Sau khi thiết bị được
reset, từ cấu hình sẽ được copy lại vào thanh ghi cấu hình.
54
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
55
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
phục lại. Ứng dụng buộc reset cần phải có trước khi thiết bị có thể tổng hợp hoạt động
ở chế độ hoạt động khôi phục lại.
5.12.3 Các chu trình ghi
Thiết bị PIC18FXXJ Flash có tốc độ chu trình ghi thông thường thấp hơn Flash
cải tiến thường dùng trong đa phần các thiết bị PIC18 Flash. Hãy xem data sheet về
thiết bị PIC18FXXJ Flash để biết thêm về số chu trình ghi thông thường của thiết bị
đó.
5.12.4 Khả năng ghi nhớ đặc tính
Thiết bị PIC18FXXJ Flash có khả năng ghi nhớ đặc tính yếu hơn so với Flash cải
tiến dùng trong nhiều thiết bị PIC18 Flash. Giá trị tối thiểu và thông dụng để ghi nhớ
đặc tính được ghi trong data sheet về thiết bị của họ thiết bị PIC18FXXJ Flash.
5.12.5Mô phỏng tự ghi và EEPROM
Khi chuyển sang ứng dụng tự ghi sang thiết bị PIC18FXXJ Flash, phải xem xét
một số vấn đề. Vấn đề đầu tiên là thiết bị PIC18FXXJ Flash có khối xoá lớn hơn đa
phần thiết bị PIC18 Flash. Việc tăng bản ghi cũng đòi hỏi khôi phục lại toàn bộ khối
sau khi xoá.
Một vấn đề khác là không như các thiết bị PIC18 Flash, mỗi khối ghi chỉ có thể
ghi một lần giữa các chu trình xoá. Điều này nghĩa là nếu một ứng dụng muốn thay đổi
một bit của bộ nhớ chương trình về 0 thì nó cần phải đệm toàn bộ khối xoá, xoá bộ
nhớ và ghi lại toàn bộ bộ nhớ với bit đã thay đổi. Nhiều thiết bị PIC18 Flash cho phép
ghi nhiều bản cho một khối giữa các lần xoá, cho phép ứng dụng chỉ copy khối cần
thay đổi, xoá một bit đó rồi ghi lại bộ nhớ. Việc xoá bắt buộc, yêu cầu tăng bộ đệm và
giảm số chu trình xoá trong thiết bị PIC18FXXJ Flash làm cho việc mô phỏng
EEPROM khó khăn hơn.
Trong thiết bị PIC18FXXJ Flash, thanh ghi giữ để tự ghi không tự reset thành
FFh sau khi ghi xong. Chúng giữ giá trị từ khối lập trình cuối cùng. Điều này được
dùng vào các ứng dụng có thể ghi toàn bộ khối vào bộ nhớ và giữ phần dữ liệu còn lại
là FFh. Để đảm bảo các byte còn lại chuyển thành FFh thì ứng dụng cần thực hiện chỉ
thị TBLWT cho các byte còn lại trong khối với giá trị FFh.
57
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Bất cứ ứng dụng nào tự ghi hay mô phỏng EEPROM trên thiết bị Flash
PIC18FXXJ phải biết số chu trình ghi thông thường của thiết bị đó (xem “Chu trình
ghi” để biết thêm chi tiết).
Vấn đề đặc biệt phải thực hiện với các ứng dụng có chức năng tự ghi trong khối
xoá cuối cùng của không gian bộ nhớ người dùng. Xem “Từ cấu hình” để biết thêm
chi tiết.
5.12.6 Bảo vệ mã
Bảo vệ mã trong thiết bị PIC18FXXJ Flash được thực hiện như một khối đơn.
Toàn bộ bộ nhớ được bảo vệ bởi một bit cấu hình. Giống như (các) bit bảo vệ mã ở
thiết bị trước, bit này không cho ghi và đọc từ ngoài tại module lập trình nối tiếp in-
circuit. Tuy nhiên, bit bảo vệ mã không giới hạn chức năng đọc và ghi bảng trong mã
ứng dụng.
5.12.7 Vào chế độ lập trình
Phương thức vào chế độ lập trình của thiết bị PIC18FXXJ Flash đã thay đổi.
Trước đây, thiết bị PIC18 Flash dựa vào nguồn 12V trên VPP/MCLR để vào chế độ lập
trình qua chế độ lập trình điện thế cao hoặc tín hiệu mức cao trên PGM để vào chế độ
lập trình nguồn đơn khi bit cấu hình được đặt chính xác. Ở thiết bị PIC18FXXJ Flash,
vào chế độ lập trình bằng cách trước hết nâng và sau đó hạ đường reset xuống. Khi
reset xong, một chuỗi được truyền nối tiếp vào các chân lập trình để vào chế độ lập
trình. Cuối cùng, đường MCLR được đặt lại mức cao để bắt đầu lập trình.
HÌnh 24 trình bày ví dụ vào chế độ lập trình trên thiết bị PIC18FXXJ Flash. Xem
thông số kỹ thuật lập trình thiết bị để biết thông tin về yêu cầu thời gian và thiết bị
riêng.
Hình 24: Vào chế độ lập trình/ thay đổi của thiết bị flash PIC18FXXJ
58
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
5.13 Thiết Lập Chính Xác Cho Chương Trình Thiết Bị Và Công Cụ Phần Mềm
Phải chú ý khi dùng bất cứ công cụ lập trình nào cho thiết bị PIC18FXXJ Flash.
Thiết bị PIC18FXXJ Flash không thể hoạt động ở 12V trên Vpp/MCLR thường sử
dụng để vào thiết bị trong chế độ lập trình. Trước khi nối thiết bị PIC18FXXJ Flash
với bảng thể hiện hay cài nó vào một socket lập trình:
1. Xác nhận rằng bảng sẽ đưa ra mức điện thế chính xác.
2. Xác nhận rằng chân VDDCORE/VCAP được cấu hình đúng như đã được mô tả
trước trong phần “Bộ điều chỉnh điện thế, VDDCORE/VCAP, thiết bị “LF” và
“F”, mức VDD”.
3. Xác nhận rằng chương trình và MPLAB IDE đều chọn thiết bị chính xác.
Nối chương trình với máy tính và kiểm tra chương trình đã được bạt và kích hoạt
đúng thiết bị trước khi nối chương trình với bảng hay cài một phần vào chương trình.
Không thực hiện được điều này có thể làm hỏng phần đó.
Để chọn đúng thiết bị, vào tuỳ chọn thực đơn “Configure” trong MPLAB IDE rồi
chọn tuỳ chọn “Select Device”. Từ thực đơn này, chọn thiết bị chính xác .
Chú ý: Với thiết bị PIC18FXXJ Flash ít chân, các phần ký hiệu “F” và “LF” sẽ
đợc liệt kê riêng biệt trong hộp thoại “Select Device”. Điểm này khác biệt với thiết bị
PIC18 Flash, chỉ có phần ký hiệu “F” được liệt kê trong hộp thoại “Select Device”.
Hình 26: Mở rộng đến các chân đến thêm vào bit chuẩn hóa A/D
5.15 TỔNG KẾT
Thiết bị PIC18FXXJ Flash cho nhà thiết kế hệ thống nhiều tuỳ chọn và tính linh hoạt
cao hơn để thoả mãn các nhu cầu về vi điều khiển của họ. Những khác biệt chính trong tài
liệu này giúp phân biệt thiết bị PIC18FXXJ Flash với thiết bị PIC18 Flash, cho phép nhà thiết
kế chọn đúng thiết bị cho ứng dụng của mình. Nhà thiết kế nên xem xét những điểm khác biệt
khi thiết kế và phát triển sản phẩm.
60
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG VI
61
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
62
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
63
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
64
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
65
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.3 USB
PIC18F4550 có phần hỗ trợ tích hợp cho USB 2.0, nghĩa là có bộ nhớ tích hợp và
khả năng hoạt động không đồng bộ để truyền/lấy dữ liệu qua các đường truyền dữ liệ
USB được D+ và D- được chỉ định. Microchip cung cấp firmware cho nhiều thiết lập
USB gọi là lớp Thiết bị Giao diện Người dùng và Thiết bị Truyền thông. Firmware lớp
Thiết bị Truyền thông được dùng với chức năng cần thiết để cấu hình và tải dữ liệu
qua máy tính vào đồng hồ báo thức. Firmware được cung cấp kèm theo PIC18F4550
bán cùng bộ sản phẩm demo Microchip, vì vậy ta bỏ đi nhiều mã để firmware hoạt
động theo đúng như thiết lập. Firmware CDC do Microchip cung cấp làm việc với
driver USB trên máy host qua cổng COM chuẩn, mô phỏng đến chương trình ứng
dụng. Microsoft tích hợp driver này trên Windows XP nên khó khăn duy nhất là file
.INF chứa ID nhà sản xuất và ID sản phẩm của đồng hồ báo thức đã được cài đặt để
máy tính biết sử dụng driver USB/nối tiếp khi cắm thiết bị vào. Lập trình thiết bị tương
đối đơn giản, dùng gói Javacomm do Sun cung cấp cho kết nối nối tiếp trong Java. Ta
chọn kết nối USB do sự phổ biến của USB trong lĩnh vực tin học hiện nay và khả năng
truyền dữ liệu tốc độ cao, cho phép người dùng chon và tải âm báo thức MP3 mới dễ
dàng và nhanh. Theo vấn đề về thời gian và độ phức tạp, dùng driver chuyên biệt, đầy
đủ cho Windows XP không dễ dàng và ta chọn thay bằng mô phỏng USB/nối tiếp.
Nhược điểm là tốc độ truyền ta dùng không tương đương với USB nhưng ưu điểm là
thực dùng USB và tiếp tục phát triển là khả thi trong một giờ hai đợt, một khung thời
gian định kỳ.
6.4 Lập trình PIC
Vi điều khiển PIC thực hiện một số tác vụ bao gồm theo dõi ngày tháng và thời
gian thực, điều khiển vào/ra từ kết nối USB và giao tiếp với phần cứng thiết bị
Compact Flash bộ mã hoá MP3. Để tất cả các hoạt động chạy một cách trơn tru thì đòi
hỏi phải chia chức năng mà các tác vụ đó yêu cầu thành các phần nhỏ để có thể thực
hiện tuần tự bằng một vòng lặp chính, do đó cho phép tất cả các tác vụ lấy thời gian bộ
xử lý theo định kỳ.
6.4.1 Đồng hồ
Để theo dõi ngày tháng và thời gian thực, PIC dùng đồng hồ gắn trong dò theo
luồng để điều khiển một ngắt có nhiệm vụ tăng giá trị ngày tháng/thời gian một cách
chính xác. Ngoài ra, khi ngắt thấy bắt đầu một phút mới, nó kiểm tra báo thức xem có
66
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
cần kích hoạt chưa. Nếu có, một cờ được đặt để lần sau qua vòng lặp, chức năng hỏi
vòng để kiểm tra cờ kích hoạt báo thức sẽ cho chạy âm báo thức chính xác.
6.4.2 USB
Tác vụ USB dùng thành phần trạng thái để cho phép lưu lại đúng trạng thái của
nó trong khi các tác vụ khác vẫn chạy. Ví dụ, đặt ngày tháng/thời gian hiện tại yêu cầu
gửi lệnh “set” từ máy tính đến đồng hồ báo thức, để thành phần trạng thái USB vào
trạng thái chờ lệnh “clk”, rồi lại thay đổi trạng thái để chờ một số nhất định các byte
chứa dữ liệu thời gian/ngày tháng.
Bộ mã hoá MP3 Compact Flash
Compact Flash có bộ điều khiển gắn trên mạch nên dễ dàng gửi lệnh mới để thực
thi độc lập với PIC. Vì vậy, trong vòng lặp chính, nếu báo thức được điều khiển và vì
vậy âm báo thức được bật thì khi chức năng chạy được gọi từ vòng lặp chính xác định
Compact Flash cần nhiều dữ liệu hơn, nó phát lệnh đọc để ngăn lại trong khi CF đọc,
vì vậy cho phép tác vụ chạy nhanh chóng kết thúc hoạt động liên tiếp, lặp lại. Bộ mã
hoá MP3 đòi hỏi dữ liệu phải được gửi vào nối tiếp để hoạt động được chia nhỏ ra để
gửi dữ liệu thành các gói nhỏ.
6.5 Sử dụng Compact Flash
Ta chọn sử dụng card Compact Flash (CF) để lưu trữ dữ liệu MP3. Lý do chính
cho lựa chọn này là card CF có bộ điều khiển riêng gắn cùng để khi kết nối chỉ cần gửi
lệnh và chờ thực hiện. Ta chọn kết nối với card CF dùng chế độ Common Memory
làm việc với giao diện dữ liệu 8 bit và vì vậy ta có thể lưu trên các chân của vi điều
khiển PIC. Ta dùng bảng ngắt CF có sẵn trong trang SparkFun.com.
Dữ liệu trên card CF được lưu trữ trên các sector 512 byte và tất cả các sector
phải được viết thành khối kích thước 512 byte. Để kết nối với card CF, ta dùng 3
đường địa chỉ để truy cập vào 8 thanh ghi. Các thanh ghi này được dùng để tải thông
tin địa chỉ và gửi lệnh đọc và viết. Ta cũng có thể tận dụng nhiều đường điều khiển,
việc này chỉ tận dụng được những đường quan trọng nhất gồm Reset, Ready, Write
Enable và Output Enable. Reset thì dễ hiểu, Ready là tín hiệu từ card để báo hiệu khi
bận, Write Enable viết vào thanh ghi địa chỉ và Output Enable đọc từ thanh ghi địa chỉ.
Khi bật đồng hồ báo thức, card CF được reset và sẵn sàng nhận chấp nhận tín hiệu. Có
mã cung cấp để gọi nhiều chức năng và thực hiện những tác vụ phức tạp nhưng mã
thực sự dùng trong thiết bị khá đơn giản. Khi cần chơi một bài hát thì sector đầu tiên
67
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
sẽ được tải vào các thanh ghi CF bằng lệnh CF_StartSectorRead(), nó cũng tải thanh
ghi điều khiển bằng lệnh read. Sau đó sector đầu tiên được copy từ card vào bộ đệm
trên PIC, việc này thực hiện bằng cách đọc thanh ghi 0 và cho phép đầu ra xuống mức
thấp rồi nâng lên mức cao để đọc lần lượt 512 byte. Để sector kế tiếp sẵn sàng khi cần
thiết, lệnh CF_StartSectorRead() được gọi lại để tải trước. Chức năng gửi MP3 đến
chip STA013 cũng kiểm tra hết file sau khi tải một sector mới, việc này được thực
hiện bằng cách kiểm tra một sector mà tất cả các byte có giá trị 0xFF. Khi viết số bài
hát, trước tiên phải xác định sector bắt đầu. Sau đó, các byte được viết vào sector và
mỗi lần sector lấp đầy, bộ đệm được viết vào card và nó lại được lấp đầy lại. Khi cả
bài hát đã được viết, phần còn lại của sector đó được lấp với giá trị 0xFF và được viết,
sau đó công việc cũng được thực hiện tương tự trong sector kế tiếp để có ít nhất một
sector đầy giá trị 0xFF khi kết thúc bài hát.
Nhìn chung, giao diện CF rất cơ bản và dễ sử dụng. Quản lý dữ liệu trên một bộ
đệm kích thước sector trên PIC và viết hay đọc vào card CF khiến cho việc truy cập và
viết dữ liệu rất dễ dàng.
6.6 Chip bộ mã hoá MP3
Ta chọn STA013 để mã hoá MP3, thực sự thì có những phiên bản mới hơn của
chip này phổ biến hơn nhưng ta không nói đến ở đây. Chip này được chọn vì dễ sử
dụng, tất cả những việc cần làm chỉ đơn giản là gửi vào một file và nó sẽ quyết định
tốc độ bit và các thông tin khác rồi mã hoá phần dữ liệu. Chip có sắn bộ đệm trong và
nâng tín hiệu lên mức cao để báo hiệu cho PIC biết nó có thể nhận dữ liệu. Điều này
không cần nhiều điều kiện cho việc báo hiệu thời gian chính xác từ PIC, chỉ cần giữ
đầy bộ đệm nếu có thể.
68
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
69
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
được gửi cho mỗi bit. Dữ liệu được gửi từng byte một đến khi đường yêu cầu dữ liệu
của chip xuống mức thấp để báo hiệu bộ đệm đã đầy.
Việc khó nhất khi sử dụng chip là thiết lập mạch khởi tạo cho nó và chỉnh tín
hiệu 5V sang 3V do STA013 là chip 3V trong khi PIC của ta là 5V. Mạch khởi tạo có
trong sơ đồ, hiệu điện thế có thể điều chỉnh bằng nhiều cách.
Đầu tiên, có một mạch đơn giản gồm điện trở và tụ điện giữa PIC và STA013, nó
giảm điện thế xuống đủ thấp để điện thế không làm hỏng chip STA013. Khó nhất là
đường dữ liệu bus I2C. Cần thực hiện cả hai việc để bộ chia giữa các chip không hoạt
động. Lẽ ra phải dùng thành phần kéo 3V và PIC chỉnh tín hiệu thành High-Z đến khi
nó hạ tín hiệu thấp xuống điểm không mà chân và điện trở kéo có sụt điện thế 3V.
70
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
71
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
72
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
73
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
74
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
75