本文主要是通过迁移的思维,记录本人初次使用周立功的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