4 years, 5 months ago.

Seeed CAN_BUS Shield and the FRDM K64F


I am trying to get the Seeed CAN-BUS Shield working with the KRDM K64F. Has anyone been successful with this? In paticular, what are the pin assignments for the CAN_SEEED class constructor?


Tom Doyle

1 Answer

4 years, 5 months ago.

Hi Tom. Do not own this shield but does this help ?


/** A can bus client, used for communicating with Seeed Studios' CAN-BUS Arduino Shield.
    /** Seeed Studios CAN-BUS Shield Constructor - Create a SEEED_CAN interface connected to the specified pins.
     *  The Seeed Studio CAN-BUS shield is an Arduino compatible shield and connects to the FRDM-KL25Z SPI0 interface using pins PTD2 (mosi) PTD3 (miso) PTD1 (clk). The Active low chip select normally connects to the FRDM-KL25Z's PTD0 pin, but there is an option on the Seeed Studio CAN-BUS shield to connect to the PTD5 pin. The CAN-BUS shield uses the FRDM-KL25Z's PTD4 pin for its (active low) interrupt capability. The defaults allow you to plug the Seeed Studios' CAN-BUS Shield into a FRDM-KL25Z mbed and it to work without specifying any parameters.
     *  @param ncs Active low chip select, @b default: @p SEEED_CAN_CS is FRDM-KL25Z PTD0 pin (p9 on LPC1768).
     *  @n If you change the link on the Seeed Studios CAN-BUS shield you should use a value of SEEED_CAN_IO9 or PTD5 instead.
     *  @param irq Active low interrupt pin, @b default: @p SEEED_CAN_IRQ is FRDM-KL25Z PTD4 pin (p10 on LPC1768).
     *  @param mosi SPI Master Out, Slave In pin, @b default: @p SEEED_CAN_MOSI is FRDM-KL25Z PTD2 pin (p11 on LPC1768).
     *  @param miso SPI Master In, Slave Out pin, @b default: :p SEEED_CAN_MISO is FRDM-KL25Z PTD3 pin (p12 on LPC1768).
     *  @param clk SPI Clock pin, @b default: @p SEEED_CAN_MISO is FRDM-KL25Z PTD1 pin (p13 on LPC1768).
     *  @param spiBitrate SPI Clock frequency, @b default: @p 1000000 (1 MHz).
#if defined MKL25Z4_H_                                                  // defined in MKL25Z4.h
    SEEED_CAN(PinName ncs=SEEED_CAN_CS, PinName irq=SEEED_CAN_IRQ, PinName mosi=SEEED_CAN_MOSI, PinName miso=SEEED_CAN_MISO, PinName clk=SEEED_CAN_CLK, int spiBitrate=1000000);
#elif defined __LPC17xx_H__                                             // defined in LPC17xx.h
    SEEED_CAN(PinName ncs=p9, PinName irq=p10, PinName mosi=p11, PinName miso=p12, PinName clk=p13, int spiBitrate=1000000);
#else                                                                   // No default constructor for other...
    SEEED_CAN(PinName ncs, PinName irq, PinName mosi, PinName miso, PinName clk, int spiBitrate=1000000);

Thanks for the reply. I had found the seeed_can.h information but was still not able to get the CAN-Bus shield to work. I'll keep trying.



posted by Tom Doyle 13 May 2016

Tom - please post the pinout you are using now in your code.

The pinout you have posted looks to be correct when compared against the shield schematic:


However, the baud rate is for the SPI interface speed and not the baud rate of the CAN Bus interface. Can you try with the SPI value posted in the API ?

  • @param spiBitrate SPI Clock frequency, @b default: @p 1000000 (1 MHz). int spiBitrate=1000000
posted by Sanjiv Bhatia 13 May 2016

SEEED_CAN can(D10, D2, D11, D12, D13, 125000);

posted by Tom Doyle 13 May 2016

My bad. However, nothing changed with I set the SPI clock to the default.

posted by Tom Doyle 14 May 2016