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

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