Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 108 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>1.2. Phương pháp nghiên cứu...8</b>
<b>1.3. Tình hình nghiên cứu phát triển cơng nghệ vi điều khiển ARM, quang báotrong và ngồi nước...9</b>
<b>1.3.1 ARM...9</b>
<b>1.3.2. Quang báo...11</b>
<b>Chương 2. Vi điều khiển ARM LPC2103...13</b>
<b>2.1. Giới thiệu chung...13</b>
<i><b>2.2.5.1. Khái quát các thanh ghi...24</b></i>
<i><b>2.2.5.2. Thanh ghi chứa các cờ ngắt ngoài ( EXINT-0xE01FC140)...25</b></i>
<i><b>2.2.5.3. Thanh ghi thiết lập chức năng wakeup dùng ngắt ngoài (EXTWAKEUP-0xE01FC144)...26</b></i>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><i><b>2.2.5.4. Thanh ghi thiết lập các chế độ ngắt ngoài (EXTMODE-0x01FC148)...26</b></i>
<i><b>2.2.5.5. Thanh ghi thiết lập cực tính cho chế độ ngắt ngoài (EXTPOLAR-0xE01FC14C)...27</b></i>
<i><b>2.2.5.6. Kết hợp nhiều chân ngắt ngoài cho cùng nguồn ngắt...28</b></i>
<b>2.2.6. Vịng khóa pha (Phase locked loop-PLL)...28</b>
<i><b>2.2.6.1. Miêu tả thanh ghi...29</b></i>
<i><b>2.2.6.2. Thanh ghi điều khiển PLL...31</b></i>
<i><b>2.2.6.3. Thanh ghi tạo cấu hình PLL (PLLCFG-0xE01FC084)...32</b></i>
<i><b>2.2.6.4. Thanh ghi trạng thái PLL (PLLSTAT-0xE01FC088)...33</b></i>
<b>2.2.7. Điều khiển nguồn...36</b>
<i><b>2.2.7.1. Diễn tả thanh ghi...36</b></i>
<i><b>2.2.7.2. Thanh ghi điều khiển nguồn (PCON-0xE01FC0C0)...37</b></i>
<i><b>2.2.7.3. Thanh ghi điều khiển nguồn cho ngoại vi (PCONP-0xE01FC0C4)...37</b></i>
<b>2.3.3. Các thanh ghi điều khiển ngắt...42</b>
<b>2.3.4. Các bước thực hiện 1 chương trình ngắt...43</b>
<i><b>2.3.4.1. Đối với ngắt FIQ...43</b></i>
<i><b>2.3.4.2. Đối với ngắt IRQ...43</b></i>
<i><b>2.3.4.3. Đối với ngắt non IRQ...44</b></i>
<b>2.4. Sử dụng các thanh ghi xuất nhập đa dụng (GPIO)...45</b>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>2.5. Sử dụng ADC...46</b>
<b>2.6. UART0 và UART1...48</b>
<b>2.6.1. Chức năng...48</b>
<b>2.6.2. Diễn tả các chân chức năng...48</b>
<b>2.6.3. Diễn tả các thanh ghi chức năng...48</b>
<i><b>2.6.3.1. Thanh ghi đệm truyền thu <U0RBR - 0xE000C000>...48</b></i>
<i><b>2.6.3.2. Thanh ghi giữ giá trị truyền phát <U0THR - 0xE000C000>...49</b></i>
<i><b>2.6.3.3. Thanh ghi cho phép ngắt truyền thông nối tiếp <U0IER - 0xE000C004></b></i>
<b>2.6.4. Kiến trúc của bộ truyền thông nối tiếp UART0...56</b>
<b>2.7. Time/Counter TIMER0 và TIMER1...57</b>
<b>2.7.1. Tính năng chính...57</b>
<b>2.7.2. Các thanh ghi điều khiển Timer/Counter...57</b>
<i><b>2.7.2.1. Thanh ghi cờ ngắt của Timer/Counter (IR, T0IR và T1IR)...57</b></i>
<i><b>2.7.2.2. Thanh ghi điều khiển Timer/Counter (TCR, T0TCR và T1TCR)...58</b></i>
<i><b>2.7.2.3. Thanh ghi điều khiển đếm (CCR, T0CTCR và T1CTCR)...58</b></i>
<i><b>2.7.2.4. Thanh ghi điều khiển ở chế độ Match (MCR, T0MCR và T1MCR):...59</b></i>
<b>Chương 3. Phương pháp lập trình với ARM...60</b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>3.4.2. Quản lý một đề án (Project manager)...64</b>
<i><b>3.4.2.1. Cửa sổ soạn thảo chương trình (Application Editor)...65</b></i>
<i><b>3.4.2.2. Cửa sổ trạng thái ra (Outout Window)...65</b></i>
<i><b>3.4.2.3. Môi trường soạn thảo cấu hình linh kiện(Device Editor)...65</b></i>
<b>3.4.3. Mơi trường gỡ rối Debbug...65</b>
<b>Chương 4. Ứng dụng lập trình quang báo...67</b>
<i><b>4.2.1.2. Lưu đồ chương trình hiển thị...82</b></i>
<i><b>4.2.1.3. Lưu đồ hiệu ứng dich chữ...84</b></i>
<i><b>4.2.1.4. Lưu đồ hiệu ứng chữ rơi...85</b></i>
<b>KẾT LUẬN...86</b>
<b>Phụ lục 1. Tài liệu tham khảo...87</b>
Phụ lục 2. Mã nguồn chương trình...88
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Ngày nay đại đa số các lĩnh vực sản xuất điều khiển, giám sát, đo lường….đều được trang bị hệ thống tự động hóa. Kĩ thuật vi điều khiển được sử dụng nhờ những tính năng ưu việt như: khả năng lập trình phù hợp với thiết kế nhỏ và lớn cũng như giao tiếp với thiết bị ngoại vi và máy tính đã đem lại sự hồn hảo, độ chính xác và tính mềm dẻo cao thơng qua giao tiếp giữa người và máy.
Vi điều khiển quản lý hoạt động của hệ thống thơng qua phần mềm, nhờ vậy ta có thể mở rộng và thay đổi hoạt động một cách dễ dàng bằng cách thay đổi một số thông số của chương trình. Vi điều khiển hoạt động theo chương trình đã nạp sẵn, đọc các tín hiệu từ bên ngồi đưa vào sau đó lưu trữ và xử lý, trên cơ sở đó đưa ra các thơng báo, tín hiệu điều khiển các thiết bị bên ngoài hoạt động theo đúng thông số và yêu cầu của hệ thống.
Qua những kiến thức học tập và nghiên cứu một số họ vi điều khiển và được sự
<i><b>hướng dẫn tận tình của thầy Đặng Thái Sơn em đã mạnh dạn chọn đề tài “Nghiên cứu</b></i>
<i><b>vi điều khiển ARM LPC2301 ứng dụng lập trình quang báo” làm đồ án tốt nghiệp</b></i>
với mong muốn nâng cao khả năng hiểu biết của mình về dịng vi điều đang được ứng dụng rộng rãi này và kỹ thuật để làm ra một sản phẩm đáp ứng yêu cầu thực tế.
Nội dung đồ án gồm 4 chương: Chương 1. Giới thiệu đề tài.
Chương 2. Vi điều khiển ARM LPC2103. Chương 3. Phương pháp lập trình với ARM. Chương 4. Ứng dụng lập trình quang báo.
<b>Em xin chân thành cảm ơn thầy giáo KS.Đặng Thái Sơn đã tận tình hướng dẫn</b>
em hồn thành tốt đồ án này.
Mặc dù đã cố gắng nhưng với điều kiện khó khăn, kinh nghiệm hạn chế và thời gian có hạn nên kết quả đạt được còn hạn chế. Em rất mong được sự góp ý và phê bình của q thầy cơ và bạn đọc.
Sinh viên
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">triển RISC
Bus chức năng thực thi cao
Máy tính với tập lệnh đầy đủ
Ngõ vào ra đa dụng
Môi trường thiết kế hợp nhất
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">LR Link Register Thanh ghi liên kết
Máy tính khả trình thơng minh
Máy tính với tập lệnh suy giảm
Chuẩn truyền/nhận không đồng bộ
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Nghiên cứu để hiểu rõ về cấu trúc phần cứng, phần mềm lập trình. Ứng dụng lập trình bảng điện tử thực hiện một số hiệu ứng thông dụng như: hiệu ứng dịch chữ trái, dịch phải, cuộn tròn, chớp tắt, hiệu ứng chữ rơi,…..
Để thực hiện đề tài em đã thực hiện các trình tự nghiên cứu tuần tự như sau: Tìm hiểu một số chip vi điều khiển khả trình phổ dụng:
- Nghiên cứu cấu trúc và các tính năng của ARM LPC2103. - Nghiên cứu môi trường phát triển IDE.
- Nghiên cứu phương pháp thiết kế và lập trình trên chip ARM. Tham khảo các thiết kế có sẵn với ARM.
Phần cứng đáp ứng các yêu cầu đặt ra: - Lập sơ đồ khối hệ thống.
- Sơ đồ nguyên lý của modun sử dụng. Thiết kế phần mềm với các tính năng đặt ra:
- Thiết kế lưu đồ thuật tốn chương trình chính. - Thiết kế modul chương trình chính.
- Thiết kế lưu đồ thuật tốn các modul chương trình con. - Thiết kế các modul chương trình con.
Nạp chạy thử mạch và ghi nhận kết quả.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Cấu trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lý 32-bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng. Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động, mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng đầu.
Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARM trở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới. CPU ARM được tìm thấy khắp nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy trị chơi cầm tay, và máy tính cầm tay) cho đến các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến để bàn.) Một nhánh nổi tiếng của họ ARM là các vi xử lý Xscale của Intel.
Việc thiết kế ARM được bắt đầu từ năm 1983 trong một dự án phát triển của công ty máy tính Acorn.
Nhóm thiết kế, dẫn đầu bởi Roger Wilson và Steve Furber, bắt đầu phát triển một bộ vi xử lý có nhiều điểm tương đồng với Kỹ thuật MOS 6502 tiên tiến. Acorn đã từng sản xuất nhiều máy tính dựa trên 6502, vì vậy việc tạo ra một chip như vậy là một bước tiến đáng kể của cơng ty này.
Nhóm thiết kế hồn thành việc phát triển mẫu gọi là ARM1 vào năm 1985, và vào năm sau, nhóm hồn thành sản phẩm “thực’’ gọi là ARM2. ARM2 có tuyến dữ liệu 32-bit, khơng gian địa chỉ 26-bit tức cho phép quản lý đến 64Mbyte địa chỉ và 16 thanh ghi 32-bit. Một trong những thanh ghi này đóng vai trị là bộ đếm chương trình với 6 bit cao nhất và 2 bit thấp nhất lưu giữ các cờ trạng thái của bộ vi xử lý. Có thể nói ARM2 là bộ vi xử lý 32-bit khả dụng đơn giản nhất trên thế giới, với chỉ gồm 30.000 transistor (so với bộ vi xử lý lâu hơn bốn năm của Motorola là 68000 với khoảng 68.000 transistor). Sự đơn giản như vậy có được nhờ ARM khơng có vi chương trình (mà chiếm khoảng ¼ đến 1/3 trong 68000) và cũng giống như hầu hết
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">các CPU vào thời đó, khơng hề chứa cache. Sự đơn giản này đưa đến đặc điểm tiêu thụ công suất thấp của ARM, mà lại có tính năng tốt hơn cả 286. Thế hệ sau, ARM3, được tạo ra với 4KB cache và có chức năng được cải thiện tốt hơn nữa.
Vào những năm cuối thập niên 80, hãng máy tính Apple Computer bắt đầu hợp tác với Acorn để phát triển các thế hệ lõi ARM mới. Công việc này trở nên quan trọng đến nỗi Acorn nâng nhóm thiết kế trở thành một công ty mới gọi là Advanced RISC Machines. Vì lý do đó bạn thường được giải thích ARM là chữ viết tắt của Advanced RISC Machines thay vì Acorn RISC Machine. Advanced RISC Machines trở thành công ty ARM Limited khi công ty này được đưa ra sàn chứng khoán London và NASDAQ năm 1998.
Kết quả sự hợp tác này là ARM6. Mẫu đầu tiên được công bố vào năm 1991 và Apple đã sử dụng bộ vi xử lý ARM 610 dựa trên ARM6 làm cơ sở cho PDA hiệu Apple Newton. Vào năm 1994, Acorn dùng ARM 610 làm CPU trong các máy vi tính RiscPC của họ.
Trải qua nhiều thế hệ nhưng lõi ARM gần như khơng thay đổi kích thước. ARM2 có 30.000 transistors trong khi ARM6 chỉ tăng lên đến 35.000. Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thể ghép lõi ARM với một số bộ phận tùy chọn nào đó để tạo ra một CPU hoàn chỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn cũ và vẫn tiếp tục tạo ra được sản phẩm với nhiều tính năng mà giá thành vẫn thấp.
Thế hệ thành cơng nhất có lẽ là ARM7TDMI với hàng trăm triệu lõi được sử dụng trong các máy điện thoại di động, hệ thống video game cầm tay, và Sega Dreamcast. Trong khi công ty ARM chỉ tập trung vào việc bán lõi IP, cũng có một số giấy phép tạo ra bộ vi điều khiển dựa trên lõi này.
Dreamcast đưa ra bộ vi xử lý SH4 mà chỉ mượn một số ý tưởng từ ARM (tiêu tán công suất thấp, tập lệnh gọn …) nhưng phần cịn lại thì khác với ARM. Dreamcast cũng tạo ra một chip xử lý âm thanh được thiết kế bởi Yamaha với lõi ARM7. Bên cạnh đó, Gameboy Advance của Nintendo, dùng ARM7TDMI ở tần số 16,78 MHz.
Hãng DEC cũng bán giấy phép về lõi cấu trúc ARM (đôi khi chúng ta có thể bị nhầm lẫn vì họ cũng sản xuất ra DEC Alpha) và sản xuất ra thế hệ Strong ARM. Hoạt động ở tần số 233 MHz mà CPU này chỉ tiêu tốn khoảng 1 watt công suất (những đời
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">sau còn tiêu tốn ít công suất hơn nữa). Sau những kiện tụng, Intel cũng được chấp nhận sản xuất ARM và Intel đã nắm lấy cơ hội này để bổ sung vào thế hệ già cỗi i960 của họ bằng Strong ARM. Từ đó, Intel đã phát triển cho chính họ một sản phẩm chức năng cao gọi tên là Xscale.
Trong đời sống hiện đại ngày nay, quảng cáo là một phần không thể thiếu trong nhịp sống bùng nổ công nghệ thông tin như hiện nay. Ở bất cứ nơi đâu ta cũng bắt gặp những biển quảng cáo từ đơn giản, thủ công cho đến những biển quảng cáo điện tử hiện đại, thẩm mỹ. Đó là những bảng quảng cáo điện tử mà chúng ta gọi là những bảng đèn quang báo. Công nghệ điện tử này còn được sử dụng trong nhiều lĩnh vực như những biển báo giao thông, những bảng điểm trên những sàn giao dịch chứng khoán, hay tại các sân bay, siêu thị... Những bảng quang báo này góp phần làm cho thành phố chúng ta có được một bộ mặt của một thành phố hiện đại và văn minh. Tác dụng của bảng quang báo là khá to lớn và tính kinh tế của việc dùng quảng cáo bằng LED nó tăng tính chú ý và đẹp.
Quảng đóng vai trị quan trọng trong sự phát triển của một công ty, doanh nghiệp hay thậm chí là của một cửa hàng. Quảng cáo tốt sẽ đem lại nhiều lợi ích to lớn. Cũng chính vì vậy mà khơng ngạc nhiên khi hàng năm các doanh nghiệp đã đầu tư rất nhiều vào vấn đề này. Một trong những biện pháp được ưa dùng hiện nay đó là sử dụng bảng quảng cáo bằng đèn LED, vì sự đơn giản, hiện đại, bắt mắt, chi phí hợp lý cũng như tính hiệu quả của nó. Những bảng thơng tin, cổng chào hay những bảng LED quảng cáo với màu sắc sặc sỡ, bắt mắt, gây nhiều chú ý chắc hẳn đã khơng cịn xa lạ đối với người dân, nhất là người dân đô thị.
Quảng cáo bằng đèn LED hiện nay được ứng dụng rất rộng rãi trong nhiều ngành, nhiều lĩnh vực. Nó khơng chỉ giới hạn bởi việc hiển thị các dịng chữ, các biển hiệu nhấp nháy mà cịn có thể hiển thị các hình ảnh đồ họa, các hình ảnh full colour và đặc biệt là có thể hiển thị được cả video. Nó cũng khơng chỉ giới hạn trong việc quảng cáo trong nhà (indoor), bán ngoài trời (semi – outdoor ) mà cịn có thể quảng cáo ở cả ngoài trời, ngay giữa ban ngày với độ sáng và độ sắc nét cao.
Trong những năm gần đây quang báo (bảng diện tử) được phát triển mạnh mẽ với nhiều chủng loại phục vụ cho các mục đích khác nhau.
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Có nhiều IC chuyên dụng được sử dụng làm bảng điện tử cùng với việc kết hợp các cơng nghệ mới như FPGA, CPLD thì bảng điện tử thực sự được phát triển về quy mơ và mức độ kỹ thuật:
- Các loại màn hình Full Color Indoor, Out Door. - Bảng điện tử Led hiển thị số.
- Bảng điện tử Led ma trận một màu. - Bảng điện tử Led ma trận ba màu, đa sắc. - Bảng điện tử hiển thị thông tin Chứng khoán.
- Bảng điện tử hiển thị tỷ giá Ngân hàng, Kết quả xổ số, Nghiệp vụ Bưu điện. - Bảng điện tử hiển thị múi giờ quốc tế.
- Bảng điện tử Led động - Biển vẫy.
- Trang trí nội thất , quán bar bằng công nghệ LED. - Trang trí tịa nhà bằng LED.
Qua tìm hiểu các nguồn thơng tin (mạng internet, thăm dị thị trường, báo chí cơng nghệ,….) em thấy có rất nhiều cơng ty lớn cũng như các công ti vừa và nhỏ thiết kế bảng điện tử với các công nghệ hiện đại và nhu cầu của xã hội là rất lớn.
Trong khuôn khổ đề tài với tính chất học thuật em mạnh dạn đưa ra ứng dụng ARM vào điều khiển bảng điện tử vì những tính năng mạnh ưu việt, tốc độ xử lý và dung lượng nhớ được tích hợp trên nó.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">LPC2103 là vi điều khiển 32 bít hỗ trợ thời gian thực và trace nhúng xây dựng trên cấu trúc của ARM7TDMI-S. LPC2103 có 32kB bộ nhớ flash tốc độ cao, vùng nhớ nội mở rộng tới 128 bit địa chỉ, cấu hình cho phép thực thi các chỉ lệnh 32bit chỉ trong một chu kì xung nhịp. Để tiện cho những ứng dụng nhỏ, LPC2103 hỗ trợ tập lệnh 16 bít thu gọn (Thumb). Với chế độ thu gọn này, kích thước tập lệnh chỉ còn 70% so với tập lệnh 32bit làm cùng chức năng.
Đóng gói 48 chân, sử dụng ít năng lượng, time 32bit, 8 kênh ADC, 9 nguồn ngắt ngồi, LPC2103 thích hợp cho những ứng dụng cơng nghiệp, hóa học, nghiên cứu điều khiển, và cả thương mại.
Hỗ trợ cấu trúc JTAG, ISP, IAP cho phép mở rộng các ứng dụng nhúng.
- Vi điều khiển ARM7TDMI-S 32bit đóng gói 48 chân.
- 8kB SRAM trong chip, 32kB bộ nhớ flash có thể lập trình (chu kì ghi xóa ít nhất là 10.000 lần).
- Bus mở rộng 8/16/32.
- Lập trình ISP/IAP sử dụng chế độ boot loader. Có thẻ xóa một sector hoặc tồn bộ chip trong thời gian 1ms, lập trình ghi 256 bytes trong thời gian 1ms.
- Hỗ trợ chạy mô phỏng thời gian thực ngay trên ứng dụng nhúng (embeddedICE RT).
- 8 kênh ADC 10bit với thời gian chuyển đổi 2,44ms.
- 2 Time 32bit kết nối với 7 kênh capture và 7 kênh compare. - 2 Time 16 bit kết nối với 3 kênh capture và 7 kênh compare.
- Giao diện nối tiếp gồm 2 kênh UART <16C550>, I2C tốc độ cao <400kbits/s>, 2 kênh SPI.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">- Xung nhịp CPU tối đa 60MHz có sẵn nhờ vịng khóa pha trên chip có thể lập trình được (PLL).
- Vector ngắt có địa chỉ truy cập và các mức ưu tiên. - Đến 32 chân xuất nhập đa dụng ở mức điện áp 5V. - Có 13 chân ngắt ngoài theo mức hoặc cạnh.
- Tần số CPU có thể đạt 70MHz thơng qua khả năng lập trình PLL trên chíp với tần số vào từ 10MHz đến 25MHz và thời gian thiết lập là 100 .
- Bộ dao động tích hợp trên chíp hoạt động với dao động thạch anh bên ngoài tần số từ 1MHz đến 25MHz.
- Các chế độ tiết kiệm nguồn Idle, Power down và Pown down với sự kích hoạt của RTC.
- Chức năng sử dụng tối ưu nguồn bằng cách cho phép hoặc không cho phép từng nguồn ngoại vi riêng lẻ.
- Đưa vi điều khiển vào lại chế độ hoạt động bình thường từ chế độ Power down nhờ ngắt ngồi hoặc RTC.
<i><b>2.1.2.1. Tổng quan kiến trúc</b></i>
Bộ xử lí trung tâm (CPU) của LPC2103 ARM7TDMI-S hỗ trợ giao tiếp bus AMBA (Advanced Microcontroller Bus Architecture). Ngoại vi AHB cho phép kết nối tới dải địa chỉ 2MB. Mỗi vùng nhớ AHB có 16kB. Các chức năng ngoại vi của LPC2103 được kết nối tới bus AHB. Các ngoại vi APB cũng cho phép kết nối tới dải địa chỉ 2MB bắt đầu ở điểm 3.5GB. Mỗi ngoại vi APB cũng được định vị đến không gian nhớ 16kB trong không gian nhớ APB.
Sự kết nối ngoại vi đến chân được điều khiển bởi khối kết nối chân. Điều này phải được cấu hình bằng phần mềm tùy theo ứng dụng yêu cầu của người sử dụng.
<i><b>2.1.2.2. Bộ xử lí ARM7TDMI-S</b></i>
ARM7TDMI-S là bộ lí 32bit đa năng có tốc độ thực thi cao, tiêu thụ năng lượng thấp. Kiến trúc ARM dựa trên nguyên lí kiến trúc RISC(Reduced Instruction Set Conputer) với tập lệnh và mã máy đơn giản hơn kiến trúc CISC(Complex Instruction Set Computer).
Kĩ thuật pipeline được sử dụng để bộ xử lí và hệ thống nhớ có thể hoạt động liên tục.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Bộ xử lí ARM7TDMI-S cũng sử dụng chế độ THUM, phù hợp với các ứng dụng tốc độ cao với bộ nhớ hạn chế. Ý tưởng chính của chế độ THUM cung cấp tập lệnh suy giảm. Vậy bộ xử lý ARM7TDMI-S có hai tập lệnh cơ bản:
- Tập lệnh tiêu chuẩn 32bit. - Tập lệnh thum on 16bit THUM.
ARM7 có kiến trúc load-and-store vì vậy để thực hiện bất kỳ câu lệnh xử lý dữ liệu nào đầu tiên dữ liệu phải được chuyển từ bộ nhớ lưu trữ đến tập thanh ghi xử lý của hệ thống. Chỉ lệnh xử lý dữ liệu sẽ được thực thi và sau đó dữ liệu sẽ được lưu dữ trở lại bộ nhớ.
Hình 2.1. Sơ đồ thể hiện thực hiện lệnh ADD của ARM7.
Tập thanh ghi trung tâm bao gồm 16 thanh ghi có độ rộng 32bit ký hiệu từ R0-R15. Các thanh ghi từ R0-R12 là các thanh ghi người sử dụng, chúng không có mục đích đặc biệt nào khác. Các thanh ghi R13-R15 có các chức năng đặc biệt trong CPU:
- R13 là con trỏ dữ liệu SP (stack pointer). - R14 gọi là thanh ghi liên kết LR (link register). - R15 là bộ đếm chương trình PC (program counter).
Nhiều câu lệnh có thể được thực hiện trên các thanh ghi R13-R15 nếu chúng được sử dụng theo tiêu chuẩn thanh ghi người sử dụng.
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Hình 2.2. Mơ tả tập thanh ghi của ARM7.
CPSR (Curent Program Status Register) là thanh ghi trạng thái chương trình. Thanh ghi này chỉ ra kết quả hoạt động xử lý dữ liệu hiện tại, các cờ người sử dụng, thiết lập chế độ hoạt động và cho phép ngắt.
<i><b>2.1.2.3. Hệ thống nhớ flash trên chíp</b></i>
LPC2103 tích hợp 32kB bộ nhớ flash trên chip. Bộ nhớ này được sử dụng để lưu trữ chương trình và dữ liệu. chương trình của bộ nhớ có thể được nạp theo các cách sau:
- Sử dụng giao diện JTAG truyền nối tiếp. - Sử dụng ISP và UART.
- Sử dụng khả năng IAP.
Chương trình ứng dụng sử dụng chức năng IAP có thể xóa và lập trình bộ nhớ flash trong khi ứng dụng đang chạy, cung cấp sự mềm dẻo trong việc lưu trữ dữ liệu và phát triển chương trình.
Bộ nhớ flash của LPC2103 cung cấp tối thiểu 100.000 chu kì ghi đọc và có khả năng duy trì dữ liệu trong 20 năm.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"><i><b>2.1.2.4. Hệ thống nhớ SRAM trên chíp</b></i>
Hệ thống nhớ SRAM trên chíp có thể được sử dụng cho việc lưu trữ mã và dữ liệu. SRAM có thể được truy nhập theo 8bit, 16bit và 32bit. LPC2103 có 8kB SRAM trên chíp.
SRAM của LPC2103 được thiết kế để quản lý bộ nhớ theo byte.
SRAM sử dụng điều khiển phối hợp bộ đệm phản hồi để ngăn CPU vào tình trạng treo vi điều khiển khi truy cập dữ liệu ngược. Bộ đệm phản hồi luôn giữ giá trị cuối của phần mềm vào SRAM. Dữ liệu này chỉ được ghi vào SRAM khi phần mềm yêu cầu quá trình ghi nhận khác. Nếu quá trình Reset xảy ra, thanh ghi SRAM sẽ không phản ánh đúng giá trị ghi vào SRAM ngay trước khi Reset hệ thống. Muốn truy cập đúng dữ liệu, phần mềm cần đưa ra đúng mã nhận dạng. Vì thế, trước khi vào chế độ Idle hay Power- down, giá trị này được ghi vào bộ nhớ đệm<dummy> để sau khi Reset, sẽ truy cập đúng giá trị mong muốn.
- Điều khiển trong công nghiệp. - Hệ thống y tế.
- Cổng thông tin, truyền thông đa phương tiện. - Mục đích học thuật, nghiên cứu ứng dụng.
<b>- Các mục đích đa dụng khác.</b>
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Hình 2.3. Sơ đồ khối của LPC2103.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Vùng bus ngoại vi AHB/VPB không được định nghĩa. Bảng mô tả chức năng các chân của LPC2103
Bảng 2.1. Mô tả các chân chức năng của ARM LPC2103
từng bit. Hoạt động của các chân Port0 phụ thuộc vào chức năng từng chân được chọn thông qua khối kết nối chân (Pin Connect Block).
Chú ý chân P0.31 chỉ được phép cấu hình là chân ra.
MAT3.1 <sup>13</sup> <sup>I/O P0.0 chân vào ra đa dụng.</sup>O TXD0 ngõ ra của UART0.
MAT3.2 <sup>14</sup> <sup>I/O P1.0 chân vào ra đa dụng.</sup>I Ngõ vào UART0.
CAP0.1 <sup>22</sup> <sup>I/O P0.4 ngõ vào/ra đa dụng.</sup>I/O Ngõ xung clock cho SPI0. Ngõ ra clock SPI của master hoặc ngõ vào clock của slave.
MAT0.1 <sup>23</sup> <sup>I/O P0.5 ngõ vào ra đa dụng.</sup>I/O MISO ngõ vào ra dữ liệu SPI0. Ngõ vào của master hoặc ngõ ra của slave.
I/O MAT0.1 ngõ ra PWM kênh 1 của time0. P0.6/MOSI/
CAP0.2 <sup>24</sup> <sup>I/O P0.6 ngõ vào ra đa dụng.</sup>I/O MISO0 ngõ dữ liệu cho SPI0. Ngõ ra của master hoặc ngõ vào của slave.
MAT2.0 <sup>28</sup> <sup>I/O P0.7 ngõ vào ra đa dụng.</sup>I SSEL0 lựa chọn slave cho SPI0.
MAT2.1 <sup>29</sup> <sup>I/O P0.8 ngõ vào ra đa dụng.</sup>O TXD1 ngõ ra của UART1.
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">O MAT2.2 ngõ ra PWM kênh 2 time2. P0.9/RXD1/
MAT2.2 <sup>30</sup> <sup>I/O P0.9 ngõ vào ra đa dụng.</sup>I RXD1 ngõ vào UART1.
CAP1.0/AD0.3 <sup>35</sup> <sup>I/O P0.10 ngõ vào ra đa dụng.</sup>O RTS1 ngõ ra để gửi dữ liệu đối với UART1.
CAP1.1/AD0.4 <sup>36</sup> <sup>I/O P0.11 ngõ vào ra đa dụng.</sup>I CTS1 đồng bộ để nhân dữ liệu của bộ UART1.
MAT1.0/AD0.5 <sup>37</sup> <sup>I/O P0.12 ngõ vào ra đa dụng.</sup>I DSR1 đầu vào thiết lập sẵn sàng nhận dữ liệu của UART1.
SCK1/EINT1 <sup>44</sup> <sup>I/O P0.14 ngõ vào ra đa dụng.</sup>I DCD1 phát hiện dữ liệu vào của UART1. I/O SCK1 xung clock nối tiếp cho SPI1.
EINT2 <sup>45</sup> <sup>I/O P0.15 ngõ vào ra đa dụng.</sup>I RI1 dùng cho UART1.
MAT0.2 <sup>46</sup> <sup>I/O P0.16 ngõ vào ra đa dụng.</sup>I EINT0 ngõ vào ngắt ngoài 0.
SCL1 <sup>47</sup> <sup>I/O P0.17 ngõ vào ra đa dụng.</sup>I CAP1.2 ngõ vào capture kênh 2 timer 1. I/O SCL1 xung clock cho I2C1.
SDA1 <sup>48</sup> <sup>I/O P0.18 ngõ vào ra đa dụng.</sup>I CAP1.3 ngõ vào capture kênh 3 timer1. I/O SDA1 ngõ dữ liệu cho I2C.
MISO1 <sup>1</sup> <sup>I/O P0.19 ngõ vào ra đa dụng.</sup>O MAT1.2 ngõ ra PWM kênh 2 timer1. I/O MISO1 ngõ dữ liệu của SPI1.
MOSI1 <sup>2</sup> <sup>I/O P0.20 ngõ vào ra đa dụng.</sup>O MAT1.3 ngõ ra PWM kênh 3 timer1. I/O MOSI1 ngõ dữ liệu của SPI1.
MAT3.0 <sup>3</sup> <sup>I/O P0.21 ngõ vào ra đa dụng.</sup>I SSEL1 chân chọn SPI1.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">O MAT3.0 ngõ ra PWM kênh 0 timer3
CAP2.0 <sup>8</sup> <sup>I/O P0.27 ngõ vào ra đa dụng.</sup>I TRST kiểm tra reset cho giao diện JTAG.
CAP2.1 <sup>9</sup> <sup>I/O P0.28 ngõ vào ra đa dụng.</sup>I TMS lựa chọn chế độ cho giao diện JTAG.
CAP2.2 <sup>10</sup> <sup>I/O P0.29 ngõ vào ra đa dụng.</sup>I TCK kiểm tra JTAG cho giao diện JTAG.
MAT3.3 <sup>15</sup> <sup>I/O P0.30 ngõ vào ra đa dụng.</sup>I TDI kiểm tra dữ liệu cho giao diện JTAG.
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Khối điều khiển hệ thống có một số chức năng và thanh ghi có quan hệ với một số thiết bị ngoại vi:
Bảng 2.2. Các chân chức năng điều khiển hệ thống
hệ thống từ các chế độ tiết kiệm nguồn(powerdown hoặc Idle) + P0.1 và P0.16 có thể được chọn để thực hiên chức năng này.
+ Mức thấp trên các chân này ngay sau khi Reset ngồi sẽ cấu hình cho phần cứng ngoài yêu cầu vào ISP.
Các chân P0.3 và P0.14 thực hiên chức năng này
+ Các chân P0.3 và P0.14 thực hiện chức năng này
+ Các chân P0.7 và P0.15 thực hiện chức năng này
chế độ reset: các ngoại vi vào trạng thái mặc định, vi xử lý bắt đầu từ địa chỉ 0x00000000.
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Ngắt ngoài
EXTMODE Thanh ghi định chế độ
Điều khiển phân vùng bộ nhớ
Điều khiển nguồn
Bộ chia bus ngoại vi VPB
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">Cấu hình trên chip cho phép chọn dao động tần số từ 1MHz-30MHz. Thường gặp dạng nguồn dao động ngồi như hình vẽ dưới:
LPC2103 có 3 ngõ vào ngắt ngoài được chọn trên các chân chức năng. Các chân chứ năng này có thể được chọn để wakeup hệ thống khi vi xử lý đang ở chế độ tiết kiệm nguồn.
<i><b>2.2.5.1. Khái quát các thanh ghi</b></i>
Chứa năng ngắt ngồi dùng 4 thanh ghi đi kèm với nó. Thanh ghi EXINT chứa cờ ngắt và thanh ghi EXTWAKEUP chứa bit cho phép từng ngắt ngồi có thể wakeup
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">hệ thống từ chế độ power down. Thanh ghi EXTMODE và EXTPOLAR cho biết các thông số ngắt mức cạnh.
Bảng 2.4. Các thanh ghi ngắt ngoài
0xE01FC140 EXTINT <sup>Thanh ghi cờ ngắt ngoài chứa các cờ</sup>ngắt ngoài cho EINT0, EINT1, và
0xE01FC144 EXTWAKE <sup>Thanh ghi Wakeup ngắt ngoài chứa 3</sup>bit cho phép điều khiển mỗi nguồn ngắt ngồi có thể là nguồn để wakeup hệ thống khi vi xử lý đang trong chế độ Power down.
0xE01FC148 EXTMODE Thanh ghi chọn chế độ ngắt ngoài là
0xE01FC14C EXTPOLAR Thanh ghi phân cực ngắt ngoài: điều khiển ngắt trên mỗi chân là cạnh hay mức.
<i><b>2.2.5.2. Thanh ghi chứa các cờ ngắt ngoài ( EXINT-0xE01FC140)</b></i>
Khi ngõ vào ngắt ngoài được chọn, sự thay đổi mức (hoặc cạnh) trên chân chức năng tương ứng sẽ tạo ra cờ ngắt trên thanh ghi ngắt ngoài. Cờ ngắt này sẽ được đáp ứng bởi vector ngắt (VIC) tương ứng.
Ghi “1” vào các bit EINT0 đến EINT3 trên thanh ghi EXTINT sẽ xóa các bit đáp ứng. Nếu ở chế độ ngắt mức, việc ghi các bit này sẽ có tác động chỉ khi các chân ngắt ngồi tương ứng đang ở trạng thái khơng tích cực.
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">Bảng 2.5. Thanh ghi cờ ngắt ngoài
EINT0 được chọn và chân tương ứng của nó lên mức tích cực (P0.1 và P0.16).
+ Ngắt cạnh EINT0=1 nếu chức năng EINT0 được chọn và chân chức năng của nó chuyển mức (cạnh lên hoặc cạnh xuống) Bit này được xóa bằng cách gán cho nó giá
<i><b>2.2.5.3. Thanh ghi thiết lập chức năng wakeup dùng ngắt ngoài (EXTWAKEUP-0xE01FC144)</b></i>
Bảng 2.6. Thanh ghi wakeup ngắt ngoài
ngoài EINT0 sẽ wave up vi xử lý từ chế độ Power down.
<i><b>2.2.5.4. Thanh ghi thiết lập các chế độ ngắt ngoài (EXTMODE-0x01FC148)</b></i>
Các bit trên thanh ghi này cho phép đặt chế độ ngắt ngoài là ngắt cạnh hay ngắt mức. Chỉ có các chân được cấu hình cho phép ngắt ngồi và được cho phép bởi thanh ghi ngắt tồn cục VICIntEnable mới có thể thực hiện chức năng ngắt ngoài.
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Phần mềm lập trình chỉ nên thay đổi bit trong thanh ghi này khi các ngắt đã được cấm bởi thanh ghi VICIntEnable và nên gán bit tương ứng trong thanh ghi EXTINT bằng ‘1’ trước khi cho phép hoặc thay đổi chế độ hoạt động.
Bảng 2.7. Thanh ghi thiết lập chế độ ngắt ngồi
chọn tích cực mức.
+ Bit 1 ngắt ngồi EINT0 chế độ tích cực cạnh.
<i><b>2.2.5.5. Thanh ghi thiết lập cực tính cho chế độ ngắt ngoài (EXTPOLAR-0xE01FC14C)</b></i>
Nếu là ngắt mức, các bit của thanh ghi này xác định ngắt khi chân chức năng tương ứng xảy ra ngắt khi ở mức cao hay mức thấp.
Nếu là ngắt cạnh, các bit của thanh ghi này xác định là sẽ xảy ra ngắt khi tác động cạnh lên hay cạnh xuống ở chân chức năng tương ứng.
Chương trình phần mềm chỉ có thể can thiệp vào các bit trên thanh ghi này bằng cách vơ hiệu hóa ngắt ở thanh ghi VICIntEnable và ghi ‘1’ vào bit EXTINT trước khi xóa bit EXTINT để có thể thay đổi cực tính cho chế độ hoạt động.
Bảng 2.8. Thanh ghi thiết lập cực tính cho ngắt ngoài
ngắt khi ở mức thấp hoặc tác động cạnh xuống (được định nghĩa bởi EXTMODE0).
+ EXTPOLAR0=1, EXNT0 xảy ra ngắt khi ở mức cao hoặc tác động cạnh lên (được định nghĩa bởi
EXTMODE1.
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">2 EXTPOLAR2 Tương tự với EXTPOLAR2 và EXTMODE2.
<i><b>2.2.5.6. Kết hợp nhiều chân ngắt ngồi cho cùng nguồn ngắt</b></i>
Phần mềm có thể chọn nhiều chân phục vụ cho 1 nguồn ngắt từ EINT0:2 trong khối thanh ghi chọn chân (Pin Select block).
Ở chế độ tích cực mức thấp, trạng thái của tất cả các chân chọn trong EINT sẽ sử dụng logic AND.
Ở chế độ tích cực mức cao, trạng thái của tất cả các chân chọn trong EINT sẽ sử dụng logic OR.
Ở chế độ ngắt cạnh, không cần để ý tới cực tính (ngắt cạnh lên hoặc cạnh xuống), chân sử dụng sẽ là GPIO (chân xuất nhập đa dụng) thấp nhất (nếu chọn nhiều chân kết hợp ngắt cạnh có thể gây lỗi chương trình).
Hình 2.7. Chọn chế độ cho các ngắt ngồi.
PLL hoạt động với tần số dao động từ 1-25MHz. Ngõ vào tần số được nhân vào CCLK trong tầm từ 10MHz đến 60MHz sử dụng máy dao động điều khiển hiện tại (Current Controlled Oscillator-CCO). Giá trị nhân vào có thể trong phạm vi từ 1 đến 32 (số nguyên) <thật ra, với LPC2103, hệ số này nhỏ hơn 6 vì bị giới hạn ngưỡng
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">trên của tần số dao động> CCO hoạt động trong tầm tần số từ 156MHz đến 320MHz, bởi vậy, có thêm một bộ chia trong vòng (loop) để giữ giá trị CCO trong tầm giới hạn tần số khi PLL tạo tần số dao động mong muốn. Bộ chia ngoài có các số chia là 2, 4, 8, 16 để tạo tín hiệu xung nhịp ngõ ra.
Nếu số chia là 2, nó đảm bảo rằng tín hiệu ngõ ra của PLL có độ gợn 50%. Hoạt động của PLL được điều khiển bởi thanh ghi PLLCFG. Có 2 thanh ghi được bảo vệ để chống lại sự cố xảy ra do thay đổi các thông số của PLL hoặc PLL khơng hoạt động.Vì tất cả các thành phần trên chip, kể cả đồng hồ Watchdog, đều phụ thuộc vào PLL khi nó cung cấp xung nhịp cho chip, các sự cố xảy ra với PLL có thể gây ra các hoạt động không mong muốn trên vi điều khiển. Chức năng bảo vệ của PLL được thực hiện bằng cách cập nhật giá trị liên tục giống như đồng hồ Watchdog. PLL không hoạt động khi chip Reset hoặc vào chế độ Power Down. PLL chỉ hoạt động khi người lập trình cho phép. Chương trình lập trình phải định cấu hình cho PLL, cho nó hoạt động, chờ PLL khóa pha, sau đó xem PLL như là nguồn xung nhịp.
<i><b>2.2.6.1. Miêu tả thanh ghi</b></i>
PLL được điều khiển bằng các thanh ghi trong bảng dưới đây.
Lưu ý rằng việc thiết đặt các giá trị PLL khơng phù hợp có thể làm thiết bị hoạt động sai.
<b>Bảng 2.9. Các thanh ghi điều khiển vịng khóa pha</b>
này giữ giá trị để cập nhật các bit điều khiển PLL. Giá trị ghi vào thanh ghi này sẽ có tác dụng khi xảy ra quá trình cập nhật giá tri PLL mới hợp lệ.
này giữ giá trị để cập nhật các bit điều khiển PLL. Giá trị ghi vào thanh ghi này sẽ có tác dụng khi xảy ra q trình cập nhật giá trị PLL mới hợp lệ.
Đọc/ghi
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">0xE01FC088 PLLSTAT Thanh ghi trạng thái PLL. Đọc ngược giá trị của thanh ghi này để biết thông tin điều khiển và cấu hình của PLL. Nếu thanh ghi PLLCON hoặc PLLCFG đã được ghi giá trị mới, nhưng q trình cập nhật PLL liên tục(feed) khơng xảy ra, nó sẽ khơng ảnh hưởng tới trạng thái PLL hiện tại. Đọc giá trị của thanh ghi này sẽ cho biết giá trị thật sự điều khiển PLL hoặc trạng thái thật sự của PLL trong thời điểm đó.
Chỉ đọc
ăn-feed) giá trị thanh ghi PLL. Feed Register. Thanh ghi này cho phép load các thông tin về điều khiển và cấu hình của thanh ghi PLLCON và PLLCFG vào thanh ghi phụ (shadow) có ảnh hưởng trực tiếp lên hoạt động của PLL.
Chỉ ghi
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">Giản đồ khối của vịng khóa pha PLL:
Hình 2.8. Giản đồ khối PLL.
<i><b>2.2.6.2. Thanh ghi điều khiển PLL</b></i>
Thanh ghi điều kiển PLL chứa các bit cho phép và kết nối PLL. Cho phép PLL để nó thử khóa các giá trị thiết lập hiện tại của bộ chia và nhân tần số. Kết nối PLL để vi xử lý hoạt động nhờ xung nhịp ngõ ra của PLL. Sự thay đổi của thanh ghi PLL không ảnh hưởng hệ thống tới khi quá trình cập nhật giá trị tuần tự liên tục diễn ra đúng.
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34"><b>Bảng 2.10. Thanh ghi điều khiển PLL</b>
0 PLLE <sup>Cho phép PLL Enable. Khi PLLE=’1’ và</sup>sau khi quá trình cập nhật giá trị PLL hợp lệ, bit này sẽ cho phép PLL để nó khóa giá trị tần số yêu cầu. Xem thêm ở thanh ghi PLLSTAT.
Kết nối PLL. Khi [PLLC,PLLE]=‘11’, sau khi quá trình cập nhật giá trị PLL diễn ra hợp lệ, ngõ ra xung nhịp của PLL được chọn là xung nhịp của hệ thống. Ngược lại, xung nhịp của nguồn dao động là xung nhịp của hệ thống.
PLL phải được thiết đặt, cho phép, và thiết lập khóa (tạo được tần số dao động ổn định) trước khi nó có thể thành nguồn xung nhịp hệ thống. khi chuyển từ tần số dao động ngoài thành xung nhịp PLL hoặc ngược lại, mạch dao động nội được vận hành để đảm bảo rằng không tạo ra các glitches. Phần cứng thì khơng đảm bảo rằng PLL được khóa (dao động ổn định với tần số mong muốn) trước khi kết nối hay sẽ tự động không kết nối khi tần số dao động không ổn định. Nếu xảy ra lỗi trên xung nhịp PLL khi đang hoạt động, kết quả giống như xung nhịp máy tạo dao động không ổn định và việc không kết nối PLL sẽ phải bắt buộc trong trường hợp này.
<i><b>2.2.6.3. Thanh ghi tạo cấu hình PLL (PLLCFG-0xE01FC084)</b></i>
Thanh ghi PLLCFG chứa các giá trị của bộ nhân và chia của PLL. Sự thay đổi giá trị của thanh ghi này chỉ có tác dụng khi mà việc cập nhật giá trị PLL mới đã diễn ra hợp lệ.
<b>Bảng 2.11. Thanh ghi tạo cấu hình cho PLL</b>
value. Đưa ra giá trị "M" ở phép tính
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">6:5 PSEL1:0 Giá trị bộ chia của PLL. Multiplier value. Đưa ra giá trị "P" ở phép tính tần
<i><b>2.2.6.4. Thanh ghi trạng thái PLL (PLLSTAT-0xE01FC088)</b></i>
Thanh ghi chỉ đọc này cho ta các giá trị thơng số của PLL có tác động ngay thời điểm đọc.
Bảng 2.12. Thanh ghi trạng thái PLL
Giá trị bit cho phép PLL hiện tại. + PLLE=’1’: PLL đang sử dụng.
+ PLLE=’0’: PLL không được sử dụng. Bit này sẽ tự động xóa khi vào chế độ và được kết nối vào nguồn xung nhịp. + PLLC-PLLE≠’11’: PLL không được sử dụng, nguồn dao động lúc này lấy từ xung nhịp ngồi. Bit này sẽ tự động xóa khi vào chế độ Power Down.
10 PLOCK <sup>Bit cho biết trạng thái khóa của PLL.</sup>+ PLOCK=’1’: PLL đã hoạt động ổn định tại tần số mong muốn.
+ PLOCK=’0’: PLL chưa hoạt động ổn định tại tần số mong muốn.
Bit PLOCK trên thanh ghi PLLSTAT được nối với bộ điều khiển ngắt. nó cho phép chương trình phần mềm tích cực PLL và tiếp tục thực hiện các chức năng khác mà không cần đợi PLL xác lập tại tần số mong muốn. Khi ngắt xảy ra (PLOCK=’1’), PLL có thể được kết nối, và không cho phép ngắt.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36"><i><b>2.2.6.6. Thanh ghi cập nhật giá trị PLL liên tục (PLLFEED-0xE01FC08C)</b></i>
Giá trị cập nhật liên tục phải được ghi vào các thanh ghi PLLFEED nhằm mục đích các thay đổi ở PLLCON và PLLCFG diễn ra, quá trình cập nhật giá trị ấy bao gồm:
a. PLLFEED=0xAA b. PLLFEED=0x55
Phải thực hiện đúng trình tự cập nhật giá trị như trên, và phải trong các chu kì xung nhịp liên tục. Điều cần lưu ý nữa là các ngắt trong quá trình cập nhật liên tiếp giá trị cho PLL đều không được phép xảy ra. Nếu 1 trong 2 giá trị cập nhật là không đúng, hoặc 1 trong những lưu ý không được tuân thủ nghiêm ngặt, những thay đổi trên thanh ghi PLLCON hoặc PLLCFG sẽ khơng có tác dụng.
<b>Bảng 2.14. Thanh ghi cập nhật giá trị PLL</b>
nhật liên tục PLL phải được ghi vào thanh ghi này để sự thay đổi cấu hình và điều khiển thanh ghi PLL có tác dụng.
Không xác định
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37"><i><b>2.2.6.7. PLL và chế độ Power Down</b></i>
Chế độ Power Down sẽ tự động tắt và không kết nối PLL. Wakeup từ Power Down không tự động cập nhật lại các giá trị thiết đặt của PLL. Điều đó phải được làm bằng chương trình phần mềm.Bởi vây, cần có chương trình gọi ngay PLL khi các ngắt làm cho hệ thống WakeUp từ Power Down, lưu ý là không được dùng các thông số sẵn có trên PLL trước khi vào Power Down, vì nó đã mất đi hoặc tùy định.
<i><b>2.2.6.8. Tính tốn tần số dao động của PLL</b></i>
Các thơng số đáng chú ý:
Fosc: Tần số dao động của tinh thể.
Fcco: Tần số của máy dao động được điều khiển hiện tại. CCLK: Ngõ ra PLL (chu kì xung nhioj của hệ thống).
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">LPC2103 có 2 chế độ tiết kiệm nguồn: Idle và Power Down:
- Trong chế độ Idle, tất cả các chỉ lệnh đều trì hỗn tới khi q trình Reset xảy ra, ngoại vi vẫn hoạt động trong chế độ Idle và có thể sinh ra ngắt để đưa hệ thống trở lại hoạt động bình thường.
- Trong chế độ Power Down, xung nhịp hệ thống khơng cịn hoạt động, các chân ngoại vi ở trạng thái tĩnh. Năng lượng tiêu thụ gần như bằng 0. Có thể phục hồi hệ thống từ Power Down bằng cách Reset hoặc ngắt ngoài.
Chức năng điều khiển nguồn cho ngoại vi cho phép từng chân ngoại vi riêng biệt hoạt động, hoặc không hoạt động, và hệ thống sẽ tiết kiệm năng lượng hơn nữa.
<i><b>2.2.7.1. Diễn tả thanh ghi</b></i>
<b>Bảng 2.16. Các thanh ghi điều khiển nguồn</b>
0xE01FC0C0 PCON <sup>Thanh ghi điều khiển nguồn. Thanh ghi này</sup>chứa các bit điều khiển để vận hành 1 trong
0xE01FC0C4 PCONP <sup>Thanh ghi điều khiển nguồn cho ngoại vi.</sup>Thanh ghi này chứa các bit điều khiển để cho phép/không cho phép từng chức năng riêng biệt của ngoại vi.
Đọc/Ghi
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39"><i><b>2.2.7.2. Thanh ghi điều khiển nguồn (PCON-0xE01FC0C0)</b></i>
Thanh ghi này chứa 2 bit: IDL và PD.
<b>Bảng 2.17. Thanh ghi điều khiển nguồn PCON</b>
0 IDL <sup>Chế độ Idle. Khi IDL=’1’, một số chân ngoại vi</sup>vẫn còn hoạt động, nguồn ngắt ngoài hoặc Reset ngoài được sử dụng để phục hồi lại trạng thái hoạt động.
1 PD <sup>Chế độ Power Down. Khi PD=’1’ sẽ làm cho</sup>tất cả các dao động trong chip dừng hẳn, điều khiển wakeup sẽ làm cho hệ thống khởi động lại, xóa PD và phục hồi các lệnh.
<i><b>2.2.7.3. Thanh ghi điều khiển nguồn cho ngoại vi (PCONP-0xE01FC0C4)</b></i>
<b>Bảng 2.18. Thanh ghi điều khiển nguồn cho ngoại vi</b>
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">10 PCSPI1 Tương tự với giao tiếp SPI1. 1
Có 2 nguồn tạo reset hệ thống: trên chân RESET <Reset ngoài> và từ đồng hồ Watchdog <Reset trong>. Tín hiệu Reset hợp lý sẽ khởi động đồng hồ Wakeup Timer. Với quá trình POR, chân Reset cần phải giữ mức trong vịng 10ms, với q trình Reset ngồi bình thường khi MCU đang hoạt động, chỉ cần 300ns.
Sau quá trình Reset, vi xử lý bắt đầu thực thi lệnh tại vùng địa chỉ 0x0000 0000. Vector ngắt được định vùng địa chỉ ở khối Boot, giá trị của các thanh ghi được khởi tạo ở những giá trị định nghĩa trước.
Quá trình Reset ngồi và reset trong <Watchdog Timer> có chút ít khác biệt, đó là do thời điểm Reset ngồi ta hồn tồn biết được, cịn Reset trong ta khơng biết khi nào thì nó xảy ra. Bởi vậy, với q trình Reset ngồi, ta có thể chủ động đưa nó vào các chế độ hoạt động mong muốn bằng cách kết nối ngoại vi, và phần mềm.
Hình 2.9. Giản đồ khối reset bao gồm cả đồng hồ Wakeup
</div>