PIC_CCS CAN帮助文件(翻译)

2019-04-15 12:44发布

CAN Bus_羊兄台译(有错误欢迎指出)


这些函数可以方便地访问控制器区域网络(CAN),包括MCP2515的CAN接口芯片和PIC18单片机这些函数将只可用于MCP2515的CAN接口芯片和包含一个CANECAN模块的PIC单片机某些函数仅适用于ECAN模式所指定的工作方式,ECAN标志会在注释在后面所列出的中断并不可用于MCP2515接口芯片 相关函数:   can_init(void);
CAN模块初始化125K波特率,并清除所有过滤器(?)和标志,可以接受来自任何ID的信息。 
can_set_baud(void);
初始化CAN总线的波特率为125kHz的。它已经存在于 can_init() 函数中,所以没有必要再调用它。   can_set_mode
(CAN_OP_MODE mode);
允许CAN模块改变配置的模式,监听模式,环回模式,禁止模式,或者普通模式。   can_set_functional_mode
(CAN_FUN_OP_MODE 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
(int32 id, int * data, int len,
int priority, int1 ext, int1 rtr);   使用给定的参数构造一个CAN包,并把它放置在一个可用的发送缓冲区。 can_getd
(int32 & id, int * data, int & len,
struct rx_stat & stat); CAN缓冲器取回一个消息,并存储在函数参数的相关位置中。 can_enable_rtr(PROG_BUFFER b);
启用自动应答功能。当从特定ID接收到数据时,它会自动将用户创建的数据包,发送到此ID。ECAN
  can_disable_rtr(PROG_BUFFER b);
禁止自动应答功能. ECAN   can_load_rtr
(PROG_BUFFER b, int * data, int len);  当从触发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  MCP2510MCP2515接口芯片驱动程序 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的结构体中