.. _can 外设: CAN 外设 ========================================= AW30N 支持 can外设驱动。 (自v1.4.0版本开始支持,v1.4.0版本以前用户可自行移植 can 驱动代码到SDK) 涉及文件: #. can.h #. cane.c(该文件最下方有can驱动demo) #. gpio_hw.h(需更新到v1.4.0版本及v1.4.0版本以上) #. cpu_lib.a(需更新到v1.4.0版本及v1.4.0版本以上) can 外设使用简介 ***************************** #. 发送数据必须通过cpu操作来发送一帧数据,无法使用dma; #. 接收数据必须通过dma操作来接收,无法使用cpu模式; #. 支持标准帧,扩展帧; #. 支持数据帧,远程帧; #. 收发数据长:0~8(bytes); #. 发送错误自动重发直到成功,取消发送可停止; #. 过滤器:屏蔽模式; 示例参考demo ***************************** #. 初始化:只需修改io,频率,中断优先级,屏蔽模式id滤波器 #. 16bit滤波模式:两个滤波器,一个给标准id,一个给扩展id #. id_std:标识id(有效位:bit28-bit18[对应地址0-0x7ff]) #. idm_std:屏蔽id:id_std对应的位必须匹配或不关心,0:必须匹配,1:不关心(有效位:bit28-bit18[对应地址0-0x7ff]) #. id_ext:标识id(有效位:bit28-bit13[实际对应地址bit28-bit13],其他id位不过滤) #. idm_ext:屏蔽id:id_ext对应的位必须匹配或不关心,0:必须匹配,1:不关心(有效位:bit28-bit13[对应地址bit28-bit13],其他id位不过滤) .. image:: can_config.png :alt: "can 配置" :align: center .. centered:: can 配置 .. image:: can_config_demo.png :alt: "can 配置demo" :align: center .. centered:: can 配置demo ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. **接收** :硬件dma收到初始化中配的buf;需要调用接收函数解码数据 函数 int hw_cane_recv_buf(can_rx_info_TypeDef \*rx_info)接收的帧信息会保存在rx_info指定的内存中。 | 接收长度:0~8(bytes) | 接收id:见初始化id。 .. image:: can_receive_log.png :alt: "can 接收" :align: center .. centered:: can 接收 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2. **发送** :调用发送接口:标准、扩展、数据、远程 函数 int hw_cane_send_buf(enum cane_id_type ide, u32 id, enum cane_tx_rtr_mode rtr, u8 \*buf, u8 len); | id范围:标准帧(0~0x7ff),扩展帧(:0~0x1FFFFFFF) | 长度:0~8(bytes) .. image:: can_send_log.png :alt: "can 发送" :align: center .. centered:: can 发送