Đồ án kỹ thuật lập trình nhúng ARM TỔNG QUAN VỀ ARM LPC2103. Đồ án Kỹ Thuật Lập Trình nằm trong chương trình đào tạo của nghành cơ tin kỹ thuật thuộc khoa cơ khí tự động và robot có vai trò hết sức quan trọng, là bước đầu cho sing viên trong con đường học tập, giúp sinh viên hiểu sâu hơn về những nhiệm vụ và những yêu cầu cơ bản của một người kỹ sư cơ điện, và quan trọng nhất là tổng hợp lại những gì mình đã học trong suốt thời gian qua.
Trang 1ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
MỤC LỤC
Chương I TỔNG QUAN VỀ ARM LPC2103 tr.2
I.1 : GIỚI THIỆU TỔNG QUAN VỀ ARM tr
I.3 : GIỚI THIỆU TỔNG QUAN VỀ ARM tr.
Chương II CẤU TRÚC VÀ BỘ NHỚ VÀ CHỨC NĂNG PIN LPC 2103 tr.6
II.5 CẤU TRÚC CÁC PIN LPC2103 tr.10
Chương III PLL Control Register (PLL0CON & PLL1CON) tr.19
III.2 PLL Status Register (PLL0STAT & PLL1STAT): tr.
III.3 PLL Feed Register (PLL0FEED & PLL1FEED) tr.
Trang 2lời nói đầu
Hiện nay, các nghành kinh tế nói chung và cơ khí nói riêng đòi hỏi kỹ sư cơ khí vàcác cán bộ kỹ thuật được đào tạo ra phải có kiến thức sâu rộng, đồng thời phải biết vận dụng những kiến thức đó để giải quyết những vấn đề thường gặp trong sản xuất
và sử dụng máy móc Cùng với sự phát triển ngày càng cao của khoa học kỹ thuật thì những dòng chíp mới được ra đời với nhũng tính năng vượt trội, nhằm đáp ứng những yêu cầu ngày càng cao của xã hội
Mục tiêu của môn học là giúp sinh viên cũng cố kiến thức của các môn đã học như: Kỹ thuật lập trình, Kỹ thuật điện, Lập trình C cho vi điều khiển, … Ngoài ra còn giúp sinh viên tìm hiểu thêm về một dòng chíp mới(chíp 32 bit) với những điểmmạnh nổi trội có thể trong tương lai không xa sẽ thay thế những dòng chíp khác bằng những ứng dung, lợi ích và tốc độ vượt trội mà nó mang lại Qua đó sing viên nắm chắc hơn về phương pháp tính, thiết kế và quy trình chế tạo một mạch điện cơ bản như mạnh nguồn, mạch công suất … Cũng như các yêu cầu công nghệ, và kinh
tế với mục tiêu là sản phẩm chế tạo ra phải đáp ứng được yêu cầu và hợp với thời đại ngày nay
Đồ án Kỹ Thuật Lập Trình nằm trong chương trình đào tạo của nghành cơ tin
kỹ thuật thuộc khoa cơ khí tự động và robot có vai trò hết sức quan trọng, là bước đầu cho sing viên trong con đường học tập, giúp sinh viên hiểu sâu hơn về những nhiệm vụ và những yêu cầu cơ bản của một người kỹ sư cơ điện, và quan trọng nhất
là tổng hợp lại những gì mình đã học trong suốt thời gian qua
Trong quá trình thực hiện đồ án được sự hướng dẫn và giúp đỡ tận tình của thầy HÀ NGỌC NGUYÊN các em đã hoàn thành đồ án này
Em xin chân thành cảm ơn
- Người thực hiện
NGUYỄN HỮU MINH
LÊ ANH KHOA
Trang 3PHẦN I: TỔNG QUAN VỀ ARM LPC2103.
I.1 : GIỚI THIỆU TỔNG QUAN VỀ ARM
1 1ARM = Acorn RISC Machine Sau này, do có thêm nhiều công ty cùng phát triển và một số lý do khác, người ta thống nhất gọi ARM=Advance RISC Machine 1.2ARM được dùng trong Iphone của Apple (ARM Cortex A5)
1.3ARM sử dụng kiến trúc RISC:
• Kích thước 1 lệnh là cố định <32bit> với chỉ một vài định dạng
• Sử dụng kiến trúc load-store , các lệnh xử lý dữ liệu chỉ ở trong thanh ghi ( toán hạng chỉ được nằm trong thanh ghi,phải dùng lênh truy cập để load nội dung
từ bộ nhớ vào rồi mới thực hiện cộng trừ v v )
• Giải mã các lệnh logic bằng phần cứng
• Thực thi theo pipeline
1.4ARM nhanh hơn, tiết kiệm năng lượng hơn và nhỏ gọn hơn
1.5Thích thì chọn, có làm sao ko?
I.2 ARM CORTEX VÀ ARMv7
- Trước hết ARM không phải là 1 bộ vi điều khiển kiểu như 8051, AVR … Nóchỉ là một cái lõi (core) chuyên xử lý dữ liệu, và kiến trúc của lõi này được công tyARM thiết kế, bán cho các hãng khác theo dạng cấp phép sở hữu trí tuệ (IntellectualProperty), các hãng sản xuất khác sẽ lắp thêm các thành phần ngoại vi vào cái corenày để tạo ra 1 sản phẩm hoàn thiện Để đơn giản , các bạn hãy tưởng tượng coreARM chính là cái chíp core-i5, core-i7 thậm chí là core-9 Các công ty sẽ làmnhiệm vụ lắp thêm RAM, ROM, cổng USB, cổng LAN và cho ra đời các sản phẩm
Trang 4Vì có thể đọc cùng lúc lệnh và dữ liệu từ bộ nhớ, bộ vi xử lý Cortex-M3 có thể thực hiện nhiều hoạt động song song, tăng tốc thực thi ứng dụng.
I.3 KIẾN TRÚC CỦA ARM7
1.3.2 Cấu trúc load – store:
Cũng như hầu hết các bộ xử lý dùng tập lênh RISC khác, ARM cũng sử dụng cấutrúc load-store Điều đó có nghĩa là: tất cả các chỉ lệnh <cộng, trừ…> đều được thựchiện trên thanh ghi Chỉ có lệnh copy giá trị từ bộ nhớ vào thanh ghi<load> hoặcchép lại giá trị từ thanh ghi vào bộ nhớ<store> mới có ảnh hưởng tới bộ nhớ
1.3.3 Tập lệnh của ARM:
Tất cả các lệnh của ARM có thể thuộc 1 trong 3 loại sau:
+ Chỉ lệnh xử lý dữ liệu: chỉ thay đổi giá trị trên thanh ghi
+ Chỉ lệnh truyền dữ liệu: copy giá trị từ thanh ghi vào bộ nhớ và chép giá trị
từ bộ nhớ vào thanh ghi.<load-store>
+ Chỉ lệnh điều khiển dòng lệnh: Bình thường, ta thực thi các chỉ lệnh chứatrong một vùng nhớ liên tiếp, chỉ lệnh điều khiển dòng lệnh cho phép chuyển sangcác địa chỉ khác nhau khi thực thi lệnh, tới những nhánh cố định, <lệnh rẽ nhánh>hoặc là lưu và trở lại địa chỉ để phục hồi chuỗi lệnh ban đầu <chỉ lệnh rẽ nhánh vàkết nối> hay là đè lên vùng code của hệ thống <gọi giám sát-ngắt phần mềm>
Một số đặc điểm riêng biệt của tập lệnh :
Trang 5+ Để tăng tính mềm dẻo và giảm kích thước chương trình, ARM đưa ra một loại lệnh gọi là THUMB chỉ có 16 bit Với lệnh 16bit này tốc độ thực thi của
chương trình sẽ giảm tuy nhiên bộ nhớ lưu trữ của chương trình sẽ tiết kiệm hơn Theo như datasheet của LPC2148 thì :
+ Mọi câu lệnh trong ARM đều có thể viết thành “câu lệnh có điều kiện” ví dụ: EQMOV R1, #0x02FE0302 ; có nghĩa là move giá trị #0x02FE0302 vào R1 nếu kết quả của câu lệnh trước = R1 và sẽ set cờ Z lên 1(EQ được thêm vào trước MOV và người ta gọi thể loại bựa nhân này là Suffix, có thể tra datasheet cái bảng Suffix này) Điều này làm cho một số câu lệnh rẽ nhánh được thực hiện rất nhanh
Phần II : CẤU TRÚC VÀ BỘ NHỚ VÀ CHỨC NĂNG PIN
LPC 2103 Các tính năng được hỗ trợ trong LPC2103
Trang 6- Là vi điều khiển 32 bit
- Có 8KB Ram và 32KbRom, hoạt động cao nhất ở 70Mhz (Dòng
LPC2101/2102 là tương tự nhưng có Ram và Rom ít hơn)
- ISP/IAP, khả năng nạp xuống vi điều khiển 256bytes/1ms hay xóa toàn bộ chip trong 100ms
- Khả năng Debug theo thời gian thực bằng cổng JTAG
- ADC 10bit với thời gian thực hiện 2.44u Ghi thẳng vào thanh ghi kết quả không cần dùng ngắt
- 2 bộ timer 32 bít (Timer0 và Timer1) với 7 chân Capture và 7 kênh so
sánh
- 2 bộ timer 16 bít (Timer2 và Timer3) với 3 chân Capture và 7 kênh so sánh
- Đồng hồ thời gian thực low power (Real-Time Clock (RTC)) cấp nguồn
rời và khả năng dùng xung rời 32Khz
- 2 bộ UART, 2 bộ FastI2C (400Kbit/s) SPI và SSP
- Bộ véctơ ngắt có thể điều chỉnh độ ưu tiên.(1 ngắt nhanh “Fast IRQ”, 16
vector ngắt có thể lập trình địa chỉ “Vectored IRQ”, các ngắt còn lại
“Non-Vectored IRQ” bạn có thể định danh nguồn gây ra ngắt sau khi vào chế độ ngắt
- 32 chân ngõ xuất nhập công dụng chung 5V
- 13 chân có khả năng làm chân ngắt ngoài
- Có bộ nhân tầng giúp VĐK hoặt động ở 70Mhz với tần số ngõ vào từ 1 đến 25Mhz
- Có chế độ Thump dùng tập lệnh 16bit thay vì 32bit và có khả năng phối hợp
cả 2 chế độ, giúp tối ưu thời gian thực hiện cũng như chi phí bộ nhớ Trong chế độ Thump bạn giảm được 30% code nhưng chạy chậm hơn 40% so với chế độ 32 bit ( thường được gọi là chế độ ARM )
Trang 7ARM có một bộ PLL là một bộ nhân tần số Tức là khi thạch anh đầu vào của bạn chỉ là 12MHz và bạn muốn hoặt động ở tần số 60MHz (hỗ trợ cao nhất đến 70Mhz) thì bạn cần nhân 5 tần số ngõ vào Điều này được thực hiện thông qua thanh ghi PLLCON, PLLCFG và PLLFEED Và thường được khai báo sẵn trong file startup.s mặc định của Keil Clock sinh ra thông qua PLL gọi là Cclk Cclk quyết định tốc độ thực thi lệnh cũng như tốc độ AHB bus (các bus có tốc độ cao trong VĐK như bus bộ nhớ).
Bên cạnh đó thì ARM còn có một bộ chia tần số gọi là bộ VPB divider Clock sinh ra thông qua bộ chia VPB sẽ quyết định tốc độ của VPB bus và có tên là Pclk.Bus này thường được dùng để giao tiếp với các thiết bị ngoại vi (nhằm tránh gây hiện tượng nghẽn cổ chai do tốc độ của các thiết bị ngoại vi chậm hơn tốc độ của VĐK) Bên cạnh đó còn dùng để điều khiển Timer (nếu dùng nguồn clock nội thì
cứ mỗi xung của Pclk sẽ tăng timer count lên 1, còn nếu dùng xung ngoài thì cứ mỗi cạnh lên của Pclk thì VĐK sẽ kiểm tra tín hiệu ở ngõ Capture) Bộ VPB được quyết định bởi thanh ghi VPBDIV Ví dụ, nếu bạn cho VPBDIV = 0x00000002 thìtức là Pclk sẽ có tần số bằng ½ tần số của Cclk
II.1 PINSEL0 và PINSEL1
- Đây là hai thanh ghi chọn chức năng cho chân của vi điều khiển Riêng con LPC2103 chỉ có một Port 0 duy nhất gồm 32 chân đánh dấu từ P0.0 đến P0.31 Mỗi chân thường có từ 3 đến 4 công dụng Chức năng mặc định là chân xuất nhập chung (tức dùng điều khiển Led hoặc LCD hoặc nhận phím bấm… tức làm bất cứ
gì mà không dùng đến module thiết kế sẵn bên trong VĐK)
- PINSEL0 điều khiển cho 16 chân đầu, còn PINSEL1 điều khiển 16 chân còn lại
- Bít thứ 0 và 1 của PINSEL0 sẽ điều khiển cho P0.0, bít thứ 2 và 3 điều
khiển cho P0.1 Tương tự cho các chân còn lại, tức 2 bít điều khiển cho 1 chân
- Chẳng hạn P0.0 có 3 chức năng, chức năng thứ 0 là GPIO, thứ 1 là TXD0 (chân Transmitter của UART0) và thứ 2 là MAT3.1(PWM thứ 1 của timer 3) vậy nếu bít 1và 0 của PINSEL0 có giá trị là 00 thì P0.0 là GPIO, nếu là 01 thì là TXD0
và 10 là MAT3.1 Giá tri 11 không được sử dụng Các chức năng cũng nhưng thứ
tự chức năng của mỗi chân các bạn có thể tham khảo trong phần User manual rất hoàn chỉnh Ở các Tuts sau mình sẽ cố gắng trình bày đầy đủ các chức năng mà bạn có được từ một con LPC2103
Trang 8II.2 IOPIN
- Đây là thanh ghi dùng để đọc trạng thái của các chân, không cần biết chân đóđang là Input hay Output Mỗi bit trong thanh ghi IOPIN sẽ tương ứng trạng thái của một chân trong P0
- Bạn có thể ghi thẳng vào thanh ghi này các giá trị cần xuất ra cho các chân, lưu ý là tất cả các chân sẽ bị thay đổi theo giá trị mà bạn gán Khác với thanh ghi IOSET hay IOCLR là chỉ các vị trí bạn gán 1 thì port đó mới thay đổi giá trị
Quyết định dùng thanh ghi IOPIN hay IOSET/IOCLR sẽ giúp bạn tối ưu được chương trình của mình
II.4 IOSET/ IOCLR
- 2 thanh ghi dùng để thay đổi trạng thái của các chân Nếu bạn ghi bit 1 vào thanh ghi IOSET thì tại vị trí tương ứng chân đó sẽ có logic mức cao Còn nếu bạn ghi bit 1 vào thanh ghi IOCLR thì tại vị trí tương ứng chân đó sẽ có logic mức thấp(chú ý ghi 1 vào IOCLR, ghi 0 vào sẽ không có tác dụng).\
E Các thanh ghi FastGPIO : (Khi SCS = 0x00000000 (mặc định) bạn ở chế
độ GPIO còn nếu SCS = 0x00000001 bạn vào chế độ FastGPIO) Thanh ghi tươngđương như các thanh ghi GPIO nhưng tốc độ cải thiện 3.5 lần (Giúp bạn có thể sinh ra những tín hiệu có tần số cao hơn)
- Tương tự với các thanh ghi FIODIR, FIOMASK, FIOPIN, FIOSET,
FIOCLR.Sự khác biệt lớn nhất giữ Fast GPIO và Slow GPIO là tốc độ đáp ứng chênh nhau khoảng 3.5 lần, tức là tần số bạn có khả năng sinh ra ở các chân có thể cao lên gấp 3.5 lần Và điều khác biệt thứ hai là khi ghi hoặc đọc dữ liệu vào các thanh ghi FIOPIN, FIOSET hay FIOCLR thì
chỉ các bit nào trong thanh ghi FIOMASK là 0 thì mới được đọc hoặc ghi Ví dụ tôi muốn cho các chân từ P0.0 đến P0.15 lên 1 và giữ nguyên giá trị cho các chân còn lại, tôi có thể gán cho FIOMASK=0xFFFF0000 và gán cho FIOPIN =
0xFFFFFFFF Lúc đó các chân từ P0.16 trở đi sẽ bị che
Trang 9- Điều đáng lưu ý là các thanh ghi này chưa được khai báo trong file LPC210x.hcủa Keil, mình chỉ xin khai báo lại 5 thanh ghi FIODIR, FIOMASK, FIOPIN, FIOSET, FIOCLR mà thôi Còn một số thanh ghi bổ sung nhằm giúp tối ưu hóa quá trình xuất nhập, các bạn có thể tra thêm trong User manua
II.5 : CẤU TRÚC CÁC PIN LPC2103
2.5.1 : Sơ đồ khối của ARM LPC 2103.
Trang 102.5.2 : Thứ tự chân trên chíp trên chip LPC 2103.
Trang 112.5.3: Chức năng và nhiệm vụ của từng chân.
- Vi điều khiển LPC 2103 có 48 chân
- Gồm 32 chân từ P0.0 tới P0.31 với chức năng I/O
- Chân số 7,19,43 nối GND
- Chân số 42, 17, 40 nối VCC(3,3V)
- Chân số 5 nối VCC(1,8V)
Trang 12- Tổng cộng có 32 chân của Port 0 có thể được sử dụng như mục đích chung hai chiều vừa có thể là tín hiệu đầu ra vừa có thể là tín hiệu đầu vào.Riêng Port 0.31 chỉ
có thể là tín hiệu đầu vào input
- Các chân của Port 0 có hoạt động phụ thuộc vào chức năng pin lựa chọn thông qua các kết nối khối pin
- LPC 2103 sử dụng hai thạch anh dao động ,một thạch anh cho mạch chính, một thạch anh cho đồng hồ thời gian thực
- Chân số 20,25 sử thạch anh RTCX1,RTCX2 _32KHZ_là đầu vào và đầu ra cho mạch giao động RTC(rill time clock)
- Chân số 11,12 sử dụng thạch anh XTAL1,XYAL2 là đầu vào và đầu ra cho mạchdao động nội bộ
- Chân số 26 _ RTCK :Trả lại đồng hồ kiểm tra đầu ra Extra tín hiệu được gửi đếncổng JTAG Hỗ trợ gỡ rối đồng bộ hóa khi bộ xử lý tần số khác nhau
- Chân số 27 _ DBGSEL được chọn: khi ở mức thấp, một phần hoạt động bình thường Khi bên ngoài kéo lên mức cao , P0.27 để P0.31 được cấu hình như JTAG cảng và một phần là ở chế độ Debug
- Chân số 6 _ RST_ Khi chân này được đưa về mức thấp thì thiết bị bị sẽ được reset, gây ra cổng I / O và thiết bị ngoại vi để đưa vào trạng thái mặc định của họ và thực hiện xử lý bắt đầu tại địa chỉ 0 TTL với thời gian trễ 5 V là đủ
II.6 : CÁC CHỨC NĂNG PORT 0
- P0.0 : chân 13 của LPC 2103
+ Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ TXD0 - phát đầu ra cho UART0
+ MAT3.1 - PWM ra 1 cho Timer 3
- P0.1 : chân 14 của LPC 2103
Trang 13+ Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ RXD0 - phát đầu ra cho UART0
+ MAT3.2 - PWM ra 2 cho Timer 3
+ CAP0.1 : Bắt đầu vào cho Timer 0, kênh 1
Trang 14+ MOSI0 : Dữ liệu đầu ra từ SPI chủ hoặc dữ liệu đầu vào từ SPI thiết bị
+ CAP0.2 - Bắt đầu vào cho Timer 0, kênh 2
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ RTS1 : Yêu cầu đầu ra cho UART1 gửi
+ CAP1.0 : Bắt đầu vào cho 1 Timer, kênh 0
+ AD0.3 : ADC 0, đầu vào 3
- P0.11 : chân 36 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ AD0.4 - ADC 0, đầu vào 4
Trang 15+ CAP1.1 : Bắt đầu vào cho Timer 1, kênh 1
+ CTS1 :Clear để Gửi đầu vào cho UART1
- P0.12 : chân 37 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ DSR1 : Data Set Ready đầu vào cho UART1
+ MAT1.0 : PWM đầu ra cho 1 Timer, kênh 0
+ AD0.5 : ADC 0, đầu vào 5
- P0.13 : chân 41 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+DTR1 : Data Terminal Ready đầu ra cho UART1
+MAT1.1 :-PWM đầu ra cho Timer 1, kênh 1
- P0.14 : chân 44 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+DCD1 ; Phát hiện nhà cung cấp dữ liệu đầu vào cho UART1
+ SCK1 : SPI đồng hồ đầu ra từ chủ hoặc đầu vào cho thiết bị
+EINT1 : ngắt ngoài gián đoạn 1 đầu vào
- P0.15 : chân 45 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+RI1: Ring Chỉ số đầu vào cho UART1
+EINT2 : ngắt ngoài gián đoạn 2 đầu vào
- P0.16 : chân 46 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+EINT0 - ngoài ngắt 0 đầu vào
+ MAT0.2 - PWM đầu ra cho Timer 0, kênh 2
- P0.17 : chân 47 của LPC 2103
Trang 16+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin.
+ CAP1.2 - Bắt đầu vào cho Timer 1, kênh 2
+ SCL0 : C1 đồng hồ đầu vào / đầu ra
- P0.18 : chân 48 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ CAP1.3 - Bắt đầu vào cho Timer 1, kênh 3
+SDA1 :C1 dữ liệu đầu vào / đầu ra pin này là một cống mở ra nếu chức năng được chọn trong các kết nối khối pin
- P0.19 : chân 1 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ MAT1.2 - PWM đầu ra cho Timer 1, kênh 2
+ MISO1 : Dữ liệu đầu vào cho SPI chủ hoặc dữ liệu đầu ra từ SPI thiết bị
- P0.20 : chân 2 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ MAT1.3 - PWM đầu ra cho Timer 1, kênh 3
+ MOSI1 : Dữ liệu đầu ra cho SPI chủ hoặc dữ liệu đầu vào từ SPI thiết bị
- P0.21 : chân 3 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ MAT3.0 - PWM đầu ra cho Timer 3, kênh 0
+ SSEL1 : Thiết bị ngoài chọn SPI1.Chọn giao diện SPI là một thiết bị bên ngoài
để thực thi
- P0.22 : chân 32 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ AD0.0 – ADC0, ngõ vào 0
- P0.23 : chân 33 của LPC 2103
Trang 17+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin.
+ AD0.1 – ADC0, ngõ vào 1
- P0.24 : chân 34 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ AD0.2 – ADC0, ngõ vào 2
- P0.25 : chân 38 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ AD0.6– ADC0, ngõ vào 6
- P0.26 : chân 39 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ AD0.7 – ADC0, ngõ vào 7
- P0.27 : chân 8 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ TRST - Test thiết lập lại cho giao diện JTAG Nếu DBGSEL là cao, chân này là
tự động cấu hình để sử dụng với EmbeddedICE (Debug chế độ)
+ CAP2.0 - Bắt đầu vào cho 2 Timer, kênh 0
- P0.28 : chân 9 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+ TMS - Chọn chế độ thử nghiệm cho giao diện JTAG Nếu DBGSEL là cao, chân này là ) tự động cấu hình để sử dụng với EmbeddedICE (Debug chế độ)
+ CAP2.1- Bắt đầu vào cho 2 Timer, kênh 1
- P0.29 : chân 10 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+TCK - Kiểm tra đồng hồ cho giao diện JTAG Đồng hồ này phải được chậm hơn 1/6 lần của CPU đồng hồ (CCLK) cho giao diện JTAG để hoạt động Nếu DBGSEL
Trang 18là cao, điều này pin được tự động cấu hình để sử dụng với EmbeddedICE (Debug chế độ)
+ CAP2.2 - Bắt đầu vào cho 2 Timer, kênh 2
- P0.30 : chân 15 của LPC 2103
+Tổng giám mục đích đầu vào / đầu ra kỹ thuật số pin
+TDI - Kiểm tra dữ liệu nhập cho giao diện JTAG Nếu DBGSEL là cao, chân này
là tự động cấu hình để sử dụng với EmbeddedICE (Debug chế độ)
+MAT3.3 - PWM ngõ ra 3 cho Timer 3
- P0.31 : chân 16 của LPC 2103
+ Tổng giám mục đích đầu ra kỹ thuật số pin
+ TDO - Kiểm tra dữ liệu ra cho giao diện JTAG Nếu DBGSEL là cao, chân này
là tự động cấu hình để sử dụng với EmbeddedICE (Debug chế độ)
Phần III : PLL Control Register (PLL0CON & PLL1CON):
III.1 : PLLCON
Chứa các bit để kích hoạt và kết nối PLL Kích hoạt PLL cho phép khóa cấu hình hiệntại (với 2 số M & P) Kết nối PLL làm chip và toàn bộ các chức năng chạy theo xung nhịp từ ngõ ra PLL
Bit Ký hiệu Ý nghĩa Giá trị sau Reset
0 PLLE bit = 1: cho phép kích hoạt PLL 0
và khóa tại tần số yêu cầu
Trang 191 PLLC khi PLLE và PLLC = 1 thì PLL được 0
kết nối như nguồn xung cho vi điều khiển
7:2 - Reserved n/a
III.2 : PLL Status Register (PLL0STAT & PLL1STAT):
PLLSTAT là thanh ghi chỉ đọc, nó chứa các giá trị thực sự của bộ PLL tại thời điểm đọc thanh ghi này
Bit Ký hiệu Ý nghĩa Giá trị sau Reset 4:0 MSEL số nhân hiện tại đang được sử dụng bởi bộ PLL 0
6:5 PSEL số chia hiện tại đang được sử dụng bởi bộ PLL 0
7 - Reserved n/a
8 PLLE bit = 1: bộ PLL đang được kích hoạt 0
9 PLLC bit = 1: bộ PLL đang được kích hoạt 0
và kết nối
10 PLOCK bit = 0: PLL chưa được khóa 0
bit = 1: PLL đã được khóa với tần số yêu cầu
15:11 - Reserved n/a
III.3 : PLL Feed Register (PLL0FEED & PLL1FEED)
Sau khi bộ PLL đã được kết nối, mọi thay đổi trong 2 thanh ghi PLLCON &
PLLCFG sẽ
không có tác dụng Để thay đổi cấu hình PLL đã chọn, phải ghi vào thanh ghi
PLLFEED
theo 1 thứ tự xác định:
- Ghi 0xAA vào PLLFEED
- Ghi 0x55 vào PLLFEED
Thao tác ghi phải theo đúng thứ tự, và liền kề nhau
Trang 20Ví Dụ: tính toán tần số PLL: giả sử tần số thạch anh là 12MHz và tần số chip CCLK
là 60MHz, không sử dụng USB
Fosc: tần số dao động thạch anh
Fcco: tần số dao động của PLL CCO
Bảng giá trị của MSEL & PSEL:
PSEL bits 6:5 của PLLCFG P
Vậy PSEL = 01 và MSEL = 00100
Giá trị ghi vào thanh ghi PLLCFG sẽ là 0x00000024
III.4 : Pulse Width Modulator (PWM):
Trang 21Bộ tạo xung PWM được thiết kế dựa trên bộ Timer/Counter, hoạt động theo xung PCLK Nguyên tắc hoạt động dựa trên các Match events của 7 match register Có 2 loạixung:
- Single Edge: tất cả các xung đều được set lên 1 ngay khi bắt đầu 1 xung PWM, xung được set về 0 khi giá trị của timer counter bằng với giá trị của 1 trong các
Match register 1-6 Có thể có tối đa 6 xung Single Edge đồng thời, tất cả các xung đều có cùng tần số được điểu khiển bởi Match register 0 (khi giá trị của timer
counter bằng giá trị trong Match register 0 thì kết thúc 1 xung PWM và bắt đầu 1 xung mới)
III.5 : PWM
- Double Edge: các xung được set bằng 0 khi bắt đầu 1 xung PWM, được set lên 1 bằng 1 Match register và set về 0 bằng 1 Match register khác Các xung double
edge cũng có tần số được điều khiển bởi Match register 0
PWM2 & PWM4: double edge
PWM5: single edge
Bảng các kênh PWM:
Kênh Single Edge Double Edge
Set by Reset by Set by Reset by
1 Match 0 Match 1 - -
Trang 222 Match 0 Match 2 Match 1 Match 2
3 Match 0 Match 3 Match 2 Match 3
4 Match 0 Match 4 Match 3 Match 4
5 Match 0 Match 5 Match 4 Match 5
6 Match 0 Match 6 Match 5 Match 6
PHẦN IV : CHỌN PHẦN MỀM LẬP TRÌNH CHO CHÍP
Hiện nay có nhiều phần mềm lập trình cho LPC2103 như “Keil uVision4” for ARM đây là phần mềm thông dụng được sử dụng nhiều nhất hiện nay Bên cạnh đó còn có “Raisonance Tools” hay còn gọi là Ride7 dành riêng cho ARM, phần mềm này hỗ trợ khá đầy đủ cho việc lập trình IO,PPL,ADC,PWM cho ARM với việc khaibáo sẵn trong file thư viện (.h), các ví dụ đơn giản trong phần Example Ngoài ra người sử dụng có thể khai báo những thanh gi khác mà không có sẵn trong file thư viện để sử dụng cho những ứng dụng khác
Ở đây chúng ta sử dụng Raisonance Tools để lập trình cho LPC2103
GIAO DIỆN VÀ LẬP TRÌNH CƠ BẢN VỚI “RAISONANCE TOOLS”
Biểu tượng Raisonance Tools
Trang 23- Giao diện chính: