1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Introduction to CAN

64 200 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

CONTROLLER AREA NETWORK (CAN) Dr Tuong Quan Vo Mục lục            Giới thiệu CAN CAN protocol Lớp vật lý Giải tranh chấp bus CAN frame Nominal Bit Time Sự đồng xung clock Truyền nhận message Xử lý lỗi 10 CAN MODULE PIC 11 Giới thiệu CAN trình dịch CCS Giới thiệu CAN      giao thức giao tiếp nối tiếp hỗ trợ mạnh cho hệ thống điều khiển thời gian thực với độ ổn định truyền tốc độ cao , bảo mật chống nhiễu tốt CAN phát triển bởi nhà cung cấp phụ tùng xe ôtô Đức Robert Bosch vào năm 80 giảm thiểu việc dây chằng chịt, đơn giản hóa hệ thống sử dụng nhiều ngành công nghiệp khác ngồi xe các máy nơng nghiệp, tàu ngầm, các dụng cụ y khoa, máy dệt, v.v… CAN chuẩn hóa thành tiêu chuẩn ISO11898 Tính ổn định an toàn    chế phát xử lý lỗi cực mạnh lỗi CAN messages phát 1000 năm trung bình có frame lỗi mà không phát CAN chiếm lĩnh ngành cơng nghiệp Ơ   CAN high speed dùng điều khiển động thắng CAN lowspeed dùng điều khiển thiết bị khác kiếng hậu, light… CAN protocol • cặp dây truyền tín hiệu vi sai •Đường dây bus kết thúc điện trở 120 ohm đầu CAN tạo thành bởi nhóm các nodes    Truyền, nhận các gói liệu - message Mỗi loại message gán ID tùy theo mức độ ưu tiên message Mạng CAN : message base system, có tính mở thêm, bớt các node khơng làm ảnh hưởng đến hệ thống, dễ dàng thay đổi mà không cần phải thiết kế lại hệ thống  Mỗi node nhận nhiều loại message khác nhau, ngược lại message nhận bởi nhiều node  ID message phụ thuộc vào mức độ ưu tiên message Điều cho phép phân tích response time message  Quan trọng việc thiết kế hệ thống nhúng thời gian thực Tiêu chuẩn ISO11898 Các lớp layer giao tiếp 10.3 Truyền message CAN       buffer truyền –TXB0, TXB1, TXB2 ghi điều khiển: TXBnCON ghi ID: TXBnSIDL, TXBnSIDH, TXBnEIDL, TXBnEIDH ghi đếm độ dài liệu: TXBnDLC ghi liệu: TXBnDm Thiết lập truyền:          Bit TXREQ phải xóa SIDH,SIDL, DLC liệu nạp Sử dụng frame mở rộng: EIDH:EIDL phải ghi bit EXIDE set set bit TXREQ cho buffer truyền Sự truyền bắt đầu thiết bị kiểm tra bus rảnh Khi truyền thành công, bit TXREQ xóa cờ TXBnIF set ngắt xảy bit cho phép ngắt TXBnIE set Nếu truyền không thành công, bit TXREQ set Nếu có lỗi, TXERR IRXIF set ngắt xảy Nếu message ưu tiên bus, bit TXLARB set Ưu tiên truyền:     không liên quan tới ưu tiên message bus theo giao thức CAN Buffer có mức ưu tiên cao truyền trước Nếu buffer có mức ưu tiên, buffer có số kí hiệu cao truyền trước Có mức ưu tiên: các bit TXP ‘11’, buffer có mức ưu tiên cao nhất; các bit TXP ‘00’, buffer có mức ưu tiên thấp 10.4 Nhận message:  Có buffer nhận: RXB0 RXB1  Buffer Message Assembly Buffer (MAB)  Mỗi buffer chiếm 14 byte SRAM:  ghi điều khiển (RXBnCON)  ghi ID (RXBnSIDL, RXBnSIDH, RXBnEIDL, RXBnEIDH)  ghi đếm độ dài liệu (RXBnDLC)  ghi liệu (RXBnDm) Nhận message:      Một message chuyển tới buffer nhận bit RXFUL set Bit phải xóa bởi MCU xử lý xong message buffer phép message nhận Nếu ngắt nhận cho phép, ngắt xảy báo hiệu message nhận thành công Xác định lọc cho phép nhận cách kiểm tra filter hit bits FILHIT ghi RXBnCON Message vừa nhận messafe chuẩn bit EXID ghi RXBnSIDL xóa Ngược lại, bit EXID set báo hiệu message mở rộng Ưu tiên nhận     RXB0 chứa message,message khác nhận đưa vào RXB1 RXB0 buffer có mức ưu tiên cao RXB1 buffer có mức ưu tiên thấp RXB0CON thiết lập RXB0 chứa message message khác nhận đưa vào RXB1 Có mặt nạ lọc cho bufer Message Acceptance Filtes and Masks   Vùng ID so sánh với giá trị lọc Nếu đúng, message chuyển vào bufer tương ứng Filter mask sử dụng để xác định xem bit vùng ID so sánh với lọc Baud Rate Setting:    FOSC tần số xung clock TOSC chu kì dao động BRP số nguyên (từ đến 63) theo giá trị các bit BRGCON1 CAN trình dịch CCS           void can_init(void); void can_set_baud(void); void can_set_mode(CAN_OP_MODE mode); void can_set_id(int* addr, int32 id, int1 ext); int32 can_get_id(int * addr, int1 ext); int1 can_getd(int32 & id, int * data, int & len, struct rx_stat & stat); int can_putd(int32 id, int * data, int len, int priority, int1 ext, int1 rtr); can_kbhit() can_tbe() can_abort() Một ví dụ đơn giản: #include #fuses HS,NOPROTECT,NOLVP,NOWDT #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #include int16 ms; #int_timer2 void isr_timer2(void) { ms++; //keep a running timer that increments every milli-second } void main() { struct rx_stat rxstat; int32 rx_id; int in_data[8]; int rx_len; //send a data (tx_rtr=0) for bytes of data (tx_len=8) from id 125 int out_data[8]; int32 tx_id=125; int1 tx_rtr=0; int1 tx_ext=0; int tx_len=8; int tx_pri=3; int i; for (i=0;i

Ngày đăng: 07/11/2017, 14:47

Xem thêm: Introduction to CAN

TỪ KHÓA LIÊN QUAN

Mục lục

    CONTROLLER AREA NETWORK (CAN)

    Tính ổn định và an toàn

    CAN chiếm lĩnh trong ngành công nghiệp Ô tô

    CAN được tạo thành bởi một nhóm các nodes

    Các lớp layer giao tiếp

    Độ dài của một bus

    Trạng thái “dominant” và “recessive”

    Tính chất vi sai trên đường truyền

    4. Giải quyết tranh chấp trên bus

    Error frame: được phát ra khi node phát hiện lỗi

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN