Chương 2 CƠ SỞ LÝ THUYẾT
2.4 VI ĐIỀU KHIỂN DSPIC30F4013
2.4.3 Cấu trúc của vi điều khiển dsPIC30F4013
Hình 2.10: Sơ đồ chân vi điều khiển dsPIC30F4013.
a. Khối xử lý trung tâm CPU
CPU của dsPic30F4013 được thiết kế trên kiến trúc RISC, nhân của CPU có một bộ xử lí lệnh 24-bit và bộ đếm chương trình – Program Counter (PC) độ rộng 23-bit với bit ý nghĩa thấp nhất ln bằng 0, cịn bít ý nghĩa cao nhất thì được bỏ qua trong suốt quá trình thực hiện chương trình bình thường, chỉ trừ khi thực hiện các lệnh đặc biệt. Do đó, bộ đếm chương trình có thể định địa chỉ lên tới 4 triệu từ lệnh của khơng gian bộ nhớ chương trình được sử dụng.
Vi điều khiển dsPIC30F chứa 16 thanh ghi làm việc 16-bit. Mỗi thanh ghi làm việc có thể có thể làm việc với vai trị như dữ liệu, địa chỉ hoặc thanh ghi địa chỉ offset. Thanh ghi thứ 16 (W15) hoạt động như là con trỏ ngăn xếp mềm cho hoạt động ngắt và gọi ngắt.
Có hai cách để truy xuất dữ liệu trong bộ nhớ chương trình đó là:
- 32 Kbytes cao của vùng nhớ dữ liệu có thể được sắp xếp trong nửa thấp của khơng gian chương trình tại biên của 16K từ chương trình bất kỳ, được định nghĩa bởi thanh ghi PSVPAG 8-bit (Program Space Visibility Page). Do đó các lệnh có thể truy cập khơng gian chương trình như khơng gian dữ liệu, nhưng có một giới hạn là nó cần thêm một chu kỳ lệnh nữa. Chỉ có 16 bít thấp của mỗi từ lệnh có thể sử dụng phương thức truy cập này [10].
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 18 - Truy cập trực tiếp khơng tuyến tính của các trang 32K từ nằm trong khơng gian chương trình cũng có thể sử dụng các thanh ghi làm việc, thông qua bảng lệnh đọc và ghi. Bảng lệnh đọc và ghi có thể được sử dụng để truy cập cả 24 bit của một từ lệnh.
Hình 2.11: Các thanh ghi của bộ xử lý trung tâm.
Với tất cả các lệnh, nhân của dsPIC30F có khả năng thực hiện việc đọc bộ nhớ dữ liệu hoặc bộ nhớ chương trình, đọc thanh ghi làm việc, ghi vào thanh ghi làm việc và đọc bộ nhớ chương trình mỗi chu kì lệnh. Như vậy, lệnh 3 toán hạng được hỗ trợ, cho phép thực hiện phép tính C = A + B trong một chu kì lệnh.
Cơng cụ DSP được tích hợp vào vi xử lý làm tăng ý nghĩa của một CPU mạnh về thuật toán. Đặc điểm của nó là thực hiện ở tốc độ cao một phép nhân hai số 17-bit, một khối số học và logic (ALU) 40-bit, hai thanh chứa có khả năng bão hồ 40-bit và một bộ dịch hai hướng 40-bit. Dữ liệu trong thanh chứa hoặc bất kỳ một thanh ghi làm việc nào có thể được dịch trái 15 bit hay dịch trái 16 bit chỉ trong một chu kỳ lệnh. Các lệnh DSP hoạt động thống nhất với tất cả các lệnh khác và được thiết kế nhằm thích hợp với việc xử lý thời gian thực.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 19
b. Các cổng vào ra I/O port
Hình 2.12: Sơ đồ khối 1 cổng I/O dùng chung với ngoại vi khác.
Các cổng vào ra của dsPIC30F4013 đều có thiết kế có đầu vào là mạch Trigger Schmitt nhằm cải tiến khả năng chống nhiễu. Tất cả các cổng vào ra đều có ba thanh ghi kết hợp với nhau điều khiển trực tiếp hoạt động của các cổng.
- Thanh ghi dữ liệu trực tiếp (TRISx) xác định cổng đó là Input hay Output. Nếu bit dữ liệu trực tiếp là ‘1’, thì cổng đó là Input và ngược lại. Các cổng được định nghĩa là Input sau khi Reset.
- Thanh ghi cổng (PORT registers): dữ liệu ở một cổng I/O được truy xuất thông qua thanh ghi PORTx. Đọc giá trị của thanh ghi PORT cổng nào sẽ có được giá trị của cổng đó. Ghi vào thanh ghi PORT của cổng tương đương việc xuất dữ liệu ra cổng đó.
- Thanh ghi LAT, kết hợp với một cổng I/O sẽ loại bỏ được các vấn đề có thể xuất hiện khi đọc-thay đổi-ghi vào cổng đó. Đọc giá trị thanh ghi LAT sẽ trả về giá trị được giữ ở đầu ra của bộ chốt cổng đó, thay cho giá trị ở cổng I/O. Việc ghi vào thanh ghi LATx cũng tạo ra hiệu quả như ghi vào thanh ghi PORTx.
Cấu hình tương tự cho cổng: khi sử dụng bộ ADC thì cổng được cấu hình là lối vào tương tự. Điều này sẽ được nói kĩ hơn ở phần miêu tả ADC.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20
c. Truyền nhận không đồng bộ (UART Module)
Tổng quan về UART
- Hai chế độ giao tiếp là 8-bit và 9-bit. - Parity chẳn, lẻ hoặc khơng có parity. - Một hoặc hai bit stop.
- Baud rate với 16-bit prescaler.
- Tốc độ baud trong khoảng 38bps đến 1.875Mbps. - Truyền và nhận mảng với độ dài 4-word.
- Hai cổng UART.
Hình 2.13: Sơ đồ khối truyền UART.
Các bước thiết lập truyền UART:
- Setup UART: chọn độ dài, parity, số của bit stop, cho phép ngắt, setup thanh ghi UxMODE và UxSTA và chọn tốc độ baud thích hợp ghi vào thanh ghi UxBRG.
- Enable UART bằng cách setup bit UARTEN. - Thiết lập bit UTXEN cho phép truyền.
- Ghi dữ liệu cần chuyển đến các thanh ghi chức năng để chuẩn bị cho quá trình chuyển dữ liệu.
- Một truyền ngắt sẽ được tạo ra , tùy thuộc vào giá trị của UTXISEL kiểm soát chút ngắt ( UxSTA < 15> ).
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21
Hình 2.14: Sơ đồ khối nhận UART.
Các bước thiết lập nhận UART:
- Thiết lập UART. - Enable UART.
- Nhận được ngắt sẽ được tạo ra khi một hoặc nhiều từ dữ liệu đã được nhận, tùy thuộc vào các thiết lập ngắt nhận được chỉ định bởi các bit URXISEL.
- Đọc bit OERR để xác định nếu có lỗi tràn đã xảy ra. Các bit OERR phải được thiết lập lại trong phần mềm.
- Đọc dữ liệu nhận được từ UxRXREG. Và các giá trị PERR và FERR sẽ được cập nhật.
d. Bộ chuyển đổi tương tự số ADC
Vi điều khiển dsPic30F4013 cung cấp bộ chuyển đổi tương tự số 12-bit cho phép biến đổi tín hiệu tương tự đầu vào sang số độ dài 12-bit. Module này dựa trên thanh ghi SAR (Successive Approximation Register – thanh ghi xấp xỉ) và cung cấp
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22 tốc độ lấy mẫu tối đa lên tới 200 ksps. ADC của dsPic30F4013 có tới 13 kênh tương tự lối vào được kết hợp cả lấy mẫu và giữ mẫu. Bộ biến đổi ADC của dsPIC bao gồm 6 thanh ghi:
Hình 2.15: Sơ đồ khối cơ bản của ADC 12-bit.
Bộ đệm kết quả biến đổi A/D
Module ADC sử dụng RAM để làm bộ đệm lưu kết quả biến đổi A/D. Có tất cả 16 vị trí trong RAM được sử dụng để làm việc này, đó là: ADCBUF0, ADCBUF1, ADCBUF2, ..., ADCBUFE, ADCBUFF. RAM chỉ có độ rộng 12-bit nhưng dữ liệu chứa trong nó lại là một trong bốn dạng số 16-bit đó là: nguyên, nguyên có dấu, phân số, và phân số có dấu [10].
Các bước thực hiện biến đổi A/D
a) Thiết lập cấu hình cho module A/D
- Cấu hình các chân là lối vào tương tự, điện thế chuẩn và vào ra số. - Chọn các kênh lối vào cần biến đổi.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 23 - Cho phép module ADC có thể hoạt động.
b) Cấu hình cho ngắt ADC nếu cần - Xóa cờ ngắt ADIF.
- Lựa chọn mức ưu tiên ngắt cho biến đổi A/D. c) Bắt đầu lấy mẫu
d) Đợi đủ thời gian cần thiết để hoàn thành e) Kết thúc lấy mẫu, bắt đầu biến đổi
f) Đợi biến đổi kết thúc bởi một trong hai điều kiện sau: - Đợi ngắt từ ADC.
- Đợi bit DONE được set.
Đọc kết quả từ bộ đệm biến đổi A/D và xóa bit ADIF nếu cần.