2022-07-24 11:55 PM
Hi, MCD teams,
I bought a new STM32F413H-Discovery board (MB1274-F413HT6-E03 A214500149) from Mouser and received it on last week.
Now I tried to run the application under the folder of F4 Firmware Package\Demonstrations\STemWin\MDK-ARM\Project.uvproj, but the LCD always show the message as my question title highlighted (Touchscreen Calibration : ERROR). I had checked the user manual and it had mentioned that the touchscreen must be calibration at first time. But now TS device can not be found, what should I do for the next?
PS: I have trace the source code, the Touchscreen calibration ERROR is because of the following function always return "0x00".
uint16_t ft6x06_ReadID(uint16_t DeviceAddr)
{
/* Initialize I2C link if needed */
TS_IO_Init();
/* Return the device ID value */
return (TS_IO_Read(DeviceAddr, FT6206_CHIP_ID_REG));
}
2022-07-25 12:58 AM
Additional information:
when program runs to the step of "TS Interrupt demo example" .
2022-07-28 11:30 PM
I check the return value of TS_IO_Read(DeviceAddr, FT6206_CHIP_ID_REG) again.
Every first time, the touch screen driver ft6x06_ts_drv.ReadID (TS_I2C_ADDRESS) return 「0x11�?. it means the FT6206 device exist and was mounted on the board , but the stm32f413h_discovery_ts.c seems doesn't support FT6206 CTP anymore.
If so, why ST still sold out the STM32F413H-DISCOVERY board that mounted with out of date CTP device FT6206???
#define FT6206_ID_VALUE 0x11
/* Scan TouchScreen IC controller ID register by I2C Read */
/* Verify this is a FT6x36 or FT3x67, otherwise this is an error case */
if( ft6x06_ts_drv.ReadID(TS_I2C_ADDRESS) == FT6x36_ID_VALUE )
{
/* Found FT6x36 : Initialize the TS driver structure */
........
}
else
{
#if defined (USE_STM32F413H_DISCOVERY_REVE)
ft3x67_ts_drv.Init(I2C_Address);
if( ft3x67_ts_drv.ReadID(TS_I2C_ADDRESS) == FT3X67_ID_VALUE )
{
/* Found FT3x67 : Initialize the TS driver structure */
................
}
#else /* USE_STM32413H_DISCOVERY */
ts_status = TS_DEVICE_NOT_FOUND;
#endif /* USE_STM32F413H_DISCOVERY_REVE */
}
return (ts_status);
}