[嵌入式Linux] AT91 SPI总线挂接MCP2515 CAN控制器---驱动移植

[复制链接]
 楼主| 天意无罪 发表于 2015-11-19 11:49 | 显示全部楼层 |阅读模式
CPU芯片:AT91SAM9G25,
CAN控制器:MCP2515,
内核版本:Linux2.6.39,
在9G25的SPI1总线上挂接了3个mcp2515,想用socketcan协议来控制,参照了网上相关贴子,改了相关配置。内核启动后,查看目录相应目录:

然后用ifconfig -a命令查看,却没有显示can0、can1、can2等设备。然后又在网上看到一篇贴子:http://bbs.csdn.net/topics/390169208
在/etc/network/interfaces文件中加上
auto can0
  iface can0 inet manual
  pre-up ip link set $IFACE type can bitrate 125000 triple-sampling on
  up /sbin/ifconfig $IFACE up
  down /sbin/ifconfig $IFACE down

重新启动内核,仍然提示:Cannot find device "can0"

无果,发帖,望做过此类的高手指点一二,非常感谢。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
阿南 发表于 2015-11-20 09:30 | 显示全部楼层
硬件应该没有通,就是说SPI1总线上挂接的3个mcp2515都没正常工作。另外spi上如何挂3个从设备的
阿南 发表于 2015-11-20 09:31 | 显示全部楼层
先把spi上的3个设备改成1个,先试一下,成功一个了再加。如果一个都没成功,3个肯定是不行的
wb_926 发表于 2015-11-20 10:14 | 显示全部楼层
只需要修改AT91的board.c增添相应设置,配置好中断号即可,刚做完这个加QT
boyie 发表于 2015-11-20 13:06 | 显示全部楼层
把9G25换成9X35或9X25 不是更好 ?
 楼主| 天意无罪 发表于 2015-11-20 13:48 | 显示全部楼层
结贴:已解决。
原因是之前参考的贴子为华清老师宋宝华写的一篇贴子,在结构体spi_board_info中,成员modalias="mcp251x"。

将此值改为“mcp2515”就可以了。如果用的是mcp2510的片子,这里就要写mcp2510。

附:
static struct spi_board_info cm_spi1_devices[] = {
{
.modalias    = "mcp2515",
.irq = AT91_PIN_PC14,
.platform_data = &mcp251x_info,
.chip_select    = 0,
.max_speed_hz    = 8 * 1000 * 1000,
.bus_num    = 0,
.mode = SPI_MODE_0,
},
};
mini1986 发表于 2015-12-15 09:22 | 显示全部楼层
学习一下......
Mt623 发表于 2017-5-9 10:21 | 显示全部楼层
感谢楼主分享。可以学到很多东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

3278

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部