Dear folks:
Hi,i met a bus off in S3C64XX SockCan,from lower-level spi
read/write,seems mcp2515 read/write is OK,but when i use cansend to send data
,mcp2515 enter bus off mode,what should i go on debuging or verfy hardware is
no problem? please give me suggestions,i will read mcp2515 datasheet and
socketcan carefully in deep.
Kernel booting log:
Driver 'sd' needs updating - please use bus_type methods
drivers/spi/spi_s3c.c:s3c_spi_init:1149
drivers/spi/spi_s3c.c:s3c_spi_probe:842 ID=0
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x spi0.0: CANSTAT 0x80 CANCTRL 0x07
mcp251x_write_reg
mcp251x_spi_trans
mcp251x spi0.0: probed
Samsung SoC SPI Driver loaded for Bus SPI-0 with 1 Slaves attached
Max,Min-Speed [33250000, 129882]Hz
Irq=80 IOmem=[0x7f00bfff-0x7f00b000] DMA=[Rx-33, Tx-34]
usbmon: debugfs is not available
here is debug step:
2)ifconfig can0 up
3)./cansend can0 111#1122334455667788
debug log:
[root@Tommy canbustest]# ./ip link set can0 type can bitrate 125000 triple-sampl
ing on
[root@Tommy canbustest]# ifconfig can0 up
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_write_bits
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x spi0.0: CNF: 0x03 0xf5 0x01
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
[root@Tommy canbustest]# ./cansend can0 111#1122334455667788
mcp251x_hw_tx
mcp251x_hw_tx_frame
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_write_bits
mcp251x_spi_trans
mcp251x_read_reg
mcp251x_spi_trans
mcp251x_write_reg
mcp251x_spi_trans
can state bus off
can_bus_off
mcp251x spi0.0: bus-off
mcp251x_write_reg
mcp251x_spi_trans
---------------------------------------------------
following is my platform code:
#ifdef CONFIG_CAN_MCP251X
/* SPI / CAN MCP251x support */
static void s3c6410_set_cs(unsigned line, int cs)
{
unsigned int pin;
int change = 1;
switch (line) {
case 0:
pin = S3C64XX_GPC(3); //MCP2515 Use SPI0
break;
default:
printk(KERN_ERR "s3c6410_set_cs, unknown line %d\n", line);
change = 0;
break;
}
if (change) {
gpio_set_value(pin, cs);
}
};
static void __init s3c6410_mcp251x_init(void)
{
printk(KERN_DEBUG "s3c6410_mcp251x_init: Entry\n");
printk(KERN_INFO "mcp251x: setup gpio pins CS and External Int\n");
s3c_gpio_cfgpin(S3C64XX_GPN(2), S3C64XX_GPN2_EINT2);
s3c_gpio_setpull(S3C64XX_GPN(2), S3C_GPIO_PULL_UP);
s3c_gpio_setpull(S3C64XX_GPC(3), S3C_GPIO_PULL_NONE); // Manual chip
select pin as used in s3c6410_set_cs
s3c_gpio_cfgpin(S3C64XX_GPC(3), S3C_GPIO_OUTPUT); // Manual chip
select pin as used in s3c6410_set_cs
}
static int mcp251x_ioSetup(struct spi_device *spi)
{
return 0;
}
/**
* struct s3c64xx_spi_csinfo - ChipSelect description
* @fb_delay: Slave specific feedback delay.
* Refer to FB_CLK_SEL register definition in SPI chapter.
* @line: Custom 'identity' of the CS line.
* @set_level: CS line control.
*
* This is per SPI-Slave Chipselect information.
* Allocate and initialize one in machine init code and make the
* spi_board_info.controller_data point to it.
*/
struct s3c64xx_spi_csinfo {
u8 fb_delay;
unsigned line;
void (*set_level) (unsigned line_id, int lvl);
};
static struct s3c64xx_spi_csinfo mcp251x_cs_info[] = {
{
.fb_delay = 0x3, // 9ns feedback delay for cs line
.line = 0,
.set_level = s3c6410_set_cs,
},
};
static struct mcp251x_platform_data mcp251x_info = {
.oscillator_frequency = 16000000,
.board_specific_setup = mcp251x_ioSetup,
.model = CAN_MCP251X_MCP2515,
.power_enable = NULL,
.transceiver_enable = NULL,
};
static struct spi_board_info s3c6410_mcp251x_board_info[] __initdata = {
{
.modalias = "mcp251x",
.platform_data = &mcp251x_info,
.controller_data = &mcp251x_cs_info,
.max_speed_hz = 2 * 1000 * 1000,
.irq = S3C_EINT(2), /* GPN2 */
.chip_select = 0,
.bus_num = 0,
.mode = SPI_MODE_0,
},
};
#endif
thanks if you give me good advice to test my mcp2515.
B.R
Tommy
网易公开课推出哈佛最受欢迎《幸福》课程,帮您修满幸福学分!
_______________________________________________
Socketcan-core mailing list
Socketcan-core@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/socketcan-core