基于RT1052 Aworks使能CAN总线(十一)

本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发

前置知识,首先要can总线协论的相关知识,然后知道上层接口如何访问,比如linux下使用socket can接口对can 总线进行操作。针对aworks本身也有相关的样例可供参数。
CAN相关理论知识可参考:
https://www.cnblogs.com/lianghong881018/p/10026720.html

1. 首先阅读原理图


阅读TAJ1043的数据手册之后,想进行正常的CAN数据收发,需要通过相关的IO控制CAN收发器进入正常的工作模式即可通过CAN总线发出数据。

2. 设备资源及驱动适配

2.1 设备资源的注册

硬件上使用第二路CAN总线
在awbl_hwconf_flexcan2.h已有现成的样例,如果确认CAN收发的引脚一致就不必进行修改。

2.2 设备驱动的注册

在aw_prj_config.c文件当中

#ifdef AW_DRV_IMX1050_CAN
    awbl_imx10xx_flexcan_drv_register();
#endif

2.3 设备宏开关

只需要在aw_prj_params.h打开如下定义

aw_prj_params.h

#define AW_DEV_IMX1050_CAN2

即可注册相关的设备资源与设备驱动。

aw_prj_param_auto_cfg.h

#if defined AW_DEV_IMX1050_CAN1 || 
    defined AW_DEV_IMX1050_CAN2

#define AW_DRV_IMX1050_CAN

#endif

一旦使能宏开关AW_DRV_IMX1050_CAN,对应的驱动就会被选上。

3. 如何测试

使用SDK自带的测试样例demo_can_send_simple.c即可进行测试
需要在使能相应的CAN总线,对CAN收发器进行初始化,如下所示。
在这里插入图片描述

4. 总结

在上层使用CAN接口编程时,需指定对应的CAN总线通道。

#define  __CAN_CHN   1
原文地址:https://www.cnblogs.com/lianghong881018/p/15169473.html