DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::timing::DACSlave Class Reference

Class for dac node. More...

#include <DACNode.hpp>

Inheritance diagram for dunedaq::timing::DACSlave:
[legend]
Collaboration diagram for dunedaq::timing::DACSlave:
[legend]

Public Member Functions

 DACSlave (const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
 
virtual ~DACSlave ()=default
 
void set_interal_ref (bool internal_ref) const
 Use DAC internal reference.
 
void set_dac (uint8_t channel, uint32_t code) const
 Configure DAC channel.
 
- Public Member Functions inherited from dunedaq::timing::I2CSlave
virtual ~I2CSlave ()
 
uint8_t get_i2c_address () const
 
uint8_t read_i2c (uint32_t i2c_device_address, uint32_t i2c_reg_address) const
 comodity functions
 
uint8_t read_i2c (uint32_t i2c_reg_address) const
 
void write_i2c (uint32_t i2c_device_address, uint32_t i2c_reg_address, uint8_t data, bool send_stop=true) const
 
void write_i2c (uint32_t i2c_reg_address, uint8_t data, bool send_stop=true) const
 
std::vector< uint8_t > read_i2cArray (uint32_t i2c_device_address, uint32_t i2c_reg_address, uint32_t number_of_words) const
 
std::vector< uint8_t > read_i2cArray (uint32_t i2c_reg_address, uint32_t number_of_words) const
 
void write_i2cArray (uint32_t i2c_device_address, uint32_t i2c_reg_address, std::vector< uint8_t > data, bool send_stop=true) const
 
void write_i2cArray (uint32_t i2c_reg_address, std::vector< uint8_t > data, bool send_stop=true) const
 
std::vector< uint8_t > read_i2cPrimitive (uint32_t number_of_bytes) const
 
void write_i2cPrimitive (const std::vector< uint8_t > &data, bool send_stop=true) const
 
bool ping () const
 
std::string get_master_id () const
 

Additional Inherited Members

- Protected Member Functions inherited from dunedaq::timing::I2CSlave
 I2CSlave (const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
 

Detailed Description

Class for dac node.

Definition at line 41 of file DACNode.hpp.

Constructor & Destructor Documentation

◆ DACSlave()

dunedaq::timing::DACSlave::DACSlave ( const I2CMasterNode * i2c_master,
uint8_t i2c_device_address )

Definition at line 18 of file DACNode.cpp.

19 : I2CSlave(i2c_master, address)
20{}
I2CSlave(const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
Definition I2CSlave.cpp:33

◆ ~DACSlave()

virtual dunedaq::timing::DACSlave::~DACSlave ( )
virtualdefault

Member Function Documentation

◆ set_dac()

void dunedaq::timing::DACSlave::set_dac ( uint8_t channel,
uint32_t code ) const

Configure DAC channel.

Definition at line 33 of file DACNode.cpp.

34{
35
36 if (channel > 7) {
37 throw DACChannelOutOfRange(ERS_HERE, std::to_string(channel));
38 }
39
40 if (code > 0xffff) {
41 throw DACValueOutOfRange(ERS_HERE, std::to_string(code));
42 }
43
44 uint32_t address = 0x18 + (channel & 0x7); // NOLINT(build/unsigned)
45
46 this->write_i2cArray(address, { (uint8_t)((code >> 8) & 0xff), (uint8_t)(code & 0xff) }); // NOLINT(build/unsigned)
47}
#define ERS_HERE
void write_i2cArray(uint32_t i2c_device_address, uint32_t i2c_reg_address, std::vector< uint8_t > data, bool send_stop=true) const
Definition I2CSlave.cpp:99
DACValueOutOfRange
< Namespace
Definition DACNode.hpp:31

◆ set_interal_ref()

void dunedaq::timing::DACSlave::set_interal_ref ( bool internal_ref) const

Use DAC internal reference.

Definition at line 25 of file DACNode.cpp.

26{
27 this->write_i2cArray(0x38, { 0x0, internal_ref });
28}

The documentation for this class was generated from the following files: