码迷,mamicode.com
首页 > 其他好文 > 详细

imx6q引出双路CAN

时间:2017-10-18 20:00:54      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:验证方式   重新编译   conf   can   es2017   err   函数   flex   set   

环境:

1.飞凌嵌入式imx6q开发板

2.底板版本OK_MX6X_C_V1.3

3.核心板版本FETMX6X-C V1.1

4.linux内核版本3.0.35

 

当前开发板上面已经有一路can,我们需要引出另外一路can出来。

步骤:

1.添加CAN的收发引脚以及省电开关引脚的定义

在linux-3.0.35\arch\arm\mach-mx6路径下找到board-mx6q_sabresd.h添加

/* CAN2 */
 MX6Q_PAD_KEY_COL4__CAN2_TXCAN,
 MX6Q_PAD_KEY_ROW4__CAN2_RXCAN,
 MX6Q_PAD_GPIO_1__GPIO_1_1,

需要注意的是:这几个引脚都被其它模块占用。

 

2.添加CAN的初始化函数

在linux-3.0.35\arch\arm\mach-mx6路径下找到board-mx6q_sabresd.c添加如下定义

#define SABRESD_CAN2_STBY IMX_GPIO_NR(7, 11)

static void mx6q_sabresd_flexcan1_switch(int enable)
{
 if (enable) {
  gpio_set_value(SABRESD_CAN2_STBY, 0);
 } else {
  gpio_set_value(SABRESD_CAN2_STBY, 1);
 }
}
 
static struct gpio mx6q_sabresd_flexcan1_gpios[] = {
 { SABRESD_CAN2_STBY, GPIOF_OUT_INIT_LOW, "flexcan2-stby" },
};
 
static const struct flexcan_platform_data
 mx6q_sabresd_flexcan1_pdata __initconst = {
 .transceiver_switch = mx6q_sabresd_flexcan1_switch,
};

 

在mx6_sabresd_board_init(void)函数中添加can2初始化:

/* CAN2 init */
ret = gpio_request_array(mx6q_sabresd_flexcan1_gpios,
   ARRAY_SIZE(mx6q_sabresd_flexcan1_gpios));
 if (ret)
  pr_err("failed to request flexcan2-gpios: %d\n", ret);
 else
  imx6q_add_flexcan1(&mx6q_sabresd_flexcan1_pdata);

 

重新编译即可。

 

验证方式:

在串口终端下输入 ifconfig -a

技术分享

 

imx6q引出双路CAN

标签:验证方式   重新编译   conf   can   es2017   err   函数   flex   set   

原文地址:http://www.cnblogs.com/eaggle/p/7688111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!