w9825g6kh数据异常求助
本帖最后由 meeagle 于 2024-4-3 18:11 编辑求助:电路板H743IIT+W9825G6KH+OV2640+RGB4.5屏,屏幕上出现这种规律的横线,经过多种排除法,现在认为比较大的可能是W9825G6KH的原因(写入的绿色字符也出现异常这点可以作为佐证),请教一下,有大佬遇到过这情形的吗?可能是什么原因造成的?
:PCB是二层板,没有做等长走线,各引脚直接IO,除了VDD其他引脚未接电容。
这种情况,可以对SDRAM做批量读写测试
/*
*********************************************************************************************************
* 函 数 名: bsp_TestExtSDRAM
* 功能说明: 扫描测试外部SDRAM的全部单元。
* 形 参: 无
* 返 回 值: 0 表示测试通过; 大于0表示错误单元的个数。
*********************************************************************************************************
*/
uint32_t bsp_TestExtSDRAM1(void)
{
uint32_t i;
uint32_t *pSRAM;
uint8_t *pBytes;
uint32_t err;
const uint8_t ByteBuf = {0x55, 0xA5, 0x5A, 0xAA};
/* 写SRAM */
pSRAM = (uint32_t *)EXT_SDRAM_ADDR;
for (i = 0; i < EXT_SDRAM_SIZE / 4; i++)
{
*pSRAM++ = i;
}
/* 读SRAM */
err = 0;
pSRAM = (uint32_t *)EXT_SDRAM_ADDR;
for (i = 0; i < EXT_SDRAM_SIZE / 4; i++)
{
if (*pSRAM++ != i)
{
err++;
}
}
if (err >0)
{
return(4 * err);
}
/* 对SRAM 的数据求反并写入 */
pSRAM = (uint32_t *)EXT_SDRAM_ADDR;
for (i = 0; i < EXT_SDRAM_SIZE / 4; i++)
{
*pSRAM = ~*pSRAM;
pSRAM++;
}
/* 再次比较SDRAM的数据 */
err = 0;
pSRAM = (uint32_t *)EXT_SDRAM_ADDR;
for (i = 0; i < EXT_SDRAM_SIZE / 4; i++)
{
if (*pSRAM++ != (~i))
{
err++;
}
}
if (err >0)
{
return (4 * err);
}
/* 测试按字节方式访问, 目的是验证 FSMC_NBL0 、 FSMC_NBL1 口线 */
pBytes = (uint8_t *)EXT_SDRAM_ADDR;
for (i = 0; i < sizeof(ByteBuf); i++)
{
*pBytes++ = ByteBuf;
}
/* 比较SDRAM的数据 */
err = 0;
pBytes = (uint8_t *)EXT_SDRAM_ADDR;
for (i = 0; i < sizeof(ByteBuf); i++)
{
if (*pBytes++ != ByteBuf)
{
err++;
}
}
if (err >0)
{
return err;
}
return 0;
} 谢谢回复!
经测试写入的数据比较偶然的情况会出现变化,但是同一行,紧跟着写入地址之后的内容,没写入的部分也变化,而且切换行的时间越长,变化就越大,,,,,, meeagle 发表于 2024-4-7 22:07
谢谢回复!
经测试写入的数据比较偶然的情况会出现变化,但是同一行,紧跟着写入地址之后的内容,没写入的 ...
那确实要排查下硬件问题了。
页:
[1]