The STM32-P207 board documentation does not mention that there is no I2C port available for use. The on-board temperature sensor and the UEXT connector show an I2C interface, but this is a Software implementation of I2C. The processor spec shows 3 I2C ports, but the board documentation fails to mention that they are not usable. That is very misleading and disappointing.
Is there a way to modify the board to use one of the hardware I2C ports?
You are correct about the missing I2C information in the manual. This is now fixed in the last revision of the manual: https://www.olimex.com/Products/ARM/ST/STM32-P207/resources/STM32-P207.pdf (https://www.olimex.com/Products/ARM/ST/STM32-P207/resources/STM32-P207.pdf).
QuoteIs there a way to modify the board to use one of the hardware I2C ports?
There are ways, of course. Depends on which interface you are willing to let go. I will list the options in the following order (I2C number - processor pin - signal - interface affected):
I2C1_SCL - 139 - CAN1_RX - CAN interface
I2C1_SDA - 140 - CAN1_TX - CAN interface
I2C2_SCL - 11 - A0 - the additional memory
I2C2_SDA - 10 - A1 - the additional memory
I2C3_SCL - 100 - MCO1 - camera interface
I2C3_SDA - 99 - SD_D1/DCMI_DB - SD card / camera
To my mind the best idea would be to sack the CAN interface.
Now when you have chosen the preferred I2C port you need to decide whether to remove the peripheral it is connected to or to disable it by software means (instead of removing components just always set the needed signals as outputs - disable input and connect additional wires). Now the final thing to do is to use 2.2k pull-up resistors on the lines you have chosen (for instance I2C1_SCL and I2C1_SDA) - I2C requires pull-ups.