Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

There is no CAN controller in the CPU of the A40i or T3, and CAN is used in the actual use process, usually using the SPI-to-CAN method.

On the OKA40i-C substrate, there is an SPI, but since the voltage does not match the voltage of mcp2515, this set of multiplexes of serial port 2 is used as the SPI external mcp2515 module.

According to chapter III of the CPU manual, the PI17-19 can be reused as SPI1, with PH08 as the interrupt.

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

The A40i/T3 features pin reuse in sys_config.fex or dts configuration, and we configure it with dts below.

01- Turn on SPI1

Modify the sys_config.fex, remove the configuration of uart2, and turn on the configuration of SPI1.

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

Also comment out PH08:

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

Modify the device tree at the same time:

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

Allwinner A40i and T3: SPI-to-CAN Configuration and Testing Guide

02-Modify defconfig

Using a drive mcp251x .c verified by other platforms and adapted to the device tree,

Modify the defconfig profile:

Networking support ---> CAN bus subsystem support ---> CAN Device Drivers ---> Selected for Microchip MCP251x SPI CAN Controllers.

Also check the SPI configuration, which is supported by default and is no longer described here.

03-Configure iprote

file system:

buildroot-201611/configs/sun8iw11p1_hf_defconfig

Need to configure the BR2_PACKAGE_IPROUTE2 sy.

Recompile, package the image, burn.

04-Test can0 node

After starting, ifconfig looks at the can0 nodes that appear. Test with the following command:

ifconfig can0 down

ip link set can0 up type can bitrate 125000 triple-sampling on

ifconfig can0 up

cansend can0 123#12345678

candump can0

If necessary, contact Forlinx Technical Services to provide the patch file.

Precautions

In the device tree, when used as an interrupt, because A40i/T3 can only use the pins of the PH group as an interrupt, the interrupt is set in the device tree as follows:

interrupt-parent = <&pio>;

interrupts =;

In addition, you need to pay attention to the interrupt trigger mode in the drive.