I'm trying to use the GPIO ATR functionality on an E310 using a 'Python
Snippet' block in Gnuradio. I have code that works this way for a B210 and
am adapting it to work for the E310. However, I have not had any success.
The get_gpio_attr READBACK attribute (reads back input GPIOs but can also
read which output pins are high) print statements indicate GPIO data pin 6
should be high but there is nothing there when checked with a voltmeter.
I'm happy to provide any additional information.
Thanks,
Ethan

E310 GPIO ATR code

####################################

#   CHANGING GPIO STATE FOR E310   #

####################################

import uhd

ATR_GPIO_MASK = 0b111111

# 1=atr 0=manual

ATR_CTRL = 0b111111

# 1=output 0=input

ATR_DDR = 0b111111

# 1=high on 0=nothing

ATR_0X = 0b100000

ATR_RX = 0b010000

ATR_TX = 0b001000

ATR_XX = 0b000100

# find usrp device

USRP_E310 = uhd.usrp.MultiUSRP('serial=F644E0')

# find usrp gpio port name

BANK_NAME = USRP_E310.get_gpio_banks(0)[0]

print('\n\n')

print( USRP_E310.get_gpio_attr(BANK_NAME, 'CTRL') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'DDR') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'OUT') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_0X') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_RX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_TX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_XX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'READBACK') )

print('\n\n')

# configure gpio for atr operation

USRP_E310.set_gpio_attr(BANK_NAME, 'CTRL', ATR_CTRL, ATR_GPIO_MASK)

USRP_E310.set_gpio_attr(BANK_NAME, 'DDR', ATR_DDR, ATR_GPIO_MASK)

USRP_E310.set_gpio_attr(BANK_NAME, 'ATR_0X', ATR_0X, ATR_GPIO_MASK)

USRP_E310.set_gpio_attr(BANK_NAME, 'ATR_RX', ATR_RX, ATR_GPIO_MASK)

USRP_E310.set_gpio_attr(BANK_NAME, 'ATR_TX', ATR_TX, ATR_GPIO_MASK)

USRP_E310.set_gpio_attr(BANK_NAME, 'ATR_XX', ATR_XX, ATR_GPIO_MASK)

print('\n\n')

print( USRP_E310.get_gpio_attr(BANK_NAME, 'CTRL') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'DDR') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'OUT') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_0X') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_RX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_TX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'ATR_XX') )

print( USRP_E310.get_gpio_attr(BANK_NAME, 'READBACK') )

print('\n\n')


Print statement outputs

0

4294967295

0

0

0

0

0

0

63 < CTRL

4294967295 < DDR

0 < OUT

32 < 0X (idle) set for pin 6

16 < RX set for pin 5

8 < TX set for pin 4

4 < XX (full duplex) set for pin 3

32 < READBACK detects high on pin 6
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to