Adil,

I'm sure the responses from the fine developers on the list are likely
to be better than mine. If you copied the list on the first place, you
probably would have had your answer last week.

On Fri, Oct 31, 2014 at 4:29 AM, Adil Ahmed <[email protected]> wrote:
>
> Dear Jason Krinder,
>
>  Hello,
>
> First of all How are you?

Catch up with me at a trade show over a beer and I'll let you know. :-)

>
> i am working on Beaglebone Black and design GUI software for my application,
> The problem that i am facing is using I2C, i am trying to communicate with
> atmel 24c32
> I2C EEPROM which is at address 0x50 in i2c-1 bus of beaglebone black.
>
> when i execute command i2cget 1 0x50 0x00, it shows correct data on 0x00 for
> the first time,
> on second time i2cget 1 0x50 0x00 shows the random value from any other
> location, and other value for the third time.

It depends which kernel you are using which bus is actually
'/dev/i2c-1'. On the BeagleBoard.org Debian stable kernels
(3.8.13-bone6?), Bus '1' is I2C2, which is the cape expansion header
bus. I think that 0x50 is reserved for an EDID EEPROM on the HDMI.

Without a monitor connected for me, it simply fails:
root@beaglebone:~# i2cget -y 1 0x50 0x00
Error: Read failed

If you meant the on-board EEPROM that is on I2C0, then you have to
recognize that the kernel has already taken ownership of that I2C
device and it won't let you simply read it this way:
root@beaglebone:~# i2cget -y 0 0x50 0x00
Error: Could not set address to 0x50: Device or resource busy

You can still easily read the EEPROM using the I2C EEPROM driver,
rather than i2c-dev:
root@beaglebone:~# hexdump -C
/sys/class/i2c-dev/i2c-0/device/0-0050/eeprom | head -5
00000000  aa 55 33 ee 41 33 33 35  42 4e 4c 54 30 41 36 41  |.U3.A335BNLT0A6A|
00000010  30 34 31 34 42 42 42 4b  30 33 36 33 ff ff ff ff  |0414BBBK0363....|
00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00001000  aa 55 33 ee 41 33 33 35  42 4e 4c 54 30 41 36 41  |.U3.A335BNLT0A6A|

>
> when i execute command i2cset 1 0x50 0x00 0x01, it does not write anything
> on the address 0x00, if i execute it many times then result is same (no
> write on address 0x00).
>
> When i execute i2cdump 1 0x50, it show dump from the value 0x100, not from
> 0x00,
> but when i  execute i2cdump 1 0x50 i, then it shows the dump from 0x00.

You are probing I2C2 with a scope to come to this conclusion? If so,
then perhaps you can look at the data coming out of your device to see
if it makes sense. There is a reasonable chance that the HDMI device
sitting on I2C2 at address 0x50 is conflicting with whatever you've
tried to hook up there. You really should choose a different address
than 0x50 on that bus on this board.

>
> There is important point that Circuit is pure OK and CLK is pin 9-19 and
> Data is Pin 9-20,
> pullups are 4.7k supply is 3.3V,

OK. This confirms you are looking at I2C2.

>
> Also when i use PCF8574 I2C I/O Expander at address 0x20 on same bus, then
> all operations mentioned above work 100% correctly,
>
> Is this is the problem on address line 0x50---- 0x5F?
> i need your help in this issue.

Yes, 0x50 is reserved for the on-board HDMI. 0x54-0x57 are reserved
for cape EEPROMs, but you are welcome to include a cape EEPROM on your
expansion board.

>
> Waiting for your reply
>
> Regards
>
> Adil Ahmed
>

-- 
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to