get_gpio_attr()和read_gpio()

get_gpio_attr()和read_gpio()都可以用来对射频板的GPIO进行读取,只不过get_gpio_attr()处于比较顶层的位置,而read_gpio()更靠近底层。get_gpio_attr()在multi_usrp.hpp中声明;read_gpio()在sbx_commom.hpp中声明。

要读取GPIO的输出,get_gpio_attr()中提供了两种方式:OUT和READBACK。OUT只读取由用户控制的引脚输出;READBACK则全部读出。

read_gpio()读取GPIO的结果与get_gpio_attr()的READBACK读取结果相同,都是全部读取。

举例说明:

假设已经定义了USRP设备指针usrp和射频板接口iface,并将GPIO的第6bit和第7bit设置为用户控制:

iface->set_pin_ctrl(dboard_iface::UNIT_TX,TXIO_MASK);
iface->set_gpio_ddr(dboard_iface::UNIT_TX,(TXIO_MASK|RX_LED_IO));

并对发送单元的GPIO作了如下设置(第6bit为1,第7bit为0,此时射频板LED TX/RX亮):

iface->set_gpio_out(dboard_iface::UNIT_TX,TX_LED_LD,TX_LED_IO);

用上述两种方法去读取GPIO的值:

boost::uint32_t out=iface->read_gpio(dboard_iface::UNIT_TX);
std::cout<<out<<std::endl;
boost::uint32_t out1=usrp->get_gpio_attr("TXRX","OUT");
std::cout<<out1<<std::endl;
boost::uint32_t out2=usrp->get_gpio_attr("TXRX","READBACK");
std::cout<<out2<<std::endl

输出的结果分别为:16459(二进制0100000001001011)、64(二进制0000000001000000)和16459(二进制0100000001001011)

时间: 2024-09-17 04:08:58

get_gpio_attr()和read_gpio()的相关文章

子板接口类

射频子板由母板通过"子板接口类"进行管理."子板接口类"继承自i2c: /*! * The daughter board dboard interface to be subclassed. * A dboard instance interfaces with the mboard though this api. * This interface provides i2c, spi, gpio, atr, aux dac/adc access. * Each m