- Muchas notas - Fran Acién

20230228 - DTUSAT OBC

fcd1bf9fe36bbf5b1e2a61c8bfee4eec.png

48f6ca60c4b8aea9af4808b7f86d06c6.png

I wrote a guide about how to implement the CAN interface in the OBC:

How to connect

  • Boot the PCB with the USB cable
  • Selec the correct network card, as DHCP
  • Connect through SSH as ssh debian@192.168.7.2 -p 22
    • User: debian
    • Pass: temppwd

Update 28 Feb 2023

SSH Connection:

  • User: debian
  • Pass: temppwd

Status of the PCB:

  • The OBC of Blanca boots up, and behave as expected. I guess the PCB is correct and it behaves similar to the original beaglebone pocketbeagle. It is working perfectly.

a6846336194e10b57f03b09fd14e4ad9.png

When connected through ssh it runs a stressapp that hangs the board. I fixed it by comenting the profile script at /etc/profile.

With this guide you can enable internet access on windows computer. It didnt work on linux computer >.<

Update 21 April

The octavio SOC is a set of chip in the same package. The CAN bus is connected directly to the controller inside the microcontroller, to check the pinout, you need to check the connections with the microcontroller.

f3816fe0707f193e41d44af14184f29e.png

The only reason I find why is G15, G16 is because is in the SIP D and the datasheet state D15 and D16.

To listen CAN candump can0.

Some questions:

In order to change the pin location:

How to look up pins

Datasheet

  1. Go to page 11, the name in each cell is the one used in the symbol in the shematics of Blanca. From that cell you can get the column and number, as A18. and then on the table 4.2 you can check the uses of that pin.

In the case of Beaglebone pocket:

Finally, I found how to do it. PinMux for OSD335x Family and AM335x SoC

CUSTOM OVERLAY TO ENABLE CAN BUS

/*
 * Copyright (C) 2015 Robert Nelson <robertcnelson@gmail.com>
 *
 * Virtual cape for CAN0 on connector pins for P1.28 and P1.26 on PocketBeagle
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/am33xx.h>
#include <dt-bindings/board/am335x-pb-base.h>

/ {
	/*
	 * Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
	 */
	fragment@0 {
		target-path="/";
		__overlay__ {

			chosen {
				overlays {
					DTUSAT-CAN0-00A0 = __TIMESTAMP__;
				};
			};
		};
	};

	fragment@1 {
		target = <&am33xx_pinmux>;
		__overlay__ {
			dtusat_dcan0_pins: pinmux_dcan0_pins {
				/* https://github.com/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti/src/arm/am335x-pocketbeagle.dts#L320 */
                /* MODIFIED */
				pinctrl-single,pins = <
					AM33XX_IOPAD(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLUP | MUX_MODE1)          /* uart1_rtsn.dcan0_rx */
					AM33XX_IOPAD(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLUP | MUX_MODE1)         /* uart1_ctsn.dcan0_tx */
				>;
			};
		};
	};

	fragment@2 {
		target = <&dcan0>;
		__overlay__ {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&dtusat_dcan0_pins>;
		};
	};
};

One of the reasons I was confusing all the time was that I was looking for beaglebone black, when it should be pocket beagle.

Update 20 Apr 2023

I am starting to implement the CAN bus to interconnect the OBC with a simple ESP32. I removed the load capacitor becuase it seems that they are not necessary, they board works fine without the resistors.

55b4109aff823c5eeb1ae950b6c1c001.png

3ad383e0e2f2a896c2760d89c778c3ff.png

How to setup the P11 of the 40 pin as led

You can see what overlays are loaded with ls /proc/device-tree/chosen/overlays/. By default the only overlay that is loaded is AM335X-PRU-RPROC-4-14-TI-00A0, source.

How to flash a led. You can power some leds by going to cd /sys/class/leds, go to any led and then echo 1 > brightness. Also it is possible to access the GPIO by going to cd /sys/class/gpio, and write to export with “The gpio pins are in banks of 32 each, for the GPIO_1_28 it is 1*32+28=60”, then echo 60 > exportandecho 1 > value.

The 40 pin connector connections with the Octavo are the next. The first is the name in the 40 pin connector, the second is the name in the octavo (the same as in AM335) (page 39 of datahseet of am335), and the third is the control module register (page 1458 of technical reference):

  • (U1.B12)UART0.TX -> P1.30 of the beagle header and UART0_TXD (OSD335)
  • (U1.A12)UART0.RX -> P1.32 of the beagle header and UART0_RXD (OSD335)
  • (U1.B11)UART1.TX -> UART1_TXD (OSD335)
  • (U1.A11)UART1.RX -> UART1_RXD (OSD335)
  • (U1.E16)UART2.TX -> MII1_RX_CLK (OSD335)
  • (U1.H16)UART2.RX -> MII1_TX_CLK (OSD335)
  • (U1.E15)I2C1.SCL -> MII1_CRS (OSD335)
  • (U1.F14)I2C1.SDA -> MII1_CRS (OSD335)
  • (U1.E13)GPIO0_0 (P11) -> MDIO (OSD335) -> 948h conf_mdio
  • (U1.D13)GPIO0_1 (P13) -> MDC (OSD335) -> 94Ch conf_mdc
  • (U1.H14)GPIO0_21 (P15) -> MII1_TXD1 (OSD335) -> 924h conf_mii1_txd1
  • (U1.H15)GPIO0_28 (P17) -> MII1_TXD0 (OSD335) -> 928h conf_mii1_txd0
  • (U1.J14)GPIO0_29 (P19) -> RMII1_REF_CLK(OSD335) -> 944h conf_rmii1_ref_clk
  • (U1.B10)I2C2.SDA -> P1.26 of the beagle header and UART1_CTSN (OSD335)
  • (U1.A10)I2C2.SCL -> P1.28 of the beagle header and UART1_RTSN (OSD335)

The pins used for the CAN transceiver:

  • (U1.G15)CAN0_TD -> MII1_TXD3 (OSD335) -> 91Ch
  • (U1.G16)CAN0_RD -> qq (OSD335) -> 920h
  • (U1.G14)GPIO3_3 -> MII1_TX_EN (OSD335) -> 914h

Then go to page 1458 of the technical reference manual.

The steps are:

  • On a linux machine do:
$ sudo apt-get install device-tree-compiler
$ sudo apt install gcc-arm-linux-gnueabihf
$ git clone https://github.com/beagleboard/bb.org-overlays.git

Copy your dts file at src/arm and then on the root folder do make. Paste the dtbo in the folder /lib/firmware at the beagle. Then modify the /boot/uEnv.txt and add the overlay. Reset.

Check that your overlay is working with ls /proc/device-tree/chosen/overlays.

You can test the led with cd /sys/class/leds and then echo 1 > brightness

The code to make the GPIO_0_0 a led:

/*
 * Copyright (C) 2020 Robert Nelson <robertcnelson@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/am33xx.h>

/ {
	/*
	 * Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
	 */
	fragment@0 {
		target-path="/";
		__overlay__ {

			chosen {
				overlays {
					DTUSAT-LED-01A00 = __TIMESTAMP__;
				};
			};
		};
	};

	fragment@1 {
		target = <&am33xx_pinmux>;
		__overlay__ {

      /* DTUSAT P11 in 40pin connector (U1.E13)GPIO0_0: MDIO.gpio0_0 */
      P11_default_pin: pinmux_P11_default_pin { pinctrl-single,pins = <
        AM33XX_PADCONF(0x0948, PIN_OUTPUT, MUX_MODE7) >; };	/* (U1.E13)GPIO0_0: MDIO.gpio0_0 */
		};
	};

	fragment@2 {
		target-path="/";
		__overlay__ {

			leds {
				pinctrl-names = "default";
				pinctrl-0 = <&P11_default_pin>;

				compatible = "gpio-leds";

				P11 {
					label = "P11";
					gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
					default-state = "off";
				};
			};
		};
	};
};

How to setup P11 of the 40pin connector as gpio

/*
 * Copyright (C) 2020 Robert Nelson <robertcnelson@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/am33xx.h>

/ {
	/*
	 * Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
	 */
	fragment@0 {
		target-path="/";
		__overlay__ {

			chosen {
				overlays {
					DTUSAT-GPIO-02A00 = __TIMESTAMP__;
				};
			};
		};
	};

	fragment@1 {
		target = <&am33xx_pinmux>;
		__overlay__ {

      /* DTUSAT P11 in 40pin connector (U1.E13)GPIO0_0: MDIO.gpio0_0 */
      P11_default_pin: pinmux_P11_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0948, PIN_OUTPUT | INPUT_EN | MUX_MODE7) >; };	/* MDIO.gpio0_0 */
		};
	};

	fragment@2 {
		target=<&ocp>;
		__overlay__ {
      P11_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P11_default_pin>;
      };
		};
	};

  fragment@3 {
		target=<&ocp>;
		__overlay__ {
      cape-dtusat {
        compatible = "gpio-of-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <>;

        P11 {
          gpio-name = "P11";
          gpio = <&gpio0 0 0>;
          output;
          init-low;
        };
      };
		};
	};
};

And to test it, you can check that the overlay is in place in /proc/device-tree/ocp under P11. You can control de GPIO in /sys/class/gpio/gpio0, by echo 1 > value.

DTUSAT GPIOs in the 40 pin and CAN EN setup

/*
 * Copyright (C) 2020 Robert Nelson <robertcnelson@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/am33xx.h>

/ {
	/*
	 * Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
	 */
	fragment@0 {
		target-path="/";
		__overlay__ {

			chosen {
				overlays {
					DTUSAT-GPIO-03A00 = __TIMESTAMP__;
				};
			};
		};
	};

	fragment@1 {
		target = <&am33xx_pinmux>;
		__overlay__ {

      /* DTUSAT 40pin connector GPIO's and the CAN EN gpio */

      P11_default_pin: pinmux_P11_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0948, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.E13)GPIO0_0: MDIO.gpio0_0 */
        >;
      };

      P13_default_pin: pinmux_P13_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x094C, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.D13)GPIO0_1: MDC.gpio0_1 */
        >;
      };

      P15_default_pin: pinmux_P15_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0924, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.H14)GPIO0_21: MII1_TXD1.gpio0_21 */
        >;
      };

      P17_default_pin: pinmux_P17_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0928, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.H15)GPIO0_28: MII1_TXD0.gpio0_28 */
        >;
      };

      P19_default_pin: pinmux_P19_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0944, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.J14)GPIO0_29: RMII1_REF_CLK.gpio0_29 */
        >;
      };

      CAN_EN_default_pin: pinmux_CAN_EN_default_pin { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x0914, PIN_OUTPUT | INPUT_EN | MUX_MODE7) /* (U1.G14)GPIO3_3: MII1_TX_EN.gpio3_3 */
        >;
      };
		};
	};

	fragment@2 {
		target=<&ocp>;
		__overlay__ {
      P11_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P11_default_pin>;
      };

      P13_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P13_default_pin>;
      };

      P15_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P15_default_pin>;
      };

      P17_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P17_default_pin>;
      };

      P19_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&P19_default_pin>;
      };

      CAN_EN_pinmux {
        compatible = "bone-pinmux-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&CAN_EN_default_pin>;
      };
		};
	};

  fragment@3 {
		target=<&ocp>;
		__overlay__ {
      cape-dtusat {
        compatible = "gpio-of-helper";
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <>;

        P11 {
          gpio-name = "P11";
          gpio = <&gpio0 0 0>;
          output;
          init-low;
        };

        P13 {
          gpio-name = "P13";
          gpio = <&gpio0 1 0>;
          output;
          init-low;
        };

        P15 {
          gpio-name = "P15";
          gpio = <&gpio0 21 0>;
          output;
          init-low;
        };

        P17 {
          gpio-name = "P17";
          gpio = <&gpio0 28 0>;
          output;
          init-low;
        };

        P19 {
          gpio-name = "P19";
          gpio = <&gpio0 29 0>;
          output;
          init-low;
        };

        CAN_EN {
          gpio-name = "CAN_EN";
          gpio = <&gpio3 3 0>;
          output;
          init-low;
        };
      };
		};
	};
};

DTUSAT CAN Bus

/*
 * Copyright (C) 2020 Robert Nelson <robertcnelson@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/am33xx.h>

/ {
	/*
	 * Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
	 */
	fragment@0 {
		target-path="/";
		__overlay__ {

			chosen {
				overlays {
					DTUSAT-CAN-01A00 = __TIMESTAMP__;
				};
			};
		};
	};

	fragment@1 {
		target = <&am33xx_pinmux>;
		__overlay__ {

      /* DTUSAT CAN bus */
      DTUSAT_dcan0_pins: pinmux_DTUSAT_dcan0_pins { pinctrl-single,pins = <
		    AM33XX_IOPAD(0x091C, PIN_OUTPUT_PULLUP | MUX_MODE1) 	/* MII1_TXD3.dcan0_tx */
        AM33XX_IOPAD(0x0920, PIN_INPUT_PULLUP | MUX_MODE1)   /* MII1_TXD2.dcan0_rx */
        >;
      };
		};
	};

	fragment@2 {
    target = <&dcan0>;
      __overlay__ {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&DTUSAT_dcan0_pins>;
    };
	};

};
echo 1 > /sys/class/gpio/gpio99/value
sudo ip link set can0 up type can bitrate 500000
sudo ifconfig can0 up
cansend can0 5A1#00.01.02.03.04

Pocket beagle CAN

I did a test and is working:

  1. Connect the CAN0 bus on pocket beagle to the can transceiver I use in esp32
  2. Apply overlay of pocketbeagle
  3. Put esp32 in receiver mode
  4. configure can bus on beagle and cansend a dummy packet.
  5. I was able to receive it

The same test but with the esp32 as sender is working

Note: In the uBoot needs to be the universal cape.

It is working in the pocket beagle but not on the dtusat pcb. What I am doing is conecting directly to the port and see with the osciloscopio. dmesg output:

[    0.899646] CAN device driver interface
[    0.901517] c_can_platform 481cc000.can: c_can_platform device registered (regs=fa1cc000, irq=39)
[    0.902778] c_can_platform 481d0000.can: c_can_platform device registered (regs=fa1d0000, irq=40)
[    0.971745] can: controller area network core (rev 20170425 abi 9)
[   45.857412] c_can_platform 481cc000.can can0: setting BTR=1c02 BRPE=0000
[   45.863747] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
[   62.826685] can: raw protocol (rev 20170425)
[   62.829497] c_can_platform 481cc000.can can0: bus-off

When I run my can overlay without the gpio I get the next:

[    1.137361] c_can_platform 481cc000.can: c_can_platform device registered (regs=fa1cc000, irq=37)
[    1.138768] pinctrl-single 44e10800.pinmux: pin PIN71 already requested by 481cc000.can; cannot claim for 4a100000.ethernet
[    1.150116] pinctrl-single 44e10800.pinmux: pin-71 (4a100000.ethernet) status -22
[    1.157694] pinctrl-single 44e10800.pinmux: could not request pin 71 (PIN71) from group cpsw_default  on device pinctrl-single
[    1.169188] cpsw 4a100000.ethernet: Error applying setting, reverse things back

And is not sending data like in the example of the pocketbeagle., that is conflicting with the base overlay (not sure). But is coflicting with /proc/device-tree/ocp -->/ethernet@4a100000.

cat clock-names fckroo

cat clocks 6

cat compatible ti,am3352-d_can

cat interrupts 4

clock-names clocks compatible interrupts name phandle pinctrl-0 pinctrl-names reg status syscon-raminit ti,hwmods

When I remove all the overlays the can bus is already configured, I should check that.

In /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins is possible to see the pins that are configured. Also in /sys/kernel/debug/pinctrl/pinctrl-maps

pin 71 (PIN71): 481cc000.can (GPIO UNCLAIMED) function pinmux_DTUSAT_dcan0_pins group pinmux_DTUSAT_dcan0_pins pin 72 (PIN72): 481cc000.can (GPIO UNCLAIMED) function pinmux_DTUSAT_dcan0_pins group pinmux_DTUSAT_dcan0_pins

With the pb configuration:

In pinctrl-maps:

device ocp:P9_19_pinmux
state can
type MUX_GROUP (2)
controlling device 44e10800.pinmux
group pinmux_P9_19_can_pin
function pinmux_P9_19_can_pin

device ocp:P9_20_pinmux
state can
type MUX_GROUP (2)
controlling device 44e10800.pinmux
group pinmux_P9_20_can_pin
function pinmux_P9_20_can_pin


device 481cc000.can
state default
type MUX_GROUP (2)
controlling device 44e10800.pinmux
group pinmux_dcan0_pins
function pinmux_dcan0_pins

In pinmux-pins:

pin 94 (PIN94): 481cc000.can (GPIO UNCLAIMED) function pinmux_dcan0_pins group pinmux_dcan0_pins
pin 95 (PIN95): 481cc000.can (GPIO UNCLAIMED) function pinmux_dcan0_pins group pinmux_dcan0_pins

UPDATE I connected to the CAN bus directly, the same in the PB and the DTUSAT and the device tree have different response: output of dtusat

[    1.135551] CAN device driver interface
[    1.135965] pinctrl-single 44e10800.pinmux: pin PIN95 already requested by ocp:P9_19_pinmux; cannot claim for 481cc000.can
[    1.147176] pinctrl-single 44e10800.pinmux: pin-95 (481cc000.can) status -22
[    1.154316] pinctrl-single 44e10800.pinmux: could not request pin 95 (PIN95) from group pinmux_dcan0_pins  on device pinctrl-single
[    1.166245] c_can_platform 481cc000.can: Error applying setting, reverse things back
[    1.174104] c_can_platform: probe of 481cc000.can failed with error -22

The error why I am not able to run can on the dtusat is because there might be something missing in the Eeprom related to the peripherals. The only reason for this is that the EEPROM in the pocketbeagle and the OBC are different, so I am going to create my own image and access the EEPROM.

EDIT 20230505:

  • However after modifying the content of the eeprom with the values of the pocketbeagle, I am able to reproduce the same example as the beginning of this section using the same pin as in the pb but in the dtusat. But when I try with the new pins, nothing is sended.
  • I desoldered the can transceiver, and the overlay seems to work perfectly.
  • I discovered that is necessary to connect the 3v3 of the 40pin connector to 3v3 because there is no internal regulator. After that, and modifying the overlay I AM ABLE TO SEND DATA TO THE TRANSCEIVER, I tested that by connecting the input of the transceiver to the osciloscope and sending a dummy packet.
  • FINALLY I AM ABLE TO RECEIVE PACKETS! By setting the mode to high speed. AND ALSO TO SEND PACKETS, IT IS WORKING!!!!

20230505 Accessing the EEPROM

Using this repo on the pocket beagle:

9f70efb793eaed0439be7f26f0d01fb9.png

And on the OBC:

3a060f23f55e1d127712215267d94886.png

It is necessary to access the uBoot. To do that is necessary to connect to the UART interface. In UART0_TXD and UART0_RXD. Connecting with a normal TTL to usb with si on the pocketbeagle:

6ebb559039e94db13c47aafd9f126d04.png

On the DTUSAT OBC, the UART0 interface is in the 40 pin connector, pin 2(TX) and 4(RX). The output in the DTUSAT OBC:

d63d1fdb849973973ce6681956b58bc0.png

We can see that the eeprom is not programmed, we need to run:

=> // Set i2c device
=> i2c dev 0
=> 
=> // Set the header “magic number”:  0xAA5533EE
=> i2c mw 0x50 0x00.2 aa
=> i2c mw 0x50 0x01.2 55
=> i2c mw 0x50 0x02.2 33
=> i2c mw 0x50 0x03.2 ee
=> 
=> // Set the Board name (bytes 0 – 4):  “A335”
=> i2c mw 0x50 0x04.2 41
=> i2c mw 0x50 0x05.2 33
=> i2c mw 0x50 0x06.2 33
=> i2c mw 0x50 0x07.2 35
=> 
=> // Set the Board name (bytes 4 – 7):  “PBGL”
=> i2c mw 0x50 0x08.2 50
=> i2c mw 0x50 0x09.2 42
=> i2c mw 0x50 0x0a.2 47
=> i2c mw 0x50 0x0b.2 4C
=> 
=> // Set the Board version - only required for BeagleBone devices.
=> i2c mw 0x50 0x0c.2 30
=> i2c mw 0x50 0x0d.2 30
=> i2c mw 0x50 0x0e.2 41
=> i2c mw 0x50 0x0f.2 32
=>
=> // Write the serial number, is not necessary, but just in case
=> i2c mw 0x50 0x10.2 31
=> i2c mw 0x50 0x11.2 37
=> i2c mw 0x50 0x12.2 35
=> i2c mw 0x50 0x13.2 30
=> i2c mw 0x50 0x14.2 45
=> i2c mw 0x50 0x15.2 50
=> i2c mw 0x50 0x16.2 42
=> i2c mw 0x50 0x17.2 30
=> i2c mw 0x50 0x18.2 36
=> i2c mw 0x50 0x19.2 38
=> i2c mw 0x50 0x1a.2 36
=> i2c mw 0x50 0x1b.2 32

I have tried to write on the eeprom, but it is not working for some reason:

51a56b6c06b06818527a75063e68d572.png

It seems that you need to ground the EEPROM_WP to edit the eeprom, that is (U1.M2)EEPROM.WP, that on the DTUSAT OBC is in the TP WP, needs to be grounded like:

48a0b0ef39b7ba4e9602b9f66d895666.png

After connecting that I was able to modify the eeprom and put it exactly as in the pocketbeagle:

964418ba19b0e97822b09205b5cf8217.png