Những bộ vi điều khiển mới hiện nay của các hãng như: ATMEL, MOTOROLA, MICROCHIP… Bên trong đã tích hợp nhiều thiết bị ngoại vi như khối ADC, khố PWM, các loại bộ nhớ, bộ đệm, các cổng t
Trang 1Vi điều khiển
Trang 2LỜ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!
Hà Nội, tháng 6 năm 2008
Sinh viên thực hiện:
Nguyễn Thế Anh
Trang 3MỞ ĐẦ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
Trang 4Mục lục
CHƯƠNG I: 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: 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: 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: 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: CHUYỂN ĐỔI TỪ THIẾT BỊ FLASH PIC18F SANG PIC18FXXJ 47
5.1 Chuyển đổi thiết bị 47
5.2 Giới thiệu 47
5.3 Reset Brown-out (BOR) 51
5.4 XUNG 51
5.5Tuỳ chọn dao động ký 52
5.6 Đồng hồ đo năng lượng 52
Trang 55.7 Độ trễ khởi động/reset 52
5.8 Sự khác Biệt Về Chân 53
5.9 Điện trở kéo gắn trong 54
5.10 Tỷ lệ dòng trên các chân vào/ra 54
5.11 VCAP/VDDCORE và ENVREG 55
5.12 Bộ Nhớ Chương Trình 55
5.12.1 ID thiết bị 55
5.12.2 Từ cấu hình 55
5.12.3 Các chu trình ghi 58
5.12.4 Khả năng ghi nhớ đặc tính 58
5.12.5Mô phỏng tự ghi và EEPROM 58
5.12.6 Bảo vệ mã 59
5.12.7 Vào chế độ lập trình 59
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 60
5.14 KHÁC BIỆT MODULE 61
5.15 TỔNG KẾT 61
CHƯƠNG VI: ĐỒNG HỒ BÁO THỨC 62
6.1 Tóm lược 62
6.2 Chỉ thị hoạt động 62
6.2.1 Ngày tháng/thời gian hiện tại 62
6.2.2 Thời gian 12 giờ hay thời gian quân sự 63
6.2.3 Báo thức 64
6.2.4 Âm báo thức 65
6.2.5 Đồng bộ, chờ và ngừng báo thức 65
6.3 USB 67
6.4 Lập trình PIC 67
6.4.1 Đồng hồ 67
6.4.2 USB 68
6.5 Sử dụng Compact Flash 68
6.6 Chip bộ mã hoá MP3 69
6.7 Bộ chuyển đổi số - tương tự CS4334 72
6.8 Màn hình LED 72
6.9 Kết luận 73
Trang 6Các hãng chế tạo bán dẫn đã tích hợp các mạch ngoại vi và bộ vi xử lý lên một chíp duy nhất (on chíp) để tạo ra các bộ vi điều khiển, để nhằm hạn chế tối đa các linh kiện mắc ngoài khi xây dựng hệ thống có sử dụng vi xử lý, vi điều khiển
Những bộ vi điều khiển mới hiện nay của các hãng như: ATMEL, MOTOROLA, MICROCHIP… Bên trong đã tích hợp nhiều thiết bị ngoại vi như khối ADC, khố PWM, các loại bộ nhớ, bộ đệm, các cổng truyền thông như: 12C, UART, CAN, PSP, USB, khối điều khiển LCD, thậm chí cả các khối thu phát không dây RF Điều này khiến cho việc thực hiện các ưng dụng với vi điều khiển trở nên dễ dàng, giảm được kích thước mạch điện và chi phí
Việc thiết kế và chế tạo ra các bộ xử lý (microprocessor) hiện nay phát triển theo hai hớng chính Hướng thứ nhất là phát triển cac bộ xử lý mạnh tốc độ cao thực hiện hàng tỷ lệnh mỗi giây, độ dài từ dữ liệu lớn 32 hoặc 64 bit, truy nhập không gian bộ nhớ đến hàng trăm Mbyte hiện nay đã lên hàng Gbyte Các bộ xử lý này được dùng trongcác hệ thống cần có công suất tính toán cao như ở máy tính cá nhân PC (Personal Computer) các hệ điều khiển trong công nghiệp Hướng thứ hai đó là thiết k, chế tạo các vi điều khiển (microcontroller), đó là một vi mạch đơn bên trong gồm bộ xử lý 8,12,14 hoặc 16 bit và các khối chức năng như bộ nhớ, bộ đệm, bộ biến đổi A/D, cổng nối tiếp… Các vi điều khiển điển hình là intel 8051, ATMEL, AVR, MOTOROLA 68HC11, Microchip Pic…
Điều thúc đảy việc nghiên cứu chế tạo vi điều khiển đó là tính đa dụng, dễ dàng lập trình và giá thành thấp Vi điều khiển tỏ ra rất hấp dẫn trong các ứng dụng điều khiển điện tử vì có kích thước nhỏ, tuy nhỏ nhưng chức năng cũng rất đa dạng, dễ dàng tích hợp vào trong hệ thống để điều khiển toàn hệ thống
Trang 7Cá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ố
Trang 8 Có khả năng định địa chỉ được 64Kbyte bộ nhớ ngoài
Có 2 tới 3 khối timer
Tần số xung nhịp 12-24MHz
Có khối UART
Nạp trình song song ở các phân họ có bộ nhớ chương trình
1.2.2 ATMEL AVR AT90Sxxxx
Đóng vỏ 8-20-40 chân, tương ứng là 3-15-32 chân vào ra
Chữ lượng bộ nhớ chương trình từ 512 byte đến 8 Kbyte
Có 128 byte đến 512 byte RAM
Có khối UART trong một số loại cấo cao
Có 1 đến 2 timer 8 bit một số loại có timer 16 bit
Bộ ADC 10bit với 6-8 kênh vào
Có bộ nhớ EEFROM dung lượng 64-512 byte
Có 1 byte bộ nhớ RAM bên trong
Không có hoặc tối đa 20Kbyte bộ nhớ lệnh
Có khối UARTx
Trang 9 Bộ ADC 8bit, 6-8 kênh vào
5 bộ timer 16 bit
Có bộ nhớ không tự bay hơi EEFROM 512 byte
Khả năng định địa chỉ 16 Kbyte bộ nhó ngoài
Tần số xung nhịp 8 MHz
Nạp trình song song
1.2.4 MICROCHIP PIC 12Xxxx, 16Xxxx, 17Xxxx, 18Xxxx, DSPIC
Đóng vỏDip8-18-28-40 (phổ biến), tương ứng là 5-13-22-3 chân I/O
Dung lượng bộ nhớ chương trình ROM 512 byte đến 8 Kbyte
Có từ 25 đến 400 byte RAM
Ở các loại cấp chung và cấp cao có khối UART
Có 1 đến 3 timer 8 bit, 16 bit
Bộ ADC 8bit, 10bit, 6-8 kênh vào
Có bộ nhớ EEFROM dung lượng 64-512 byte ở các họ Fxxx và DSPIC
Có khả năng định địa chỉ cho bộ nhớ ngoài ở các họ cấp cao
Tần số xung nhịp từ 4-40 MHz
Tập lệnh RISC
Đa số nạp trình theo chuẩn ICSP
Trang 10hỗ trợ các tính năng vào ra cho vi xử lý PIC không cần nhiều chức năng vì chỉ xử lý các công việc vào ra do đó bộ mã lệnh của nó khó nhỏ gọn Những vi điều khiển PIC đầu tiên có điểm yếu là chế tạo theo công nghệ n-MOS nên tiêu thụ nhiều năng lượng,
bộ nhớ chương trình là loại ROM mặt nạ chỉ nạp được một lần, do đó chương trình điều khiển được nạp ngay khi chế tạo vi mạch nên chỉ thích hợp với các khách hàng đặt mua với số lượng lớn, để lắp ráp trong sản xuất những sản phẩm cụ thể
Những năm đầu thập ki 80 Genneral Instrument gặp khó khăn trong thương mại
và tổ chức lại Hãng tập trung vào chế tạo linh kiện bán dẫn công suát lớn là thế mạnh cho tới hiện nay của hãng Genneral Instrument đã chuyển nhượng Ban vi điện tử và nhà máy tại Chandle, bang Anizona cho các nhà đầu tư Họ lập ra một công ty mới, đặt tên là Arizona Microchip technology hiện nay là Microchip technology Inc
Chiến lược của các nhà đầu tư là tập trung vào vi điều khiển và các bộ nhớ bán dẫn Các vi mạch PIC n-MOS được cải tiến, chế tạo dựa trên nền tảng công nghệ mới CMOS Các sản phẩm đầu tiên của Microchip được biết tới và bán ra với số lượng lớn
là các vi điều khiển PIC thuộc họ PIC16C5x Họ này có hai biến thể với bộ nhớ chương trình là OTP và UV EPROM Loại OTP có thể nạp trình một lần dùng cho sản xuất loại lớn Loại UV EPROM có thể xóa được bằng tia cực tím (tia UV) dùng khi phát triển, thử nghiệm phần mềm
Năm 1983 Microchip là hãng đầu tiên đã tích hợp được bộ nhớ chương trình flash EEPROM vào những vi điều khiển mới, trong đó được biết đến nhiều nhất là PIC
Trang 1116C84 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
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
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
Chỉ có một bộ đếm timer
Không có các ngắt cứng
Không có các lối ra tăng 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
2.2.2 Họ cấp chung (Mid-range)
Bao gồm 12C6xx, 14C000, 16C55x, 16C6x, 16C62x, 16F62x, 16C67x, 16C8x, 16F87x và 16C9xx
Độ dài từ lệnh 14 bit
Trang 12 Là họ vi điều khiển PIC thông dụng nhất hiện nay
Bố chí 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 tinh 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…
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
Kiến trúc khác so với họ PIC cấp chung, cấp thấp
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 nhập cac 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
Trang 13 Nạp trình kiểu song song
2.2.4 Họ cấp cao (High- performance)
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
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 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)
Trang 14Microchip 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
Trang 15CHƯƠNG III
VI ĐIỀU KHIỂN PIC 18F4550
PIC18F4550 là một vi xử lý cơ bản đa chức năng và rẻ Nó là sản phẩm của họ vi
xử lý PIC thông dụng của công ty Microchip của Mỹ có trụ sở đặt tại Chandler, Arizona (Mỹ)
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
Trang 16Hình 2: Giao Tiếp USB
Hỗ trợ tinh thể và dao động ký nhiều tần số như đầu vào và bộ cân bằng nên bộ
xử lý có thể hoạt động với tần số 48 MHz của dao động ký độc lập khi kết nối Khi kết thúc hoạt động thì chỉnh dao động ký được kết nối (thông qua các bit cấu hình) Làm việc với tốc độ 48 MHz là điều kiện tiên quyết để chuyển sang chế độ toàn tốc nhờ cổng USB Vì vậy, driver USB chuyển sang chế độ toàn tốc (1.5 Mbyte/giây) qua USB
và tương thích với chuẩn USB 2.0 Nó cũng có 35 chân vào/ra số chung (xem sơ đồ chân ở phần dưới) và có sẵn vỏ bọc gồm DIP-40 nên rất thuận tiện cho nhà phát triển
và những người nghiệp dư quan tâm
Với bộ nhớ, có 32kb Flash lưu trữ chương trình, 2kb bộ nhớ SRAM bay hơi và
256 byte EEPROM (bộ nhớ không bay hơi) để lưu trữ dài hạn dữ liệu như cấu hình … Các chỉ thị dài 1 byte với một số ngoại lệ dài 2 byte (CALL, MOVFF, GOTO LSFR) Sử dụng cơ chế đường ống để thực thi mã bằng việc khiến các chỉ thị liên tiếp hoạt động trong 4 xung (độ dài xung) và có 4 lần nhảy xung được thêm vào
Các đặc tính đáng chú ý khác là có đồng hồ, ngắt (đồng hồ gắn trong và gắn ngoài) với hai mức ưu tiên và dùng cả hai mức như bộ so sánh tương tự kèm theo với
bộ phát điện thế chuẩn có 16 mức (hữu ích khi dùng trigger ở mức phần cứng)
Cuối cùng, CIP cũng có một bộ chuyển đổi tương tự 10 bit nhưng dao động ký
Trang 17khô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)
Hình 3:Sơ đồ chân của PIC18F4550 trong hộp DIP-40
Trang 18Hình 4: TQFP
Hình 5: QFN
Trang 19Bảng 1: Bảng mô tả các chức năng từng chân của PIC18F4550
Chân Hướng Mô tả chức năng và các đặc tính
AN0-AN12
I 13 kênh Input, Analog, AN6 và AN7 còn dùng cho lập
trình dữ liệu và xung clock vào
Avdd Nguồn dương cho môđun tương tự
Avss Nguồn Ground cho modul tương tự
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
I
O
Cổng giao tiếp chuyển đổi dữ liệu đồng bộ khung
Cổng giao tiếp chuyển đổi dữ liệu Clock vào ra nối tiếp Lối vào dữ liệu nối tiếp
Lối ra dữ liệu nối tiếp
Cổng vào ra dữ liệu kênh truyền thông sơ cấp của ICD Vào ra xung nhịp kênh sơ cấp
Vào ra dữ liệu kênh thứ cấp
…
Trang 20LVDIN I Cổng vào phát hiện sụt thế
/MCLR I Power, chân Reset, mức tích cực thấp
PGD
PGC
I/O
I
Vào ra dữ liệu của ICSP
Lối vào Clock của ICSP
Trang 21Lối vào dữ liêu của khối SPI1
Lối ra dữ liệu của SPI1
Slaver đồng bộ
SCL
SDA
I/O I/O
Vào ra Clock nối tiếp của I2C
Vào ra Data nối tiếp đồng bộ của I2C
SOSCO
SOSCI
O
I
Lối ra bộ dao động tinh thể công suất thấp 32Khz
Lối vào bộ dao động 32Khz
Lối vào Vref+ (cao) thế analog chuẩn
Lối vào Vref- (thấp) thế chuẩn
3.2 Các Công Cụ Lập Trình
Khi lựa chọn kiến trúc, phải nói đến cách lập trình Với CIP thì thường dùng PICSTART Plus của Microchip Tuy nhiên, mô hình ta đã chọn là mô hình duy nhất không tương thích với nhà sản xuất này Mặt khác, ta có thuận lợi nếu theo nhà phát triển này, ta sẽ có sẵn một chiếc mà không cần phải mua Đánh giá khi hoàn thành project thì trong tương lai bản cập nhật sẽ được phép dùng
Trang 22Thiết bị sử dụng được chia thành như sau
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
Hình 6: Kết Nối Với ICD2
Trang 23Với ứng dụng này sẽ sử dụng công cụ lập trình sau
CCS ICD là giải pháp loại bỏ lỗi và lập trình cho microchip PIC16Fxx và PIC18Fxx MCU hoàn chỉnh in-circuit ICD có thể loại bỏ lỗi qua PIC16 và hỗ trợ PIC18 trống loại bỏ lỗi theo cách loại trừ sai phạm Nó cũng cung cấp lập trình nối tiếp in-circuit (ICSP) cho tất cả các chip Flash Một danh sách các phần được DCI hỗ trợ được ghi chi tiết ở đây
Các đơn vị CCS ICD làm việc tốt với phần mềm điều khiển PCW hay CCS độc lập với ICD CCS Debug PCW là quan trọng và tích hợp với bộ biên dịch và PCW PCWH và cung cấp thông tin phát sinh lỗi được viết chi tiết bằng C Phần mềm cho phép các chương trình điều khiển độc lập nhanh chóng tác động vào ICSP chính nhờ ICD Phần mềm điều khiển cũng cho phép bạn cập nhật các hỗ trợ mà không thay đổi
về mặt logic đối tượng ICD, không phải bỏ đi chip của đơn vị ICD (Dùng các công cụ phần mềm này đòi hỏi phải nạp cho đơn vị CCS ICD không thay đổi logic phương tiện trên ICD, được tải theo mặc định) Phần mềm điều khiển từ đơn vị ICD và cho phép thiết lập các phần Flash được hỗ trợ Để giúp loại bỏ lỗi, chức năng của PCW hay PCWH là debug và tích hợp IDE với IDE
Trang 24ICD-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)
Hình 8: Đơn Vị ICD-U40
Sơ đồ hai ứng dụng được trình bày dưới đây:
Thông tin relay:
Hình 9 : Thông Tin relay
Trang 25Phầ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
Hinh 10: Thông Tin relay
Cần phải nói rằng connector DCI đã thay đổi, không còn là cáp 5 connector nữa
mà đã chuyển thành cáp 6 connector, đó là do việc phát triển project gặp khó khăn khi dùng ICD, nó hầu như không thể bị ảnh hưởng hay debug nhiều lần, đây là lý do chính
mà thay đổi là ICD có cấu hình như trên, tuỳ chọn thay đổi đầu vào tương tự và máy chỉ thị thể hiện có truyền thông giữa thiết bị và host
3.4 Tiêu Thụ Năng Lượng
Để quyết định xem có cần cấp nguồn ngoài (hay đơn giản là cấp nguồn qua cổng USB), xem danh sách sau các thành phần và tiêu thụ năng lượng của chúng
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
Trang 263.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ý
Trang 27do 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ừ 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)
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
Trang 283.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:
Trang 29Cá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
Trang 30• 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
Trang 31Đặc tính khác được thể hiện trong mã thông báo
Trang 32Usb_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
Trang 33Hình 11: Giao diện được phát triển hỗ trợ truyền thông USB
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 …
Trang 34Nhữ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)
Trang 35Sơ đồ thực hiện dùng ở đây sử dụng việc kết hợp cách tiếp cận dùng trong giao diện CREATE USB (CUI, phụ lục 3) và pic18fusb.online.fr Wiki (Phụ lục 1) Cả hai đều sử dụng kỹ thuật tải khởi động và phần mềm liên kết với bảng thể hiện USB toàn tốc Microchip PICDEM
Tất cả các phần mềm dùng trong bảng phát triển có thể download miễn phí gồm
có bộ biên dịch MPLAB C18 C phiên bản dùng cho sinh viên
Trang 36Hình 12 : Quá Trình Phát Triển
Trước khi lập trình lần đầu cho bảng phát triển, bạn phải download mã tải khởi động vào 18f4550 Đọc phần có tiêu đề “Truyền tải khởi động vào 18F4550” để xem chi tiết về quá trình này
Các chương trình được viết và phát triển trong Microchip MPLAB Các chương trình có thể phát triển bằng ngôn ngữ hợp ngữ hay C
Sử dụng môi trường MPLAB để gọi bộ biên dịch C18 C hay bộ hợp ngữ C18 hay bộ hợp ngữ sẽ biên dịch file asm của bạn hay mã C thành file hex
Lập trình cho PIC 18F4550 bằng cách download file hex qua tải khởi động dùng chương trình PDFSUSB.EXE (lưu trú tại C:\MCHPFSUSB\Pc\Pdfsusb\PDFSUSB.exe trong MCHPFSUSB USB Framework)
Để bảng phát triển hiện ra thực đơn PDFSUSB.EXE, phải reset bảng và giữ phím
“button”
Trong môi trường PDFSUSB.EXE:
Tải file Hex
Lập trình thiết bị
Thực hiện
Nó sẽ tải file hex vào 18F4550 và khởi tạo thực hiện trong thiết bị
Phần mềm cần thiết
Phần mềm sau có thể download từ Microchip:
MPLAB IDE – môi trường phát triển để xây dựng ứng dụng
Bộ biên dịch MPLAB C18 C Phiên bản cho sinh viên – có thể sử dụng với MPLAB IDE để phát triển ứng dụng bằng C
MCHPFSUSB USB Framework - gồm tải khởi động và các ví dụ để sử dụng với
bảng phát triển
Tài liệu
Tài liệu được liệt kê dưới đây sẽ có ích trong việc vận hành môi trường phát triển
Nó có thể download từ Microchip (www.microchip.com)
Trang 37MPLAB IDE User’s Guide – Microchip document DS51519B
Release Notes for MPLAB C18 C Compiler, Student Edition
MPLAB C18 COMPILER USER’S GUIDE – Microchip document DS51288J MPLAB C18 C Compiler Getting Started – Microchip document DS51295F MPLAB C18 Libaries Documentation – Microchip document DS51297F
Release Notes for MCHPFSUSB – Microchip Full-Speed USB Solutions
PICDEM FS USB Demonstration Board User’s Guide – DS51526A
4.3 Truyền tải khởi động vào 18F4550
Xem Phụ lục B – “Phần cứng để tải mã vào 18f4550” nói về các thiết bị để truyền tải khởi động vào chip 18f4550
Lần đầu tiên lập trình cho bảng phát triển, phải dùng chương trình ICD2 thay cho PDFSUSB.EXE Nguyên nhân là do PIC hoàn toàn trống khi đem từ nhà máy về và bạn phải tải file hex cho tải khởi động vào PIC để kích hoạt các phiên lập trình trong tương lai qua PDFSUSB.EXE
File hex tải khởi động được lưu trong mã MCHPFSUSB USB Framework Trong MPLAB, mở file hex “C:\MCHPFSUSB\fw\Boot\_output\MCHPUSB.hex”, chọn chương trình ICD2 và click vào thiết bị lập trình Nó sẽ truyền mã tải khởi động vào 18f4550
Vào chế độ tải khởi động
Mã biên dịch dạng file hex có thể download bằng chương trình PDFSUSB.EXE
Để download mã vào 18f4550 qua PDFSUSB.EXE, làm như sau:
Mở ứng dụng PDFSUSB.EXE
Kiểm tra cửa sổ thả “Select PICDEM FS USB Board” để xem bảng điều khiển có hiện ra không Nếu có thì bạn sẽ thấy phần “PICDEM FS USB (0) Boot” Chọn phần này Đến bước 4
Nếu “PICDEM FS USB (0) Boot” không hiện ra, làm như sau để vào chế độ tải khởi động 18f4550:
Nhấn và giữ khoá S2
Trong khi giữ S2, nhấn và thả S1
Trang 38PC 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
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)