![]() |
![]() |
Specification of the Rx Address Segment Value Register. More...
#include <hyplnk.h>
Data Fields | |
| uint32_t | raw |
| [ro] Raw image of register on read; actual value on write | |
| uint16_t | rxSegVal |
| [rw] Segment address value (base address) | |
| uint8_t | rxLenVal |
| [rw] Selects segment size | |
Specification of the Rx Address Segment Value Register.
There is an array of 64 segment value registers. The particular segment value register accessed via hyplnkRXSegValReg_s is specified in hyplnkRXSegIdxReg_s::rxSegIdx.
After the segment index is extracted from the incoming address based on hyplnkRXAddrSelReg_s::rxSegSel, the index is dereferenced through this table to get a base address and length.
The local address (which will be presented through the SES or SMS MPAX) is constructed by:
((rxSegVal << 16) | RxAddress) & ((1 << (1 + rxLenVal)) - 1)
| uint8_t hyplnkRXSegValReg_s::rxLenVal |
[rw] Selects segment size
Field size: 5 bits
| rxLenVal | Segment Size |
|---|---|
| 0-7 | 0 |
| 8 | 0x0 0000 0200 |
| 9 | 0x0 0000 0400 |
| 10 | 0x0 0000 0800 |
| 11 | 0x0 0000 1000 |
| 12 | 0x0 0000 2000 |
| 13 | 0x0 0000 4000 |
| 14 | 0x0 0000 8000 |
| 15 | 0x0 0001 0000 |
| 16 | 0x0 0002 0000 |
| 17 | 0x0 0004 0000 |
| 18 | 0x0 0008 0000 |
| 19 | 0x0 0010 0000 |
| 20 | 0x0 0020 0000 |
| 21 | 0x0 0040 0000 |
| 22 | 0x0 0080 0000 |
| 23 | 0x0 0100 0000 |
| 24 | 0x0 0200 0000 |
| 25 | 0x0 0400 0000 |
| 26 | 0x0 0800 0000 |
| 27 | 0x0 1000 0000 |
| 28 | 0x0 2000 0000 |
| 29 | 0x0 4000 0000 |
| 30 | 0x0 8000 0000 |
| 31 | 0x1 0000 0000 |
| uint16_t hyplnkRXSegValReg_s::rxSegVal |
[rw] Segment address value (base address)
Field size: 16 bits