Allwinner A40i / T3 Support for CAN
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:
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.
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
If necessary, contact Forlinx Technical Services to provide the patch file.
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>;
In addition, you need to pay attention to the interrupt trigger mode in the drive.