硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3742|回复: 5
收起左侧

V6板子的SDRAM例程中,GPIO口的速度设置为什么是50MHz

[复制链接]

14

主题

109

回帖

151

积分

初级会员

积分
151
发表于 2016-2-18 15:50:24 | 显示全部楼层 |阅读模式
QQ截图20160218154456.png
如上图,SDRAM的最大时钟不是90M吗?为什么不把速度配置成100MHz的?50M的IO速度对SDRAM速度有影响吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2016-2-18 15:55:53 | 显示全部楼层
建议改成100MHz,没注意,一直用的50MHz了。。。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-10 09:22:51 | 显示全部楼层
eric2013 发表于 2016-2-18 15:55
建议改成100MHz,没注意,一直用的50MHz了。。。

求助个问题啊,有个原项目标准库写的,F429,SDRAM的IO口配置就是50M,后来HAL库重构,HAL库默认是100M的IO口设置了,然后批量产品反而出现了部分SDRAM读取数据出错的问题。sdram时钟配置84兆,难道不该用最高的IO口速度么?SDRAM走线没有做等长,会有影响么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2023-11-10 11:15:46 | 显示全部楼层
akikyoua 发表于 2023-11-10 09:22
求助个问题啊,有个原项目标准库写的,F429,SDRAM的IO口配置就是50M,后来HAL库重构,HAL库默认是100M的 ...

实际上标准库这里的50M并不准确,升级到HAL后,ST改名字了,叫High,Very High等,这么描述才准确些。

现在我们HAL版的例子都改成了Very High最高速。

         /*##-2- 配置GPIO ##################################################*/
        GPIO_Init_Structure.Mode      = GPIO_MODE_AF_PP;
        GPIO_Init_Structure.Pull      = GPIO_PULLUP;
        GPIO_Init_Structure.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
        GPIO_Init_Structure.Alternate = GPIO_AF12_FMC;
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-13 11:29:24 | 显示全部楼层
eric2013 发表于 2023-11-10 11:15
实际上标准库这里的50M并不准确,升级到HAL后,ST改名字了,叫High,Very High等,这么描述才准确些。

...

使用HAL库配置,IO默认状态就是GPIO_SPEED_FREQ_VERY_HIGH,就是使用GPIO_SPEED_FREQ_VERY_HIGH反而有问题了。修改为GPIO_SPEED_FREQ_HIGH后反而正常了。判断是读取存在问题,写入没有问题

void SdramTest(void)
{
    uint32_t data;
    uint32_t count = 0;
    uint32_t* sdramStr = ((uint32_t*)(0xC0000000));
    printf("sdram test start!\n");
    for(count = 0; count < 1024*1024*8; count++)
    {
        sdramStr[count] = count;
    }
    for(count = 0; count < 1024*1024*8; count++)
    {
        data = sdramStr[count];
        if(data != count)
        {
            printf("sdram test err at %d word\n",count);//这里设置断点,程序会进入这里,但是在调试状态sdramStr[count]值正确,但是data不正确,所以应该是读出时候错了
            break;
        }
    }
    printf("sdram test over!\n");
}

用示波器看了clk的84兆。看着都是正弦波,但是两种看着没啥区别
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2023-11-13 11:31:32 | 显示全部楼层
akikyoua 发表于 2023-11-13 11:29
使用HAL库配置,IO默认状态就是GPIO_SPEED_FREQ_VERY_HIGH,就是使用GPIO_SPEED_FREQ_VERY_HIGH反而有问 ...

那你们的硬件设计有问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 13:34 , Processed in 0.339045 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表