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_ADDRselected. - 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_ COUN T2 - 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.