Pierre: Accessing the UICR is pretty simple. There is a structure defined in nrf52.h that can be used to read the customer variables. You just do this: NRF_UICR->CUSTOMER[0]
Note that Aditi has pointed out that we decided to use some of the customer registers by default. You can change this if you want but that might be a bit of a pain when you upgrade. Currently, the first two locations are used in the customer space. Note that there is no “generic” API to read them in ble_hw.c. You would just add your own code to the nrf specific code to read what you wanted from them. > On May 30, 2017, at 4:08 AM, aditi hilbert <ad...@runtime.io> wrote: > > Hi Pierre, > > Yes, there is a “ble_hw_get_public_addr" function that does the following: > > * If the user has overridden the default public address (the syscfg variable) > with a non-zero public address, that address will be returned by this > function. > * If the default public address in the syscfg is all zero, the code will read > FICR and check if the device address type in the FICR is public. If so, it > means the nordic chip was factory programmed with a public address and this > will be used. > * If both of the above checks fail, the code will read UICR[0] and UICR[1] to > see if a public address has been programmed into the UICR. We are doing this > to make it easy for folks to program their development kits with public > addresses so they do not have to hardcode them. UICR[0] will contain the > least significant 4 bytes of the device address. UICR[1] will contain the > most significant two bytes. The upper 16 bits of this word should be set to > 0. The API will presume that this is a valid public device address as long as > the upper 16-bits of this 32-bit word are all zero. We will also check to see > if this is a valid public address (see below). If both UICR[0] and UICR[1] > are zero, this will not be considered a valid public address. > > thanks, > aditi > > >> On May 30, 2017, at 4:41 PM, Pierre Kircher <pkirc...@me.com> wrote: >> >> the nrf52 has a user config memory so called UICR starts at 0x10001080 and >> stores 32 bytes .. >> >> id like to use those for internal 1 time settings like device id .. >> or offsets for sensors >> >> wiriting isnt the issue i just need to be able to access them >> >> in the softdevice they are usualy applied like >> >> uint32_t UICR_ADDR_0x80 __attribute__((at(0x10001080))) >> __attribute__((used)) = 0x12345678; >> >> is there a current way to read them from mynewt ? >> >> thanks a ton, and sorry if thats a noob question. >> >> pierre >> >> http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fuicr.html&cp=2_2_0_13_0_61 >> >> <http://infocenter.nordicsemi.com/index.jsp?topic=/com.nordic.infocenter.nrf52832.ps.v1.1/uicr.html&cp=2_2_0_13_0_61>