CAN Bus_羊兄臺譯(有錯誤歡迎指出)
這些函數可以方便地訪問控制器區域網絡(CAN),包括MCP2515的CAN接口芯片和PIC18單片機。這些函數將只可用於MCP2515的CAN接口芯片和包含一個CAN或ECAN模塊的PIC單片機。某些函數僅適用於ECAN模式所指定的工作方式,ECAN標誌會在註釋在後面。所列出的中斷並不可用於MCP2515接口芯片。
相關函數: |
|
can_init(void); |
CAN模塊初始化125K波特率,並清除所有過濾器(?)和標誌,可以接受來自任何ID的信息。 |
can_set_baud(void); |
初始化CAN總線的波特率爲125kHz的。它已經存在於 can_init() 函數中,所以沒有必要再調用它。
|
can_set_mode |
允許CAN模塊改變配置的模式,監聽模式,環回模式,禁止模式,或者普通模式。
|
can_set_functional_mode |
函數允許ECAN模塊的功能被改變爲傳統模式,增強型傳統模式,
或者先入先出 (fifo) 模式。ECAN
|
can_set_id(int* addr, int32 id, int1 ext); |
函數可以用來設定過濾器,標記ID值到特定的地址。它也可以用來設置要發送的消息的ID。
|
can_get_id(int * addr, int1 ext); |
返回接收到的消息的ID。
|
can_putd
|
使用給定的參數構造一個CAN包,並把它放置在一個可用的發送緩衝區。 |
can_getd |
從CAN緩衝器取回一個消息,並存儲在函數參數的相關位置中。 |
can_enable_rtr(PROG_BUFFER b); |
啓用自動應答功能。當從特定ID接收到數據時,它會自動將用戶創建的數據包,發送到此ID。ECAN
|
can_disable_rtr(PROG_BUFFER b); |
禁止自動應答功能. ECAN
|
can_load_rtr |
當從觸發ID接到數據時,創建和加載的數據包會自動傳輸。ECAN |
can_enable_filter(long filter);
|
啓用ECAN模塊中一個包含的額外的過濾器。ECAN |
can_disable_filter(long filter); |
禁止ECAN模塊中一個包含的額外的過濾器。ECAN
|
can_associate_filter_to_buffer (CAN_FILTER_ASSOCIATION_BUFFERS buffer,CAN_FILTER_ASSOCIATION filter);
|
將一個過濾器關聯到一個特定的緩衝區,允許只用特定的緩衝區來進行過濾。在ECAN模塊中提供。ECAN |
can_associate_filter_to_mask (CAN_MASK_FILTER_ASSOCIATE mask, CAN_FILTER_ASSOCIATION filter);
|
用一個特定的緩衝去關聯一個標誌。只允許特定的緩衝應用這個標誌。在ECAN模塊中提供。ECAN |
can_fifo_getd(int32 & id,int * data, int &len,struct rx_stat & stat); |
檢索先入先出緩衝器中的下一個緩衝區。只應用在FIFO模式下運行的ECON模塊中。ECAN |
Relevant Preprocessor: |
|
None
|
|
相關中斷:: |
|
#int_canirx |
觸發中斷,CAN接受到一個無效的包時。 |
#int_canwake |
觸發中斷, PIC被CAN喚醒時。 |
#int_canerr |
觸發中斷,CAN模式下有錯誤時。 |
#int_cantx0 |
觸發中斷,緩衝器0傳輸完成。 |
#int_cantx1 |
觸發中斷,緩衝器1傳輸完成。 |
#int_cantx2 |
觸發中斷,緩衝器2傳輸完成。 |
#int_canrx0 |
觸發中斷,緩衝器0發送完成。 |
#int_canrx1 |
觸發中斷,緩衝器1發送完成。
|
Relevant Include Files: |
|
can-mcp2510.c |
MCP2510和MCP2515接口芯片的驅動程序 |
can-18xxx8.c |
內置的CAN模塊的驅動程序 |
can-18F4580.c
|
內置ECAN模塊的驅動程序 |
Relevant getenv() Parameters: |
|
none
|
|
示例代碼: |
|
can_init(); |
// 初始化CAN總線 |
can_putd(0x300,data,8,3,TRUE,FALSE); |
// 用CAN總線發送數據。ID=0x300,8位字節數據,指針指向data,爲TURE時創建一個擴展ID。 //the FALSE creates? |
can_getd(ID,data,len,stat); |
// 從CAN總線上檢索一個數據,保存ID號到ID變量,數據指針指向數據data,data中的字節數保存在len變量中, //data的結構在stat的結構體中 |