Why don't you show is what command your running?
Like this:
I am using i2cset just fine on my BBB of P9 19 and 20, it is currently Bus1.
My notes:
i2c detect on Bus1, see my address at 4C and 4D:
i2cdetect -r -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- *4c 4d* -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Dump the 4C device registers, register 0x14 is 0x*00*:
i2cdump -y 1 0x4c
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 11 31 00 00 20 00 00 01 7c 10 00 00 ....?1.. ..?|?..
10: 00 00 00 10 *00* 10 00 00 01 00 80 01 0f 03 07 04 ...?.?..?.??????
20: 00 00 00 04 00 08 f3 04 13 00 11 1f 00 00 00 00 ...?.????.??....
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 22 .............00"
40: 02 04 14 05 00 00 00 00 55 00 00 00 00 00 00 00 ????....U.......
50: 00 00 00 00 00 07 00 00 81 00 00 00 00 40 78 15 .....?..?....@x?
60: 01 10 00 00 00 01 0f 03 07 11 00 00 00 00 06 03 ??...?????....??
70: 02 83 03 00 04 00 80 01 00 00 00 00 00 00 00 00 ???.?.??........
80: 00 00 00 00 11 31 00 00 20 00 00 01 7c 10 00 00 ....?1.. ..?|?..
90: 00 00 00 10 00 10 00 00 01 00 80 01 0f 03 07 04 ...?.?..?.??????
a0: 00 00 00 04 00 08 f3 04 13 00 11 1f 00 00 00 00 ...?.????.??....
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 22 .............00"
c0: 02 04 14 05 00 00 00 00 55 00 00 00 00 00 00 00 ????....U.......
d0: 00 00 00 00 00 07 00 00 81 00 00 00 00 40 78 15 .....?..?....@x?
e0: 01 10 00 00 00 01 0f 03 07 11 00 00 00 00 06 03 ??...?????....??
f0: 02 83 03 00 04 00 80 01 00 00 00 00 00 00 00 00 ???.?.??........
Write 0x*01* to register 0x14:
i2cset -y 1 0x4c 0x14 0x*01*
Dump the registers and not the change to 0x*01*:
i2cdump -y 1 0x4c
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 11 31 00 00 20 00 00 01 7c 10 00 00 ....?1.. ..?|?..
10: 00 00 00 10 *01* 10 00 00 01 00 80 01 0f 03 07 04 ...???..?.??????
20: 00 00 00 04 00 08 f3 04 13 00 11 1f 00 00 00 00 ...?.????.??....
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 22 .............00"
40: 02 04 14 05 00 00 00 00 55 00 00 00 00 00 00 00 ????....U.......
50: 00 00 00 00 00 07 00 00 81 00 00 00 00 40 78 15 .....?..?....@x?
60: 01 10 00 00 00 01 0f 03 07 11 00 00 00 00 06 03 ??...?????....??
70: 02 83 03 00 04 00 80 01 00 00 00 00 00 00 00 00 ???.?.??........
80: 00 00 00 00 11 31 00 00 20 00 00 01 7c 10 00 00 ....?1.. ..?|?..
90: 00 00 00 10 01 10 00 00 01 00 80 01 0f 03 07 04 ...???..?.??????
a0: 00 00 00 04 00 08 f3 04 13 00 11 1f 00 00 00 00 ...?.????.??....
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 30 30 22 .............00"
c0: 02 04 14 05 00 00 00 00 55 00 00 00 00 00 00 00 ????....U.......
d0: 00 00 00 00 00 07 00 00 81 00 00 00 00 40 78 15 .....?..?....@x?
e0: 01 10 00 00 00 01 0f 03 07 11 00 00 00 00 06 03 ??...?????....??
f0: 02 83 03 00 04 00 80 01 00 00 00 00 00 00 00 00 ???.?.??........
Works for me!
On Dec 11, 2014 12:39 AM, <[email protected]> wrote:
>
>
> On Thursday, December 11, 2014 11:39:35 AM UTC+5:30, [email protected]
> wrote:
>>
>> Hi,
>>
>> I am trying to read two bytes of data from a board(slave) using
>> BBB(master) through i2c interface.
>>
>> I connected my board's SDA and SCL lines to P9_18 and P9_17 of BBB
>> respectively.
>>
>> My code is
>>
>> #include <stdio.h>
>> #include <errno.h>
>> #include <string.h>
>> #include <fcntl.h>
>> #include <stdlib.h>
>> #include <unistd.h>
>> #include <linux/i2c-dev.h>
>> #include <sys/ioctl.h>
>>
>>
>> int main()
>> {
>> int fd,i;
>> int addr = 0x43;
>> char buffer[10] = {0};
>>
>> fd = open("/dev/i2c-1", O_RDWR); // opening i2c-1 file. returns a file
>> descriptor used by read
>> if(fd < 0)
>> {
>> printf("i2c failed to open\n");
>> }
>>
>> if(ioctl(fd, I2C_SLAVE, addr) < 0)
>> printf("failed to acquire bus\n");
>>
>> if(read(fd,buffer,2) != 2) //reading 2 bytes of data
>> {
>> printf("i2c read failed\n");
>>
>> }
>> else
>> {
>> for(i=0;i<2;i++)
>> printf("the data is %d \n",buffer[i]);
>> }
>>
>>
>> return 0;
>> }
>>
>>
>>
>>
>>
>>
>> I got output --- "i2c read failed"
>>
>> What is the problem in my code? Or any problem in hardware? When I
>> checked the following command, I got output like
>>
>> root@beaglebone:~# i2cdetect -l
>> i2c-0 i2c OMAP I2C adapter I2C
>> adapter
>> i2c-1 i2c OMAP I2C adapter I2C
>> adapter
>> root@beaglebone:~# ls -l /sys/bus/i2c/devices/i2c-*
>> lrwxrwxrwx 1 root root 0 Jan 1 2000 /sys/bus/i2c/devices/i2c-0 ->
>> ../../../devices/ocp.3/44e0b000.i2c/i2c-0
>> lrwxrwxrwx 1 root root 0 Jan 1 2000 /sys/bus/i2c/devices/i2c-1 ->
>> ../../../devices/ocp.3/4819c000.i2c/i2c-1
>>
>>
>> Can anyone find problem? Please reply.
>>
>
>
> I tried i2cget command but it also showing Error: Read failed.
>
> What it means? Any hardware problem? How i trace the problem?
>
>
>
>
>
>
>
>
>
>
>
> --
> 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.
>
--
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.