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 |