Base class to represent a ROC I2C Bus Device. More...
#include <I2cDevice.h>
Public Member Functions | |
I2cDevice () | |
Default constructor to make old ROOT hapy. | |
I2cDevice (base::Board *board, int port=0, uint8_t addr=0) | |
Constructor with full addressing path information. | |
virtual | ~I2cDevice () |
bool | isSPI () const |
void | setPortNumber (int port) |
Set I2C bus port number on ROC. | |
int | getPortNumber () const |
Returns I2C bus port number on ROC. | |
void | setSlaveAddr (uint8_t addr) |
Set slave address of device on I2C bus. | |
uint8_t | getSlaveAddr () const |
Return slave address of device on I2C bus. | |
int | setRegister (uint8_t reg, uint8_t val, bool veri=false) |
Write to device register with optional readback verification. | |
int | getRegister (uint8_t reg, uint8_t &val) |
Read 8 bit from device register. | |
int | getRegister16 (uint8_t reg, uint16_t &val) |
Read 16 bit from device register. | |
int | setRegisterVerify (uint8_t reg, uint8_t valset, uint8_t &valget) |
Write to device register and return the readback value. | |
int | setRegisterArray (uint8_t reg, const uint8_t *val, int nreg, bool veri=false) |
Write to device register array with optional readback verification. | |
int | getRegisterArray (uint8_t reg, uint8_t *val, int nreg) |
Read from device register array. | |
int | setMailboxRegister (uint8_t reg, const uint8_t *val, int nval) |
Write to device mailbox register. | |
int | getMailboxRegister (uint8_t reg, uint8_t *val, int nval) |
Read from device mailbox register. | |
base::Board & | board () |
Return reference to roc::Board which hosts the Peripheral . | |
base::Board * | getBoard () const |
Returns pointer to the roc::Board which hosts the Peripheral . | |
Static Public Member Functions | |
static void | addAddrMap (base::Board *board) |
Add the I2C interface address set to the address mapping tables. | |
Protected Attributes | |
int | fUseSPI |
indicate that SPI->I2C interface for SysCore3 should be used | |
int | fPort |
I2C bus port number. | |
uint8_t | fSlaveAddr |
I2C device slave address. | |
base::Board * | fBoard |
board pointer |
Base class to represent a ROC I2C Bus Device.
A ROC can have several I2C bus ports. They are served by a common control logic, a switch determines which port is active at a given time. Each bus can have several devices attached, identified by a slave address.
The class holds the addressing information needed to reach the I2cDevice:
Definition at line 14 of file I2cDevice.h.
roc::I2cDevice::I2cDevice | ( | ) |
Default constructor to make old ROOT hapy.
Definition at line 32 of file I2cDevice.cxx.
roc::I2cDevice::I2cDevice | ( | base::Board * | board, | |
int | port = 0 , |
|||
uint8_t | addr = 0 | |||
) |
Constructor with full addressing path information.
Sets up I2cDevice
object with full addressing information
board | ROC board pointer | |
port | the I2C bus port number | |
addr | the I2C device slave address |
Definition at line 47 of file I2cDevice.cxx.
References fUseSPI, and base::Board::is_SPI_I2C().
roc::I2cDevice::~I2cDevice | ( | ) | [virtual] |
Definition at line 55 of file I2cDevice.cxx.
void roc::I2cDevice::addAddrMap | ( | base::Board * | board | ) | [static] |
Add the I2C interface address set to the address mapping tables.
Definition at line 413 of file I2cDevice.cxx.
References base::Board::addRegAddrMapping(), base::Board::is_SPI_I2C(), ROC_NX_I2C_DATA, ROC_NX_I2C_ERROR, ROC_NX_I2C_READ16, ROC_NX_I2C_REGISTER, ROC_NX_I2C_SLAVEADDR, ROC_NX_I2C_SWITCH, ROC_SPI_COMMAND, ROC_SPI_MASTER_STATUS, ROC_SPI_RXDATA, ROC_SPI_TRANSMIT, and ROC_SPI_TXDATA.
Referenced by cmd_board(), and main().
base::Board & base::Peripheral::board | ( | ) | [inherited] |
Return reference to roc::Board
which hosts the Peripheral
.
std::runtime_error | if board pointer not initialized or 0. |
Definition at line 30 of file Peripheral.cxx.
References base::Peripheral::fBoard.
Referenced by nxyter::RocNx::fireTestPulse(), nxyter::MainAdc::getAdcDirect(), nxyter::NxChip::getChannelDelay(), nxyter::MainAdc::getChannelLatency(), nxyter::MainAdc::getClockDelayBufg(), nxyter::MainAdc::getClockDelaySrInit(), base::Gpio::getConfig(), nxyter::RocNx::getDataDebug(), nxyter::RocNx::getFifoEmpty(), nxyter::RocNx::getFifoFull(), nxyter::RocNx::getNxActive(), getRegister(), nxyter::MainAdc::getRegister(), getRegister16(), base::Gpio::getSyncBaud(), base::Gpio::getSyncScale(), nxyter::FebBase::initRoc(), nxyter::FebBase::resetNxI2cBus(), nxyter::FebBase::resetNxI2cRegister(), nxyter::RocNx::resetRocNxTs(), nxyter::NxChip::setChannelDelay(), nxyter::MainAdc::setChannelLatency(), nxyter::MainAdc::setChannelMux(), nxyter::MainAdc::setClockDelay(), nxyter::MainAdc::setClockDelayBufg(), nxyter::MainAdc::setClockDelaySrInit(), base::Gpio::setConfig(), nxyter::RocNx::setDebugMode(), nxyter::RocNx::setLTSDelay(), nxyter::RocNx::setNxActive(), nxyter::NxChip::setNxNumber(), nxyter::RocNx::setParityCheck(), setRegister(), nxyter::MainAdc::setRegister(), setRegisterVerify(), base::Gpio::setSyncBaud(), base::Gpio::setSyncScale(), and nxyter::RocNx::setToDefault().
base::Board* base::Peripheral::getBoard | ( | ) | const [inline, inherited] |
Returns pointer to the roc::Board which hosts the Peripheral
.
Note: normally using board()
is more convenient.
Definition at line 38 of file Peripheral.h.
References base::Peripheral::fBoard.
Referenced by nxyter::FebUtil::acquireTestTriggerData(), nxyter::NxChip::activate(), nxyter::FebBase::addNxChip(), nxyter::NxChip::deactivate(), nxyter::NxChip::isactive(), and nxyter::QuickDaq::QuickDaq().
int roc::I2cDevice::getMailboxRegister | ( | uint8_t | reg, | |
uint8_t * | val, | |||
int | nval | |||
) |
Read from device mailbox register.
Reads nreg 8bit values from a single device register reg. This method is useful for Fifo's or mailbox type registers. The I2C error flags are checked for each transfer, reading is stopped when the first error is detected.
reg | first device register number | |
val | value array | |
nval | number of values to read |
Definition at line 401 of file I2cDevice.cxx.
References getRegister(), and base::Board::operErrBuild().
int roc::I2cDevice::getPortNumber | ( | ) | const [inline] |
Returns I2C bus port number on ROC.
Definition at line 32 of file I2cDevice.h.
References fPort.
Referenced by nxyter::NxI2c::printRegisters().
int roc::I2cDevice::getRegister | ( | uint8_t | reg, | |
uint8_t & | val | |||
) |
Read 8 bit from device register.
Reads an 8bit value from device register reg and checks I2C status for error flags.
reg | device register number | |
val | value |
Definition at line 152 of file I2cDevice.cxx.
References base::Peripheral::board(), fPort, fSlaveAddr, isSPI(), base::Board::kOperBusErr, base::Board::operErrBuild(), and base::Board::operGen().
Referenced by nxyter::FebUtil::acquireTestPulserData(), cmd_autotrim(), cmd_getnx(), getMailboxRegister(), getRegisterArray(), nxyter::NxI2c::getRegMask(), nxyter::NxI2c::getRegTrim(), nxyter::NxI2c::probe(), nxyter::NxI2c::setTestModes(), and nxyter::FebUtil::testNxRegisters().
int roc::I2cDevice::getRegister16 | ( | uint8_t | reg, | |
uint16_t & | val | |||
) |
Read 16 bit from device register.
Reads an 16bit value from device register reg and checks I2C status for error flags.
reg | device register number | |
val | value |
Definition at line 220 of file I2cDevice.cxx.
References base::Peripheral::board(), fPort, fSlaveAddr, isSPI(), and base::Board::operGen().
Referenced by nxyter::FebBase::discoverFebs(), and nxyter::FebBase::getMonAdc().
int roc::I2cDevice::getRegisterArray | ( | uint8_t | reg, | |
uint8_t * | val, | |||
int | nreg | |||
) |
Read from device register array.
Reads nreg 8bit values from an array of device registers starting at register number reg. The I2C error flags are checked for each transfer, reading is stopped when the first error is detected.
reg | first device register number | |
val | value array | |
nreg | number of registers to read |
Definition at line 350 of file I2cDevice.cxx.
References getRegister(), and base::Board::operErrBuild().
Referenced by nxyter::NxI2c::getCounters(), nxyter::NxI2c::getRegCore(), and nxyter::NxI2c::getRegMask().
uint8_t roc::I2cDevice::getSlaveAddr | ( | ) | const [inline] |
Return slave address of device on I2C bus.
Definition at line 40 of file I2cDevice.h.
References fSlaveAddr.
Referenced by cmd_getnx(), nxyter::FebBase::eepromSupport(), nxyter::FebBase::monAdcSupport(), and nxyter::NxI2c::printRegisters().
bool roc::I2cDevice::isSPI | ( | ) | const [inline] |
Definition at line 25 of file I2cDevice.h.
References fUseSPI.
Referenced by getRegister(), getRegister16(), setRegister(), and setRegisterVerify().
int roc::I2cDevice::setMailboxRegister | ( | uint8_t | reg, | |
const uint8_t * | val, | |||
int | nval | |||
) |
Write to device mailbox register.
Writes the nreg 8bit values from array val to a single device register reg. This method is useful for Fifo's or mailbox type registers. The I2C error flags are checked for each transfer, writing is stopped when the first error is detected.
reg | first device register number | |
val | value array | |
nval | number of values to write |
Definition at line 376 of file I2cDevice.cxx.
References base::Board::operErrBuild(), and setRegister().
Referenced by nxyter::NxI2c::setRegTrim().
void roc::I2cDevice::setPortNumber | ( | int | port | ) | [inline] |
int roc::I2cDevice::setRegister | ( | uint8_t | reg, | |
uint8_t | val, | |||
bool | veri = false | |||
) |
Write to device register with optional readback verification.
Writes the 8bit value val to device register reg. If veri is true
, the register contents is read back and verified. The I2C status is checked for error flags after the write and optional read cycle.
reg | device register number | |
val | value | |
veri | if true readback verification done (default is false ) |
Definition at line 75 of file I2cDevice.cxx.
References base::Peripheral::board(), fPort, fSlaveAddr, isSPI(), base::Board::kOperBusErr, base::Board::operErrBuild(), and base::Board::operGen().
Referenced by nxyter::FebUtil::acquireTestPulserData(), NxyterWidget::biasRegChanged(), cmd_autosettrh(), cmd_autotrim(), cmd_autovbiass(), cmd_scanmonadc(), cmd_scanvbiasf(), cmd_setnx(), get_vbiass_data(), nxyter::NxI2c::getRegMask(), nxyter::NxI2c::getRegTrim(), nxyter::NxI2c::probe(), setMailboxRegister(), nxyter::FebBase::setNxRegisterAll(), setRegisterArray(), setRegisterVerify(), nxyter::NxI2c::setRegTrim(), nxyter::NxI2c::setTestModes(), and nxyter::FebUtil::testNxRegisters().
int roc::I2cDevice::setRegisterArray | ( | uint8_t | reg, | |
const uint8_t * | val, | |||
int | nreg, | |||
bool | veri = false | |||
) |
Write to device register array with optional readback verification.
Writes the nreg 8bit values from array val to an array of device registers starting at register number reg. When veri is true
, each value is readback and verified. The I2C error flags are checked for each transfer, writing is stopped when the first error is detected.
reg | first device register number | |
val | value array | |
nreg | number of registers to write | |
veri | if true readback verification done (default is false ) |
Definition at line 324 of file I2cDevice.cxx.
References base::Board::operErrBuild(), and setRegister().
Referenced by nxyter::NxI2c::setRegCore(), and nxyter::NxI2c::setRegMask().
int roc::I2cDevice::setRegisterVerify | ( | uint8_t | reg, | |
uint8_t | valset, | |||
uint8_t & | valget | |||
) |
Write to device register and return the readback value.
Writes the 8bit value valset to device register reg, reads it back and returns the readback value in valget. The I2C status is checked for error flags after the write and read cycle.
reg | device register number | |
valset | value to be written | |
valget | value returned from readback |
Definition at line 270 of file I2cDevice.cxx.
References base::Peripheral::board(), fPort, fSlaveAddr, isSPI(), base::Board::kOperBusErr, base::Board::operErrBuild(), base::Board::operGen(), and setRegister().
Referenced by nxyter::NxI2c::getRegTrim().
void roc::I2cDevice::setSlaveAddr | ( | uint8_t | addr | ) | [inline] |
Set slave address of device on I2C bus.
Definition at line 36 of file I2cDevice.h.
References fSlaveAddr.
Referenced by cmd_setnxaddr(), and nxyter::Feb1nxGenD::Feb1nxGenD().
base::Board* base::Peripheral::fBoard [protected, inherited] |
board pointer
Definition at line 26 of file Peripheral.h.
Referenced by base::Peripheral::board(), base::Peripheral::getBoard(), and base::Peripheral::Peripheral().
int roc::I2cDevice::fPort [protected] |
I2C bus port number.
Definition at line 17 of file I2cDevice.h.
Referenced by getPortNumber(), getRegister(), getRegister16(), setPortNumber(), setRegister(), and setRegisterVerify().
uint8_t roc::I2cDevice::fSlaveAddr [protected] |
I2C device slave address.
Definition at line 18 of file I2cDevice.h.
Referenced by getRegister(), getRegister16(), getSlaveAddr(), setRegister(), setRegisterVerify(), and setSlaveAddr().
int roc::I2cDevice::fUseSPI [protected] |
indicate that SPI->I2C interface for SysCore3 should be used
Definition at line 16 of file I2cDevice.h.
Referenced by I2cDevice(), and isSPI().