Module CAN (Controller Area Network) là một giao diện nối tiếp, phù hợp cho việc truyền thông với những module CAN khác hoặc các thiết bị vi điều khiển. Giao thức này được thiết kế để cho phép truyền thông trong môi trường có nhiễụ DSPIC 30F6010có hai mudule CAN với các đặc điểm như sau:
• Thực hiện giao thức CAN 1.2, CAN 2.0A, CAN 2.0B.
• Khung dữ liệu chuẩn và mở rộng .
• Độ dài dữ liệu 0-8 bytẹ
• Tốc độ bit có thể lập trình lên tới 1Mbit/s.
• Hỗ trợ chế độ truyền xạ
• 2 bộ đệm nhận tín hiệu đầu vào( mỗi bộ lên tới 8 byte dữ liệu).
• 6 bộ lọc đầy đủ, trong đó 2 bộ lọc liên kết với quyền ưu tiên cao và 4 bộ lọc với quyền ưu tiên thấp.
• 3 bộ đệm truyền với mức ưu tiên xác định( lên tới 8 byte dữ liệu).
• Tính năng Wake-up với bộ lọc thông thấp có thể lập trình.
• Chế độ Loopback có thể lập trình hỗ trợ khả năng tự kiểm tra (self-test).
• Nguồn khóa có thể lập trình.
• Kết nối với module Input Capture(IC2 cho cả CAN1 và CAN2) cho thời gian lấy mẫu
và đồng bộ mạng.
Hình 10: Sơ đồ khối module CAN của dsPIC 30F6010.
Module CAN chứa một lõi giao thức và phần điều khiển/đệm bản tin. Lõi giao thức CAN kiểm soát tất cả các chức năng nhận và truyền bản tin trên bus CAN. Bản tin được truyền bằng việc tải đầu tiên các thanh ghi dữ liệu phù hợp. Trạng thái và lỗi có thể được kiểm tra bằng cách đọc các thanh ghi phù hợp. Bất kỳ bản tin nào được phát hiện trên bus CAN đều được kiểm tra lỗị
• Khung dữ liệu chuẩn: Một khung dữ liệu chuẩn được tạo bởi một nút khi nút này muốn truyền dữ liệụ Nó bao gồm một bộ nhận dạng chuẩn 11 bit (Standard Identifier –SID).
• Khung dữ liệu mở rộng: Tương tự như khung dữ liệu chuẩn nhưng sử dụng bộ nhận
dạng chuẩn 18 bit
• Khung dữ liệu xa: Nó có khả năng đối với một nút đích khi yêu cầu dữ liệu từ một
nguồn nào đó. Để thực hiện được điều này, nút đích gửi một bản tin xa với một bộ nhận dạng xác định dữ liệu yêu cầu, nút nguồn dữ liệu phù hợp sau đó sẽ gửi một khung dữ liệu đáp ứng với yêu cầu từ xa nàỵ
• Khung dữ liệu lỗi: Một khung dữ liệu lỗi được tạo ra bởi bất kỳ nút nào khi phát hiện ra có lỗi trên bus. Một khung lỗi bao gồm 2 trường: một trường cờ lỗi và một trường xác định ranh giới lỗị
• Khung dữ liệu quá tải: Một khung dữ liệu quá tải có thể được tạo ra bởi một nút như kết quả của hai điều kiện. Thứ nhất là: Nút này phát hiện ra một bit trội trong nội bộ khung - điều này là bất hợp lệ. Thứ hai là: vì điều kiện nội tại nên nút không có khả năng nhận bản tin tiếp theọ Một nút có thể tạo ra nhiều nhất 2 khung qua tải liên tiếp để trì hoãn việc bắt đầu của bản tin tiếp theọ
• Không gian nội bộ bản tin: Không gian nội bộ bản tin phân biệt một khung dữ liệu đi đến là từ bản tin tiếp theo hay từ bản tin từ xạ