Skip to main content

Module register

Module register 

Source
Expand description

Where the concentrator keeps its registers.

The chip is laid out in blocks, each with a base address: the receive buffer, the two transmit chains, the common block, the front end, the two microcontrollers, the timestamp counter, and the one-time programmable memory that carries the part number.

Most registers are narrower than the byte they live in, so a register is an address plus the bits it occupies inside it. Writing one means reading that byte, replacing those bits, and writing it back, which is why Register carries the offset and the width rather than just an address.

Structs§

Correlator
The settings that decide how hard a correlator looks for one spreading factor.
Register
A register, which is some of the bits of a byte at an address.

Enums§

Bank
Which bank of demodulator settings a register belongs to.

Constants§

AGC_MCU_BASE
The automatic gain control microcontroller.
AGC_MCU_CLEAR
Holds the gain control microcontroller in reset.
AGC_MCU_CLK_EN
Runs the clock of the gain control microcontroller.
AGC_MCU_HOST_PROG
Gives the host the gain control microcontroller memory, so firmware can be written.
AGC_MCU_PARITY_ERROR
Set by the chip when the firmware it holds does not check out.
AGC_MCU_STATUS
What the gain control microcontroller is doing.
ARB_MCU_BASE
The arbiter microcontroller, which shares the radios between the receivers.
ARB_MCU_CLEAR
Holds the arbiter microcontroller in reset.
ARB_MCU_CLK_EN
Runs the clock of the arbiter microcontroller.
ARB_MCU_HOST_PROG
Gives the host the arbiter microcontroller memory.
ARB_MCU_PARITY_ERROR
Set by the chip when the arbiter firmware does not check out.
ARB_MCU_STATUS
What the arbiter microcontroller is doing.
CAPTURE_RAM_BASE
The capture memory.
CLK_CTRL_BASE
The clock controls.
CLOCK_DIVIDER_ENABLE
Whether the dividers that make the other clocks from it are running.
CLOCK_RADIO_A_SELECT
Whether the concentrator takes its clock from the front end on the first chain.
CLOCK_RADIO_B_SELECT
Whether it takes it from the second.
COMMON_BASE
The block holding the version, the page selector, and the chip-wide controls.
COMMON_CLK32_RIF_CTRL
Runs the radios from the host clock rather than their own.
COMMON_FSK_MODEM_ENABLE
Whether the frequency shift keying demodulator runs.
COMMON_GLOBAL_ENABLE
Whether the receivers run at all.
COMMON_HOST_RADIO_CTRL
Whether the host drives the front ends directly rather than the gain control microcontroller.
COMMON_MULTI_MODEM_ENABLE
Whether the eight multi-spreading-factor demodulators run.
COMMON_PAGE
Which of the four memory pages the external memory window shows.
COMMON_SERVICE_MODEM_ENABLE
Whether the single demodulator fixed to one spreading factor runs.
COMMON_VERSION
The chip version, which a working concentrator answers with EXPECTED_VERSION.
EXTERNAL_MEMORY_BASE
The paged external memory, where the microcontroller firmware is written.
FSK_ADDRESS_COMPARISON
Whether the FSK receiver compares an address byte before taking a packet.
FSK_AUTO_AFC
Whether the FSK receiver corrects for a sender being off frequency.
FSK_BANDWIDTH_EXPONENT
How wide the FSK receiver listens, as a power of two.
FSK_BITRATE_LSB
The bit rate, low byte.
FSK_BITRATE_MSB
The bit rate the FSK receiver runs at, high byte.
FSK_BROADCAST_ADDRESS
The address every device takes.
FSK_CRC_ENABLE
Whether the FSK receiver checks a packet’s checksum.
FSK_CRC_IBM
Which of the two checksums a packet carries.
FSK_DCFREE_ENCODING
How the bits are kept from settling at one level for too long.
FSK_ERROR_TOLERANCE
How far the bit timing may drift before a packet is given up on.
FSK_FREQUENCY_LSB
The low bits of it.
FSK_FREQUENCY_MSB
The high bits of the intermediate frequency the keying demodulator listens on.
FSK_INVERT_IQ
Whether it swaps the two halves of the signal.
FSK_INVERT_RX
Whether the FSK receiver inverts what it hears.
FSK_NODE_ADDRESS
The address a packet has to carry, when the receiver is comparing one.
FSK_PACKET_MODE
Whether a packet carries its own length, rather than every packet being one size.
FSK_PATTERN_SIZE
How many bytes of the sync pattern the FSK receiver matches, less one.
FSK_PAYLOAD_LENGTH
How long a packet is when it does not carry its own length.
FSK_RADIO_SELECT
Which radio that demodulator takes its samples from.
FSK_RSSI_LENGTH
How long the FSK receiver measures a signal level over.
FSK_SYNC_WORD_BYTES
How many bytes of sync word the FSK receiver holds.
FSK_TIMEOUT_LSB
How long it waits, low byte.
FSK_TIMEOUT_MSB
How long the FSK receiver waits for a packet, high bits.
GPIO_BASE
The general purpose pins.
MBIST_BASE
The built-in memory self test.
MODEM_ENABLE_FULL
Which of the first eight demodulators are enabled.
MODEM_ENABLE_LIMITED
Which of the second eight are.
OTP_BASE
The one-time programmable memory, which carries the part number.
OTP_BYTE_ADDR
Which byte of the one-time programmable memory the read register answers with.
OTP_CHECKSUM_STATUS
What the one-time programmable memory made of its own checksum.
OTP_FSM_READY
Whether the one-time programmable memory is ready to be read.
OTP_RD_DATA
The byte at the address OTP_BYTE_ADDR selected.
RADIO_FE_BASE
The radio front end.
RF_EN_A_RADIO_EN
Powers the front end on the first chain.
RF_EN_A_RADIO_RST
Holds the front end on the first chain in reset.
RF_EN_B_RADIO_EN
Powers the front end on the second chain.
RF_EN_B_RADIO_RST
Holds the front end on the second chain in reset.
RX_BUFFER_BASE
The buffer received packets are read out of.
RX_BUFFER_NB_BYTES_LSB
The low bits of that count.
RX_BUFFER_NB_BYTES_MSB
How many bytes the receive buffer is holding, the high bits of the count.
RX_CHANNEL_GAIN
The fixed channel gain, which is taken only when the host drives it.
RX_CHANNEL_GAIN_VALID
Whether that fixed gain is to be taken.
RX_CORRELATOR_CLEAR
Whether a correlator clears its accumulator between detections.
RX_CORRELATOR_CLOCK_ENABLE
Which correlators are clocked, one bit per channel.
RX_CORRELATOR_FIRST_EDGE
Whether a correlator takes only the first edge it detects.
RX_CORRELATOR_SF_ENABLE
Which spreading factors the correlators look for, one bit each counting from SF5.
RX_DC_NOTCH_ENABLE
Whether the notch that removes the carrier at zero is in circuit.
RX_DFT_PEAK_MODE
Which peaks the frequency transform takes.
RX_DRIFT_EXPONENT
How far the drift mantissa is shifted.
RX_DRIFT_INVERT_SYMBOL_TIME
Whether the symbol time is taken with the opposite sign.
RX_DRIFT_MANTISSA_LSB
The low bits of that drift.
RX_DRIFT_MANTISSA_MSB
The high bits of the drift that turns a frequency error into a timing one.
RX_FINE_TIMING_GAIN_AUTO
The proportional gain the fine timing uses while it is finding a packet.
RX_FINE_TIMING_GAIN_PAYLOAD
The proportional gain it uses through the payload.
RX_FINE_TIMING_INTEGRATE_SF11
Whether the fine timing runs its integrator at SF11.
RX_FINE_TIMING_INTEGRATE_SF12
Whether it runs it at SF12.
RX_FORCE_DEFAULT_FILTER
Whether the receive filter is held at its default rather than tracking the gain.
RX_FREQUENCY_SYNC_THRESHOLD
How close a frequency has to be before the receiver calls it synchronized.
RX_GAIN_AUTOMATIC
Whether the gain control microcontroller drives the channel gain rather than the host.
RX_GAIN_DROP_COMPENSATION
Whether a gain drop is compensated for in the demodulator.
RX_GAIN_MAX_ATTENUATION
The most the channel gain control will attenuate.
RX_GAIN_MIN_ATTENUATION
The least it will attenuate.
RX_GAIN_TARGET_LEVEL
The level the demodulator gain control aims for.
RX_GAIN_THRESHOLD_HIGH
The level the channel gain control backs off above.
RX_GAIN_THRESHOLD_LOW
The level it comes back below.
RX_MODEM_SYNC_DELTA_LSB
The low bits of that difference.
RX_MODEM_SYNC_DELTA_MSB
How far apart the correlators and the demodulators are allowed to be, high bits.
RX_PREAMBLE_SYMBOLS_LSB
How many preamble symbols a receiver expects, low bits.
RX_PREAMBLE_SYMBOLS_MSB
The high bits of that count.
RX_RADIO_SELECT
Which radio each of the eight channels takes its samples from, one bit per channel.
RX_RSSI_DEFAULT
What a channel power reading starts from before anything is heard.
RX_RSSI_FILTER_ALPHA
How heavily the channel power reading is filtered.
RX_SYNC_SF5_PEAK1
Where the first sync symbol sits for SF5, which has only the private form.
RX_SYNC_SF5_PEAK2
Where the second one sits.
RX_SYNC_SF6_PEAK1
The same for SF6.
RX_SYNC_SF6_PEAK2
And its second symbol.
RX_SYNC_SF7_TO_SF12_PEAK1
Where the first sync symbol sits for SF7 through SF12, which is what says whether the receivers are listening to a public network or a private one.
RX_SYNC_SF7_TO_SF12_PEAK2
Where the second one sits.
RX_TIMING_GAIN_AUTO
The proportional gain the timestamping bank uses while finding a packet.
RX_TIMING_GAIN_PAYLOAD
The proportional gain it uses through the payload.
RX_TIMING_GAIN_PREAMBLE
The proportional gain it uses through the preamble.
RX_TIMING_INTEGRAL_AUTO
The integral gain it uses while finding a packet.
RX_TIMING_INTEGRAL_PAYLOAD
The integral gain it uses through the payload.
RX_TIMING_INTEGRAL_PREAMBLE
The integral gain it uses through the preamble.
RX_TIMING_INTEGRATE_SF11
Whether the timestamping bank runs its integrator at SF11.
RX_TIMING_INTEGRATE_SF12
Whether it runs it at SF12.
RX_TIMING_MODE
How the timestamping bank tracks timing.
RX_TIMING_ROUNDING
Whether the timestamping bank rounds its result.
RX_TOP_BASE
The receive chain.
RX_TOP_LORA_SERVICE_FSK_BASE
The single-spreading-factor receiver and the FSK receiver.
SERVICE_BANDWIDTH
The bandwidth the service receiver runs at.
SERVICE_CAD_RX_TX
Whether the service receiver listens, rather than checking for activity.
SERVICE_CODING_RATE
The coding rate the service receiver assumes when a header does not carry one.
SERVICE_CRC_ENABLE
Whether the service receiver expects a checksum on a packet without a header.
SERVICE_DAGC_GAIN_DROP_COMP
Whether a gain drop is compensated for in the service receiver.
SERVICE_DAGC_IN_COMP
Compensates the service receiver gain into its detector.
SERVICE_DAGC_TARGET_LEVEL
What signal level the service receiver gain aims for.
SERVICE_DC_NOTCH_ENABLE
Whether the service receiver runs its notch filter.
SERVICE_DETECT_PEAK_COUNT
How many peaks the service receiver counts before it believes a preamble.
SERVICE_DETECT_PEAK_COUNT2
How many peaks the service receiver counts on its second pass.
SERVICE_DETECT_PEAK_TO_NOISE
How far above the noise a peak has to be for the service receiver to take it.
SERVICE_DETECT_USE_GAIN_SYMBOL
Whether the service receiver weighs a symbol gain into detection.
SERVICE_DFT_PEAK_MODE
How the service receiver picks a peak out of its transform.
SERVICE_DRIFT_EXPONENT
What the service receiver drift is scaled by.
SERVICE_DRIFT_INVERT_SYMBOL_TIME
Which way the service receiver applies a drift over a symbol.
SERVICE_DRIFT_MANTISSA_LSB
How far the service receiver expects a carrier to drift, low byte.
SERVICE_DRIFT_MANTISSA_MSB
How far the service receiver expects a carrier to drift, high bits.
SERVICE_FINE_SYNC
Whether the service receiver runs the finer synchronization the fast rates need.
SERVICE_FORCE_DEFAULT_FIR
Holds the service receiver to the default filter rather than one chosen for the rate.
SERVICE_FREQUENCY_LSB
The low bits of it.
SERVICE_FREQUENCY_MSB
The high bits of the intermediate frequency the fixed demodulator listens on.
SERVICE_IMPLICIT_HEADER
Whether the service receiver expects packets without a header.
SERVICE_MODEM_ENABLE
Whether the service receiver is clocked at all.
SERVICE_MODEM_START
Starts the service receiver once it is configured.
SERVICE_PAYLOAD_LENGTH
How long a packet without a header is.
SERVICE_PPM_OFFSET
Whether the service receiver expects a low data rate optimization.
SERVICE_PREAMBLE_LSB
How many preamble symbols the service receiver expects, low byte.
SERVICE_PREAMBLE_MSB
How many preamble symbols the service receiver expects, high byte.
SERVICE_RADIO_SELECT
Which radio that demodulator takes its samples from.
SERVICE_SPREADING_FACTOR
The one spreading factor the service receiver looks for.
SERVICE_SYNC_PEAK1
Where the first sync symbol sits for the fixed demodulator.
SERVICE_SYNC_PEAK2
Where the second one sits.
SERVICE_TIMING_GAIN_AUTOMATIC
How hard the service receiver corrects timing on its own.
SERVICE_TIMING_GAIN_INTEGRAL
Whether the service receiver accumulates a timing correction, and over what.
SERVICE_TIMING_GAIN_PAYLOAD
How hard the service receiver corrects timing through a payload.
SERVICE_TIMING_GAIN_PREAMBLE
How hard the service receiver corrects timing through a preamble.
TIMESTAMP_BASE
The counter a received packet is timestamped against.
TIMESTAMP_PPS_ENABLE
Whether the counter listens to a pulse per second line.
TIMESTAMP_PPS_POLARITY
Which edge of that line the counter takes.
TX_TOP_A_BASE
The first transmit chain.
TX_TOP_B_BASE
The second transmit chain.

Functions§

agc_mailbox_read
One of the four mailboxes the microcontroller answers through.
agc_mailbox_write
One of the four mailboxes the host writes settings into.
arbiter_config
One of the four registers the arbiter is configured through.
arbiter_status
One of the sixteen registers the arbiter reports through.
channel_frequency
The pair of registers holding one channel intermediate frequency.
channel_sync_offset
How far one channel is offset when the arbiter lines its receivers up.
correlator
The correlator settings for one spreading factor.
drift_correction
The drift correction applied at one spreading factor.
frequency_tracking
Whether a bank tracks the frequency of one spreading factor.
fsk_sync_word
One byte of the sync word the FSK receiver looks for.