14.3.1.5 Read Request
The read request functionality is only available to peripherals that have the Read Request register (READREQ) implemented. Refer to the register description of individual peripheral chapters for details.
To avoid forcing the peripheral bus to stall when reading read-synchronized Peripheral Core registers, the read request mechanism can be used.
Basic Read Request
Writing a '1
' to the
Read Request bit in the Read Request register (READREQ.RREQ) will request read
synchronization of the register specified in the Address bits in READREQ (READREQ.ADDR)
and set STATUS.SYNCBUSY. When read synchronization is complete, STATUS.SYNCBUSY is
cleared. The read-synchronized value is then available for reading without delay until
READREQ.RREQ is written to '1
' again.
The address to use is the offset to the peripheral's base address of the register that should be synchronized.
Continuous Read Request
Writing a '1
' to the
Read Continuously bit in READREQ (READREQ.RCONT) will force continuous read
synchronization of the register specified in READREQ.ADDR. The latest value is always
available for reading without stalling the bus, as the synchronization mechanism is
continuously synchronizing the given value. READREQ.RCONT prevents READREQ.RREQ from
clearing automatically. For the continuous read mode, RREQ bit is required to be set
once the RCONT bit is set.
SYNCBUSY is set for the first synchronization, but not for the subsequent synchronizations. If another synchronization is attempted, that is by executing a write-operation of a Write-synchronized register), the read request will be stopped, and will have to be manually restarted.
The continuous read synchronization is paused in sleep modes where the generic clock is not running. This means that a new read request is required if the value is needed immediately after exiting sleep.