I think I have found something that rPI and arduino can do but BBB cannot

I have been trying to get a AM2315 I2C Hygrometer to work with my BBB. The datasheet Says that I have to wake up the sensor before using it. I have tried writing to it once, then waiting the 800us it wants. I then sent the write command to tell it to send me the 4 bytes required to calculate the temp and RH. Nothing is working right, played with the timing, tried several libs etc.

Out of desperation I searched more and found this explanation of the problem a user had with this sensor and a Raspberry PI.

on page 3 - “The AM2315 device requires a standard SMBus write function to request the data, but then simply writes the data response immediately on the i2c bus. It does not bother waiting for an SMBus formatted read request”

He decided to use a library called quick2wire that is not for the BBB - and he concluded this →

on page 4 - “So, why did the Quick2Wire library work and the SMBus library did not? Simple. The Quick2Wire library has a function that allows a direct read off the i2c bus without sending a command code (i2c.reading(AM2315_addr, no_bytes).”

Any suggestions on how I deal with this? I am working in c++ at the moment, but I will use anything will get it done.

The full article quoted above is here

In case you are wondering, yes I have configured the i2c bus. I can get several devices to work well.

Thanks in advance.

You may need to write code for the PRU, if the timing is critical. But I see no reason why it shouldn't be possible to make this work on the BBB.

Alternatively, use an Arduino to manage the I2C butchering device and get your data from the Arduino. Honestly I wish these psudo-I2C devices were driven out. There is a protocol for a reason.

There are also many low cost M0+, M3, and M4 dev boards out there. Not to mention the MSP430 launchpad. Some of the NXP MCUs can even be used with very minimal external circuitry to get them up and running, Something like one resistor and one capacitor, if memory serves correctly Other MCU’s such as the MSP430G2553 are very low power, can operate between 1-16Mhz, and can do I2C, UART, and SPI in hardware. Among other things.

OR one could just buy a “proper” 1-wire / I C sensor . . .