Use CAN Bus Shield With STM32F746 Discovery Board?

Hi, everyone,

I’m working on a project involving the CAN Bus Shield, and I’ve recently acquired one for myself. Of course, the shield works perfectly on my Arduino Uno board, but members of the group I’m working with are interested in using it with the STM32F746 Discovery board, as it gives us access to other hardware we’d like to use (e.g. a touchscreen display). The board already has an Arduino shield pinout on it, and I’ve taken pretty good care setting up the configuration in firmware, but I’m not able to get the CAN Bus Shield to respond over SPI.

After getting out a logic analyzer, I noticed that the STM32F746 works on 3.3v logic levels instead of the 5v logic levels of the Arduino Uno. I was curious if this might be the source of the problem; perhaps the MCP2515 on the Shield needs to see the CS pin go from 5V to 0V? Or perhaps the clock never drives voltages high or low enough to look like a proper edge? I could get a level shifter from Sparkfun and run at <1MHz, if that’s what needs to happen.

Anyone tried something like this before? Found a way to get the Shield to operate on boards other than Arduino?


MCP2515 can work under the condition of 3.3V power supply. I suggest checking the hardware connection at first, and checking the correctness of time by logic analyzer.

MCP2515 can work with a 3.3V power supply, but I checked the schematic and the MCP2515 is being powered by the 5V pin. According to the MCP2515 data sheet, this sets a high voltage threshold of 0.7 * VDD, and 0.7 * 5 = 3.5V. The board is being driven by the 5V supply pin but all the SPI lines and GPIO are 3.3V, so they’re too low to be “heard”.

Even if I powered the board by the 3.3V pin (say I used a bunch of jumper wires), this doesn’t help. The MCP2551 requires a 5V voltage.

Well, I didn’t notice MCP2551.We didn’t test anything other than Arduino.It just gives you some ideas.