I’m using beaglebone to communicate with some PIC16F through I2C2 (pins 19 and 20).
Each PIC is in its own board, and all boards are connected physically to each other though a standard connector (like a beaglebone cape).
All boards are powered with the same source power (one source for all boards)
At normal conditions, it works fine.
But sometimes the I2C bus locks and even if I unplug all the PIC boards, leaving the beaglebone alone, the I2C bus
stil continue locked. What I mean locked is that I run i2cdetect (or specific a C program with ioctl/read/write) and only get timeout for all address.
The I2C bus only works again if I reset the board.
I’m looking for a way to reset the I2C system from linux user space (or at driver lever if necessary) so I do not need to
reset the entire board to get it work. It seems that there is no ioctl that reset the I2C system in Angstrom distribution kernel.
Also, I looking for a reason to explain why this problem occur, but the reset for I2C will be very nice.
Does anybody have this problem?