cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in the I2C1 peripherical?

Luca1
Senior

Hi to all!

I have an Nucleo-F767ZI board and I noticed a problem, in the I2C1 periperical.

I have redirect the I2C1 pins on PB8 and PB9 for comodity and left PA6 and PA7 free and the I2C1 work well.

After a couple of days, i have used the PA6 pin as output GPIO pin, and the I2C1 don't works. It send the address byte and after it receive a NACK bit. I have spend fews days to realize that if I left the PA6 pin free the I2c1 works and if I use the PA6 pin as GPIO output the I2C1 don't works.

This appens only if I use the PA6 as output pin. If I configure the PA6 as input pin or as analog pin, the I2C1 works.

This is normal or is a MCU bug?

1 ACCEPTED SOLUTION

Accepted Solutions

Is there any connection between PA6 and PB8 or PB9, on the board or outside?

What is connected to PA6?

In the "does not work" state, read out and check/post the GPIOA and GPIOB registers content.

JW

View solution in original post

3 REPLIES 3

Is there any connection between PA6 and PB8 or PB9, on the board or outside?

What is connected to PA6?

In the "does not work" state, read out and check/post the GPIOA and GPIOB registers content.

JW

Luca1
Senior

Hi Jan,

The PA6 pin is connected to the reset pin of my touch screen controller. The PB8 an PB9 are connected to the I2C interface of my touch controller.

However after reading your answer i have done an experiment, if I left the PA6 pin as output pin but i don't connect anything, the I2C work.

this is the state of GPIOA and GPIOB register:

0693W000001qXRhQAM.bmp

Luca1
Senior

I have solved! 

The problem it was the reset state of my touch controller. After the Gpio init routine, the PA6 pin it was set to low and this hold the touchscreen controller in the reset state, so it can't receive any command from the I2C interface.

Many thanks Jan, your anwer help me to find the problem!