I want to use the FICR data on the nRF51 to figure out the RAM size. I found a problem and was wondering if this is a known issue, and if it's been fixed in newer revisions of the chip.
The chip I'm testing is nRF51, and I have several versions of them.
First of all, nRF51422-CEAA Rev 2 (version 4): returns that it has 2 RAM banks, 8kB of memory in each, so 16kB which is correct.
Next nRF51422-CEAA Rev 3 (version 7): returns that it has 4 RAM banks, 8kB of memory each, which would mean 32kB of memory and that would be wrong. However, if I read individual RAM bank sizes (SIZERAMBLOCK[0]-[3]), only two of them are populated with 0x2000 and the other two fields read 0xFFFFFFFF, so evidently the chip still only has 16kB.
However, since the number of banks is wrong I can't just multiply number of RAM banks by bank size to get the total value, and I have to read the registers separately.
I don't have any newer Rev 3 chips (version 9) to test this, but I was wondering if this is something that was addressed.
Here is a screenshot of what I see along with the chip identifier in nRFgo:
More info:
-
Markings: N51422 CEAAC0 1451AJ I have about 20 of these. Might have more, but I haven't really looked. All the ones I have are version 7.
-
I read the FICR data and attached the file: nrf51422_CEAAC0_ficr
-
I am not able to write to 0x20004000. It returns with "Write verify failed. The value 0x0 has been read back from the address to write."