triliner.blogg.se

Nucleo f401re i2c ports
Nucleo f401re i2c ports









nucleo f401re i2c ports

nucleo f401re i2c ports

I assume it is the master letting SDA float up to periodically check for other masters. I know SDA can wiggle while SCL is low, It just looks odd in some of the cases. You can always wiggle the SDA line safely when SCL is low. It has to cope with ACK, NAK from a Slave that is stretching the bus / holding SCL low. The peripheral must correctly form START, STOP from an unknown state. If so, can you see what Wire.read() returned back to IdentifyIOexp() ? where it fails? the STM32 matches the Saleae decoding.īut as you can see in the traces, instead of continuing the interrogation a STOP is issued. Tracing with SWD shows that I2C is being read correctly i.e.

#Nucleo f401re i2c ports code

That makes sense as the issue seems to be happening on the i2c reads in the auto chip detection code and or auto configuration (pin mapping) detection code. HelloWorld always works if you tell it the board e.g.

nucleo f401re i2c ports

If I2CexpDiag was having a RAM test issue, then I could see how a delay in ioread() could affect that,īut I don't understand how modifying code that isn't being called can make the initialization code work. I'm still not understanding what is happening and how you got it to work with the delay code you show in #55 as it doesn't make sense to me that a delay added there made it work since the output in #49 is showing that initialization is failing which could be auto location or auto configuration, but none of that code calls the ioread() code shown in #55 With delay(1) as in #55 it would work consistently. I2CexpDiag failed as in my earlier message #49











Nucleo f401re i2c ports