我想再在Am335x EVM-SK开发板上做双路CAN通讯试验,做了如下改动:
1、在board-am335xevm.c中配置UART1的引脚复用:
static struct pinmux_config d_can_dvt0_pin_mux[] = {
{"uart1_ctsn.d_can0_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL},
{"uart1_rtsn.d_can0_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},
};
static struct pinmux_config d_can_dvt1_pin_mux[] = {
{"uart1_rxd.d_can1_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL},
{"uart1_txd.d_can1_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},
};
2、在board-am335xevm.c中d_can_init函数里增加代码:
case EVM_SK:
setup_pin_mux(d_can_dvt0_pin_mux);
am33xx_d_can_init(0);
setup_pin_mux(d_can_dvt1_pin_mux);
am33xx_d_can_init(1);
break;
3、在board-am335xevm.c中增加evm_sk_dev_cfg的d_can初始化
{d_can_init, DEV_ON_BASEBOARD, PROFILE_ALL},
4、按照《AM335X DCAN Driver Guide》将DCAN驱动编入内核,然后重新编译。
5、硬件上用飞线将两路CAN勾连,不接收发器。
5、重启系统后,执行ifconfig -a可以看到CAN0和CAN1。执行命令:
canconfig can0 bitrate 50000 ctrlmode triple-sampling on
canconfig can1 bitrate 50000 ctrlmode triple-sampling on
将两路CAN配置成triple-sampling模式,并bringup。
结果,我用任意一路CAN发送
cansend can0 -i 0xFFFFF 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 -e
,另一路收不到数据。用示波器测量两个发送引脚,一直是高电平输出。
换没有飞线的EVM-SK板,依然没有电平变化;然后设置成loopback模式,可以收到两包收同样的数据。
请问这是怎么回事?求高手帮忙。
Gary Wu:
有个问题,你如何在SK上测试DCAN??
SK板上没有将DCAN引出来。。。。
yin fang:
回复 Gary Wu:
将U11 SN74AVC4T245取下,将其焊盘用飞线连接:PIN5<==>PIN6 PIN4<==>PIN7。
昨天我在内核启动时的输出信息中找到这么两句:
[ 0.944549] _omap_mux_get_by_name: Could not find signal uart1_ctsn.d_can0_tx[ 0.952087] _omap_mux_get_by_name: Could not find signal uart1_rtsn.d_can0_rx[ 0.959655] _omap_mux_get_by_name: Could not find signal uart1_rxd.d_can1_tx[ 0.964782] _omap_mux_get_by_name: Could not find signal uart1_txd.d_can1_rx
应该是pinmux_config的时候string_name错了,或者是其他??
yin fang:
回复 yin fang:
似乎是mux33xx.c不支持D15、D16、D17、D18引脚复用成d_can功能:
_AM33XX_MUXENTRY(UART0_CTSN, 0,"uart0_ctsn", NULL, "d_can1_tx", "i2c1_sda","spi1_d0", NULL, NULL, "gpio1_8"), _AM33XX_MUXENTRY(UART0_RTSN, 0,"uart0_rtsn", NULL, "d_can1_rx", "i2c1_scl","spi1_d1", "spi1_cs0", NULL, "gpio1_9"),
要怎么改?还设计其他地方吗?
yin fang:
回复 Gary Wu:
可以复用成Dcan,只是我不知道怎么改到Linux下的源文件里
Gary Wu:
回复 yin fang:
PINMUX,可以参考如下微博
http://blog.chinaunix.net/uid-20543672-id-3067021.html
tenfy zhang:
您好,我现在在用TMS570LS3137芯片,想学习下CAN模块,我看您也是在做DCAN模块,应该和LS3137的DCAN模块有些相似,不知道您有没有相关CAN例程,我在网上始终找不到。谢谢。我的邮箱是faneeboy@163.com 。