1.12. CAN 外设

AW30N 支持 can外设驱动。

(自v1.4.0版本开始支持,v1.4.0版本以前用户可自行移植 can 驱动代码到SDK)

涉及文件:
  1. can.h

  2. cane.c(该文件最下方有can驱动demo)

  3. gpio_hw.h(需更新到v1.4.0版本及v1.4.0版本以上)

  4. cpu_lib.a(需更新到v1.4.0版本及v1.4.0版本以上)

1.12.1. can 外设使用简介

  1. 发送数据必须通过cpu操作来发送一帧数据,无法使用dma;

  2. 接收数据必须通过dma操作来接收,无法使用cpu模式;

  3. 支持标准帧,扩展帧;

  4. 支持数据帧,远程帧;

  5. 收发数据长:0~8(bytes);

  6. 发送错误自动重发直到成功,取消发送可停止;

  7. 过滤器:屏蔽模式;

1.12.2. 示例参考demo

  1. 初始化:只需修改io,频率,中断优先级,屏蔽模式id滤波器

  2. 16bit滤波模式:两个滤波器,一个给标准id,一个给扩展id

  3. id_std:标识id(有效位:bit28-bit18[对应地址0-0x7ff])

  4. idm_std:屏蔽id:id_std对应的位必须匹配或不关心,0:必须匹配,1:不关心(有效位:bit28-bit18[对应地址0-0x7ff])

  5. id_ext:标识id(有效位:bit28-bit13[实际对应地址bit28-bit13],其他id位不过滤)

  6. idm_ext:屏蔽id:id_ext对应的位必须匹配或不关心,0:必须匹配,1:不关心(有效位:bit28-bit13[对应地址bit28-bit13],其他id位不过滤)

"can 配置"

can 配置

"can 配置demo"

can 配置demo


  1. 接收 :硬件dma收到初始化中配的buf;需要调用接收函数解码数据

函数 int hw_cane_recv_buf(can_rx_info_TypeDef *rx_info)接收的帧信息会保存在rx_info指定的内存中。

接收长度:0~8(bytes)
接收id:见初始化id。
"can 接收"

can 接收


  1. 发送 :调用发送接口:标准、扩展、数据、远程

函数 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)
"can 发送"

can 发送