Comms Cape Gateware for BeagleV-Fire#

The comms cape provides an array of communication protocols including

  • one RS485,

  • one CAN,

  • two analog 4-20 mA current loops,

  • two 3A 50V interfaces allowing the control of high current loads.

Cape schematics, layout, and mechanicals#

For the schematics, layout, and mechanicals of the cape, please refer to Beaglebone Industrial Comms Cape.

Usage#

Firstly, the comms cape gateware must be compiled and updated on the beagleV-Fire. This can be done by using the build-bitstream.py script in the gateware repository with the cape_comms.yaml build option file.

python3 build-bitstream.py build-options/cape_comms.yaml

CAN#

Todo

Due to the current Linux kernel being on 6.1, only a UIO driver is available instead of a Socket CAN driver. This section will be updated once Linux kernel 6.6 is shipped for the beagleV-fire, with the Socket CAN driver.

RS485#

The RS485 interface is connected to UART4 on the BeagleV-Fire. It can be accessed using /dev/bone/uart/4 in Linux.

Sink drivers#

The sink drivers are connected to the P9_15 and P9_23 GPIOs. They can be controlled by writing to the GPIOs by:

echo 425 > /sys/class/gpio/export
echo 431 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio425/direction
echo out > /sys/class/gpio/gpio431/direction
echo 1 > /sys/class/gpio/gpio425/value
echo 1 > /sys/class/gpio/gpio431/value

Current loops#

The current loops are connected to the ADC inputs of the BeagleV-Fire at pins P9_35 and P9_36. They can be accessed once QSPI is enabled in the comms cape device tree overlay. The current loops can be read by:

cat /sys/bus/iio/devices/iio:device0/in_voltage5_raw #Current Loop A
cat /sys/bus/iio/devices/iio:device0/in_voltage6_raw #Current Loop B

Voltage to current conversion will have to be done in software.

Pinout#

The full pinout for the cape interface spec can be found here . You can also see the pinout below, refer to the last column for comms-cape specific pins.

P8 Header#

Signal

Control

Irq #

Description

P8_1

n/a

n/a

GND

P8_2

n/a

n/a

GND

P8_3

MSS GPIO_2[0]

53

User LED 0

P8_4

MSS GPIO_2[1]

53

User LED 1

P8_5

MSS GPIO_2[2]

53

User LED 2

P8_6

MSS GPIO_2[3]

53

User LED 3

P8_7

MSS GPIO_2[4]

53

User LED 4

P8_8

MSS GPIO_2[5]

53

User LED 5

P8_9

MSS GPIO_2[6]

53

User LED 6

P8_10

MSS GPIO_2[7]

53

User LED 7

P8_11

MSS GPIO_2[8]

53

User LED 8

P8_12

MSS GPIO_2[9]

53

User LED 9

P8_13

core_pwm[1] @ 0x41500000

n/a

PWM_2:1

P8_14

MSS GPIO_2[11]

53

User LED 11

P8_15

MSS GPIO_2[12]

53

GPIO

P8_16

MSS GPIO_2[13]

53

GPIO

P8_17

MSS GPIO_2[14]

53

GPIO

P8_18

MSS GPIO_2[15]

53

GPIO

P8_19

core_pwm[0] @ 0x41500000

n/a

PWM_2:0

P8_20

MSS GPIO_2[17]

53

GPIO

P8_21

MSS GPIO_2[18]

53

GPIO

P8_22

MSS GPIO_2[19]

53

GPIO

P8_23

MSS GPIO_2[20]

53

GPIO

P8_24

MSS GPIO_2[21]

53

GPIO

P8_25

MSS GPIO_2[22]

53

GPIO

P8_26

MSS GPIO_2[23]

53

GPIO

P8_27

MSS GPIO_2[24]

53

GPIO

P8_28

MSS GPIO_2[25]

53

GPIO

P8_29

MSS GPIO_2[26]

53

GPIO

P8_30

MSS GPIO_2[27]

53

GPIO

P8_31

core_gpio[0] @ 0x41100000

126

GPIO

P8_32

core_gpio[1] @ 0x41100000

127

GPIO

P8_33

core_gpio[2] @ 0x41100000

128

GPIO

P8_34

core_gpio[3] @ 0x41100000

129

GPIO

P8_35

core_gpio[4] @ 0x41100000

130

GPIO

P8_36

core_gpio[5] @ 0x41100000

131

GPIO

P8_37

core_gpio[6] @ 0x41100000

132

GPIO

P8_38

core_gpio[7] @ 0x41100000

133

GPIO

P8_39

core_gpio[8] @ 0x41100000

134

GPIO

P8_40

core_gpio[9] @ 0x41100000

135

GPIO

P8_41

core_gpio[10] @ 0x41100000

136

GPIO

P8_42

core_gpio[11] @ 0x41100000

137

GPIO

P8_43

core_gpio[12] @ 0x41100000

138

GPIO

P8_44

core_gpio[13] @ 0x41100000

139

GPIO

P8_45

core_gpio[14] @ 0x41100000

140

GPIO

P8_46

core_gpio[15] @ 0x41100000

141

GPIO

P9 Header#

Signal

Control

Irq #

Description

P9_1

n/a

n/a

GND

P9_2

n/a

n/a

GND

P9_3

n/a

n/a

VCC 3.3V

P9_4

n/a

n/a

VCC 3.3V

P9_5

n/a

n/a

VDD 5V

P9_6

n/a

n/a

VDD 5V

P9_7

n/a

n/a

SYS 5V

P9_8

n/a

n/a

SYS 5V

P9_9

n/a

n/a

NC

P9_10

n/a

n/a

SYS_RSTN

P9_11

MMUART4

94

UART4 RX <— For RS485

P9_12

core_gpio[1] @ 0x41200000

143

GPIO

P9_13

MMUART4

94

UART4 TX <— For RS485

P9_14

core_pwm[0] @ 0x41400000

n/a

PWM_1:0

P9_15

core_gpio[4] @ 0x41200000

146

GPIO

P9_16

core_pwm[1] @ 0x41400000

n/a

PWM_1:1

P9_17

MSS SPI0

54

SPI0 CS

P9_18

MSS SPI0

54

SPI0 MOSI

P9_19

MSS I2C0

58

I2C0 SCL

P9_20

MSS I2C0

58

I2C0 SDA

P9_21

MSS SPI0

54

SPI0 MISO

P9_22

MSS SPI0

54

SPI0 SCLK

P9_23

core_gpio[10] @ 0x41200000

152

GPIO

P9_24

CAN_1_RXBUS

n/a

CAN RX <— For CAN

P9_25

CAN_1_TX_EBL

154

CAN TX EBL

P9_26

CAN_1_TXBUS

n/a

CAN TX

P9_27

core_gpio[14] @ 0x41200000

156

GPIO

P9_28

MSS SPI1

55

SPI1 CS

P9_29

MSS SPI1

55

SPI1 MISO

P9_30

core_gpio[17] @ 0x41200000

159

GPIO

P9_31

MSS SPI1

55

SPI1 SCLK

P9_32

n/a

n/a

VDD ADC

P9_33

n/a

n/a

ADC input 4

P9_34

n/a

n/a

AGND

P9_35

n/a

n/a

ADC input 6

P9_36

n/a

n/a

ADC input 5

P9_37

n/a

n/a

ADC input 2

P9_38

n/a

n/a

ADC input 3

P9_39

n/a

n/a

ADC input 0

P9_40

n/a

n/a

ADC input 1

P9_41

core_gpio[19] @ 0x41200000

161

GPIO

P9_42

core_pwm[0] @ 0x41000000

n/a

PWM_0:0

P9_43

n/a

n/a

GND

P9_44

n/a

n/a

GND

P9_45

n/a

n/a

GND

P9_46

n/a

n/a

GND