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的结构体中 |