Difference between revisions of "Recans A0"

From iagent
Jump to: navigation, search
Line 20: Line 20:
 
sudo ip link set can0 type can bitrate 1000000
 
sudo ip link set can0 type can bitrate 1000000
 
sudo ip link set up can0
 
sudo ip link set up can0
sudo ifconfig can1 txqueuelen 128
+
sudo ifconfig can0 txqueuelen 128
 
</pre>
 
</pre>
  
Line 41: Line 41:
 
</pre>
 
</pre>
  
To bring up the RP2040 CAN controller:
+
To compile the RP2040 with klipper:
 
<pre>
 
<pre>
sudo ip link set can0 type can bitrate 1000000
+
cd ~/klipper
sudo ip link set up can0
+
cp test/configs/rp2040.config .config
sudo ifconfig can0 txqueuelen 128
+
make menuconfig
 +
-- Communication interface = RP2040
 +
-- RX = GPIO4
 +
-- TX = GPIO5
 +
make
 +
sudo apt install libusb-1.0-0-dev
 +
sudo FLASH_DEVICE="2e8a:0003" make flash
 +
 
 
</pre>
 
</pre>
 +
  
  

Revision as of 19:46, 23 February 2024

Recans A0 has two controllers, one is based on RP2040, the other on MCP2515.

The MCP2515 CAN controller

sudo mount -o remount,rw /boot
sudo armbian-add-overlay /boot/overlay-user/sun50i-a64-mcp251x.dts
sudo mount -o remount,ro /boot

After booting:

sudo gpioset 1 165=0
sudo modprobe -r mcp251x
sudo modprobe mcp251x
dmesg | grep mcp
sudo ip link set can0 type can bitrate 1000000
sudo ip link set up can0
sudo ifconfig can0 txqueuelen 128

Interrupt: STEP7 = PL11

sudo apt install net-tools can-utils
cansend can1 5A1#11.2233.44556677.88
ip -details link show can0
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

To compile the RP2040 with klipper:

cd ~/klipper
cp test/configs/rp2040.config .config
make menuconfig
-- Communication interface = RP2040
-- RX = GPIO4
-- TX = GPIO5
make
sudo apt install libusb-1.0-0-dev
sudo FLASH_DEVICE="2e8a:0003" make flash


Errata

  • SPI_CLK and SPI_MOSI are interchanged and need to be fixed.
  • /RESET is floating.


Debug

During init/reset:

TX: 0xC0 = RESET

TX: 0x03 0x0E 0x00 = READ CANSTAT
RX: 0x00 0x00 0x80 = Device is in Configuration mode

TX: 0x03 0x0F 0x00 = READ CANCTRL
RX: ? 

TX: 0x02 0x0F 0x20 = WRITE CANCTL = Sleep Mode


When trying to set interface up:

TX: 0x02 0x0F 0x80 = WRITE CANCTRL REQOP2 = Configuration Mode
RX: 0x00 0x00 0x00 
TX: 0x03 0x0E 0x00 = READ CANSTAT
RX: 0x00 0x00 0x64 = OPMOD[2:0] = 0b011, ICOD[2:0] = 0b010

Device is in Listen-Only mode, Wake-up interrupt


It seems that the bring up sequence interferes with the initialization. Must make sure the mcp2515 probing is done after power is applied.