Touchscreen doesn't work when external RAM is enabled.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-15 6:44 AM
I am using below development tools
MCU: STM32H7B3IIT6
IDE: STM32CubeIDE Version: 1.8.0
GUI: TouchGFX Version: 4.18.1
External RAM: IS45S16800F-7CTLA1
When external RAM is activated, the touch part doesn't work. To be sure, I activated external RAM on the development board(STM32H7B3I-DK). I tryed development board(STM32H7B3I-DK) it work with external RAM. But it doesn't work on custom board. Why is the touch part not working?
Why does adding RAM affect the touch part?
I checked hardware, clock is normal, pins goes true place.
I see the RAM has been added.
I add below codes my main.c file
static FMC_SDRAM_CommandTypeDef Command;
Command.CommandMode = FMC_SDRAM_CMD_CLK_ENABLE;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK2;
Command.AutoRefreshNumber = 1;
Command.ModeRegisterDefinition = 0;
HAL_SDRAM_SendCommand(&hsdram2, &Command, 0xfff);
HAL_Delay(1);
Command.CommandMode = FMC_SDRAM_CMD_PALL;
HAL_SDRAM_SendCommand(&hsdram2, &Command, 0xfff);
Command.CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
Command.AutoRefreshNumber = 2;
HAL_SDRAM_SendCommand(&hsdram2, &Command, 0xfff);
Command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
Command.ModeRegisterDefinition = (uint32_t)0 | 0<<3 | 2<<4 | 0<<7 | 1<<9;
HAL_SDRAM_SendCommand(&hsdram2, &Command, 0xfff);
HAL_SDRAM_ProgramRefreshRate(&hsdram2, 1542);
- Labels:
-
STM32H7 Series
-
TouchGFX
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-15 7:19 AM
Touchscreens must be extremely sensitive in order to detect finger touches well. However, this also results in extreme sensitivity to interference radiation, e.g. from the control lines of the DRAM.
Please check the layout very carefully, i.e. matching the tracks (exactly the same length), their impedance, etc.
Regards
/Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-15 7:24 AM
You mean these as control lines?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-15 7:26 AM
Well, I mean all lines carrying high frequencies: address/data bus, CLK, etc.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-15 9:55 AM
>>Why does adding RAM affect the touch part?
Perhaps some pin level conflict? Some defect on the board/design, or the assembly.
Perhaps narrow it down by initializing sub-portions of the pins in a bisection fashion.
Then focus on the subset that seem to be causing the issue.
Assuming touch via I2C ? Do those pins have pull-ups? Have obvious conflicts or cross connections?
Does the SDRAM actually work on your design?
Problems with power planes, decoupling?
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-02-16 3:05 AM
When Extarnal RAM is canceled, the touch part works but detects late. What could be the reason for this? After all, I disable external RAM and disable it from CubeIDE settings. I am removing the codes related to external RAM in the code. But the touch part works with a little delay.
I'm trying the code before enabling the external RAM to see this effect. In that code, the touch part works fine.
