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.
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.
Also comment out PH08:
Modify the device tree at the same time:
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.