a)Giới thiệu
DSP C28x ngoài khả năng xử lý mạnh mẽ nó còn có tất cả các thiết bị ngoại vi cần thiết để xây dựng một hệ thống điều khiển ( SOC – “system on chip”).Các thiết bị ngoại vi tích hợp trên dòng C28x có một ưu thế quan trọng so với các VXL khác. một ngoại vi đơn giản nhất là Digital I/O.
Tất cả các thiết bị ngoại vi của C28x có bản đồ bộ nhớ ở vùng bộ nhớ dữ liệu theo kiến trúc Harrvard .Điều này có nghĩa là chúng ta điều khiển các ngoại vi bằng việc truy cập vào địa chỉ bộ nhớ dữ liệu chuyên dụng .Các hình sau đây sẽ chỉ ra điều này [6,11].
Hình 2.5 Bản đồ ngoại vi TMS320F2812
c)Khung ngoại vi
Tất cả các thanh ghi ngoại vi được nhóm lại với nhau thành một nhóm gọi là “khung ngoại vi” – PF0,PF1 và PF2 .Các khung ngoại vi này nằm trong bản đồ bộ nhớ dữ liệu .Khung ngoại vi PF0 bao gồm các thanh ghi để điều khiển tốc độ của bộ nhớ flash bên trong người lập trình có thể truy cập một lần trên mỗi chu kỳ xung clock.Flash là bộ nhớ tĩnh sử dụng thường xuyên cho việc lưu trữ code và dữ liệu ban đầu .Khung ngoại vi PF1 chứa hầu hết các thanh ghi điều khiển thiết bị ngoại vi ,ngược lại khung ngoại vi PF2 chỉ dành riêng cho khối thanh ghi CAN ( control Area Network)
Hình 2.6 Phân vùng bộ nhớ TMS320F2812
Một số vùng bộ nhớ có mật khẩu bảo vệ bởi modul bảo mật ( code security module ) .Mật khẩu bảo vệ được lập trình ,bất kỳ sự truy cập nào vào khu vực bảo mật thì chỉ được chấp nhận khi nhập một mật khẩu chính xác vào khu vực đặc biệt của PF0.
d) Cổng vào ra số Digital I/O
Tất cả Digital I/O đều được nhóm lại thành các PORT gọi là GPIO – A,B,D,E,F và G .Ở đây GPIO có nghĩa là “ General purpose input output “.C28x được trang bị rất nhiều thiết bị bên trong ,tuy nhiên không phải tất cả các tính năng có thể kết nối với các chân chuyên dùng của thiết bị cùng lúc.Giải pháp cho việc này là sử dụng bộ dồn kênh ( Mutiplex – MUX) .Có nghĩa là một chân có thể sử dụng cho 2 hoặc 3 chứa năng khác nhau và nó được lựa chọn bởi người lập trình .
Hình 2.7 Các GPIO PORT TMS320F2812
Thuật ngữ “ Input Qualitification feature “ đề cập đến một chức năng được thêm vào cho đầu vào Digital ở các PORT A,B,D, và E .Khi các tính năng này được sử dụng một xung đầu vào phải được dài hơn giá trị danh định của chu kỳ xung clock để được công nhận là đầu vào hợp lệ.
Tất cả 6 GPIO – PORT được điều khiển bởi thanh ghi dồn kênh(Mutiplex) của chúng là thanh ghi GPxMUX ( ở đó x là ký hiệu từ A đến F ) .Xóa bit về “0” có nghĩa là chọn chức năng I/O ,đặt bit lên “1” có nghĩa là lựa chọn chứa năng riêng ( TI gọi là “primary function “)
Khi đầu vào ra Digital I/O được lựa chọn,Sau đó nhóm thanh ghi GPxDIR định nghĩa chiều của I/O.Xóa bit về 0 để thiết lập như là đầu vào ,đặt bit lên 1 để xác định là đầu ra.một số cổng đầu vào được trang bị cùng với một “ Input qualification feature “ .Dùng lựa chọn này chúng ta có thể định nghĩa một khoảng thời gian để loại trừ các Spike ( gai ) hay là các xung ngắn từ khi đang được công nhận là đầu vào hợp lệ.
Hình 2.8 Cấu trúc thanh ghi GPIO TMS320F2812
Hình 2.5 Sơ đồ khối GPIO TMS320F2812
Hình 2.9 Các thanh ghi GPIO TMS320F2812
f)C28x clock modul
Trước khi sử dụng các đầu vào ra , cần cài đặt C28x clock modul giống như các vi xử lý hiện đại khác .Nguồn xung cho C28x được cung cấp từ một bộ dao động bên ngoài tần số thấp để giảm ảnh hưởng của nhiễu điện từ .Một mạch PLL tạo ra tốc độ phía trong .Kit EZDSP sử dụng tần số ngoài là 30 MHZ để đạt được tần số nội là 150MHZ chúng ta có 10 hệ số nhân và chia cho 2.Điều này có thể được thực hiện bằng việc lập trình thanh ghi điều khiển PLL ( PLLCR – PLL control register ) .
Hình 2.10 C28x clock modul
High-Speed clock pre-scaler ( HISPCP ) và LOW-speed clock pre-scaler ( LOSPCP) được sử dụng như các bộ chia tần số.Đầu ra của 2 pre-scaler được sử
dụng làm nguồn xung clock cho các thiết bị ngoại vi.người lập trình có thể cài đặt 2 Pre-scaler riêng rẽ nếu cần thiết.
Chú ý : Tín hiệu “ CLKIN” có cùng tần số với “SYSCLOUT” được sử dụng cho giao diện bộ nhớ bên ngoài và cho giao tiếp CAN .Cũng như vậy tần số dao động của bộ Watchdog được cấp trực tiếp từ bộ dao động bên ngoài.Tần số cao nhất cho bộ dao động bên ngoài là 35MHZ
Để sử dụng một ngoại vi chúng ta cho phép phân phối các xung clock bằng các bit riêng rẽ của thanh ghi PCLKCR.Đầu vào ra Digital I/O không có xung clock kích hoạt.
Hình 2.11 Các thanh ghi điều khiển xung clock ngọai vi
g)Watchdog timer
Một bộ “ Watchdog timer” được đếm tự do và có thể tạo ra một tín hiệu reset nếu không được xóa định kỳ bởi chương trình.Nó được sử dụng để phát
hiện ra các sự kiện nó được sử dụng để phát hiện ra các sự kiện ở chỗ mà chương trình đang thực thi ,lấy ví dụ như hiện tượng treo.
Hình 2.12 Sơ đồ khối modul watchdog timer
Watchdog thì thường xuyên được cấp điện khi DSP được cấp nguồn .Khi chúng ta không quan tâm đến watchdog định kỳ nó sẽ kích hoạt một tín hiệu reset .Một trong những phương pháp đơn giản nhất để đối phó với các wachdog là vô hiệu hóa nó ,việc này được thực hiện bằng cách cài đặt bit 6 ( WDFLAG) đặt lên “1”.Tất nhiên đây không phải là một quyết định khôn ngoan bởi vì một wachdog là một tính năng bảo mật và một dự án thực tế thì bao gồm càng nhiều bảo mật càng tốt.
Các pre-scaler watchdog có thể được sử dụng để tăng chu kỳ tràn của Watchdog. Bit kiểm tra logic (WDCHK) là một vùng bit bảo mật khác .Mọi sự truy cập ghi vào thanh ghi WDCR phải bao gồm sự kết hợp bit “ 101” cho 3 vùng,nếu không truy cập sẽ bị từ chối và tín hiệu reset được kích hoạt ngay lập tức .Bit cờ Watchdog ( WDFLAG ) có thể được sử dụng để phân biệt giữa một reset thông thường (WDFLAG = 0 ) và một reset từ Watchdog ( WDFLAG=1).
Hình 2.13 Thanh ghi điều khiển watchdog timer
Chú ý : Nếu vì lý do nào đó bộ dao động bên ngoài không hoạt động ,Watchdog không đếm tăng lên .Trong một ứng dụng chúng ta có thể nắm bắt tình hình này bằng cách đọc các thanh ghi lưu trữ giá trị đếm Watchdog định kỳ.Trong trường hợp đồng hồ dao động bên ngoài bị ngừng thì thanh ghi này sẽ không tăng thêm nữa và C28x vẫn thực hiện trong chế độ PLL,tức là khi PLL tạo ra tẫn số từ 1-4 MHZ .Chế độ này gọi là “Limp-mode”
Vậy làm thế nào để xóa Watch dog? Bằng việc ghi “ Valid key” theo thứ tự vào thanh ghi WDKEY
Hình 2.14 Thứ tự ghi vào thanh ghi WDKEY