Are the docs you are using up to date?

Reading the current SRM, (Version C.1) section 5.3.2 says that there is a 
single 4K Byte EEPROM on board the Beaglebone.

They mumble something about there having been a cost reduction.  :-)

--- Graham

==

On Friday, July 15, 2016 at 1:08:27 PM UTC-5, Graham wrote:
>
> OK. In that case it is a 32k Byte part.
> --- Graham
>
> ==
>
> On Friday, July 15, 2016 at 12:37:20 PM UTC-5, Bryan Wilcutt wrote:
>>
>> Graham,
>> The part number is AT24c256 and a quick jot over to Atmel's trusty 
>> website and I found the spec sheet... "256K Serial Eeprom... organized as 
>> 512 pages of 64 bytes each."
>>
>> So, that should mean 512x64 = 32,768 bytes... .32K. 
>> 256k bits = 262,144 / 8 = 32,768 bytes... 32k.  
>>
>> It's most certainly a 32k-byte part.
>>
>> Thanks,
>> Bryan
>>
>> On Friday, July 15, 2016 at 11:45:02 AM UTC-5, Graham wrote:
>>
>>> Brian: 
>>>
>>> You need to learn to speak "marketing" and "binary".
>>>
>>> A 32 k EEPROM (named by marketing) is a 32k BIT EEPROM.
>>>
>>> 32k BITs divided by 8 bits-per-byte is 4k BYTES.
>>>
>>> 4k BYTES is 0x1000 BYTES.
>>>
>>> So, your address space wraps around every 0x1000 BYTES.
>>>
>>> The data is not repeated every 0x1000 bytes, it is the SAME data.
>>>
>>> Sounds like your EEPROM is working just fine.
>>>
>>> --- Graham
>>>
>>> ==
>>>
>>> On Friday, July 15, 2016 at 10:47:54 AM UTC-5, Bryan Wilcutt wrote:
>>>>
>>>> I've been playing with the BBB 32k eeprom by reading and writing data 
>>>> to it.  I use fseek(), fopen(), fread() and fwrite().  The device I am 
>>>> reading/writing/opening is:
>>>> /sys/bus/i2c/devices/0-0050/at24-0/nvmem
>>>>
>>>> This does seem to work however not well.   I noticed that the same data 
>>>> is repeated every 0x1000 bytes.  Why is that?  Am I not addressing the 
>>>> part 
>>>> correctly?  Since I'm ultimately using the at24.c driver, I inspected it 
>>>> and it does seem to attempt to translate addresses for the part.  Are 
>>>> there 
>>>> specific limitations with at24 that I should be aware of, nothing seems to 
>>>> be documented that I've seen.
>>>>
>>>>     #define e2FILE    "/sys/bus/i2c/devices/0-0050/at24-0/nvmem"
>>>>
>>>>     int readEEPROMAt(unsigned char *p, unsigned int startAddr, unsigned 
>>>> int len)
>>>>     {
>>>>         int retVal = 0;
>>>>         FILE *fp = NULL;
>>>>
>>>>         if ((fp = fopen(e2FILE, "r")) != NULL)
>>>>         {
>>>>                 if (fseek(fp, startAddr, 0) == 0)
>>>>                {
>>>>                     if (fread(p, 1, len, fp) != len)
>>>>                          printf("Error: Cannot read EEPROM\n");
>>>>                else
>>>>                    retVal = 1;
>>>>        } else {
>>>>               printf("Error: Could not index EEPROM, no data read.");
>>>>         }
>>>>     } else {
>>>>         printf("Error: Cannot open EEPROM\n");
>>>>     }
>>>>
>>>>     if (fp)
>>>>        fclose(fp);
>>>>
>>>>     return retVal;
>>>> }
>>>>
>>>> Bryan
>>>>
>>>>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/38c05665-c281-4cb2-a438-c133a39e2d5a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to