1.12. 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版本以上)
1.12.1. can 外设使用简介
发送数据必须通过cpu操作来发送一帧数据,无法使用dma;
接收数据必须通过dma操作来接收,无法使用cpu模式;
支持标准帧,扩展帧;
支持数据帧,远程帧;
收发数据长:0~8(bytes);
发送错误自动重发直到成功,取消发送可停止;
过滤器:屏蔽模式;
1.12.2. 示例参考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位不过滤)
![]()
can 配置
![]()
can 配置demo
接收 :硬件dma收到初始化中配的buf;需要调用接收函数解码数据
函数 int hw_cane_recv_buf(can_rx_info_TypeDef *rx_info)接收的帧信息会保存在rx_info指定的内存中。
接收长度:0~8(bytes)接收id:见初始化id。![]()
can 接收
发送 :调用发送接口:标准、扩展、数据、远程
函数 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 发送