打印
[经验分享]

在魔改PLUS-F5280开发板上使用合封qsp iflash

[复制链接]
101|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
引言
由于目前灵动官网暂未发布正式版的PLUS-F5280开发板,可以使用现有的PLUS-F5270 v1.2开发板(下文简称PLUS-F5270开发版)替换为MM32F5280微控制器芯片,改装为PLUS-F5280开发板。本文记录了使用现有的PLUS-F5270开发板评估MM32F5280微控制器的软硬件调整过程。

硬件调整
PLUS-F5270 开发板上,使用MM32F5270微控制器的qspi接口对接了外置flash存储芯片。PLUS-F5270 板载华邦flash存储芯片的 W25Q64JVSIQ,容量为 8MB (64Mb),3.3V 供电,默认情况下,四线模式处于打开状态。

MM32F5270连接该 QSPI Flash 所使用的引脚号如图1所示:



图1 PLUS-F5270开发板上的spiflash原理图
MM32F5280微控制器芯片,是在MM32F5270微控制器的基础之上,在芯片内部合封了一块2MB容量的flash,合封flash芯片同MM32F5270的die也是通过qspi接口对接。但当前版本的PLUS-F5270开发板外界flash芯片的qspi引脚同MM32F5280合封内部使用的qspi引脚不相同。见表1所示。

表1 PLUS-F5270和MM32F5280的qspi引脚



MM32F5270微控制器芯片同MM32F5280除了合封qspi接口的引脚未引出,其余引脚完全相同,故改装后的PLUS-F5280可以使用绝大多数原PLUS-F5270开发板的功能,除了少量功能,包括:

ADC温感、电位器功能将无法使用
以太网功能将无法使用(原RMII模式连线已弃用)
软件调整
同时,需要在MindSDK为PLUS-F5270开发的样例工程中,修改pin_init.c文件中引脚复用配置。以spiflash_sfud_qspi工程为例。

原PLUS-F5270工程中的pin_init.c源文件:

void BOARD_InitPins(void)
{
    ...

    /* PB10 - QSPI_CS. */
    gpio_init.Pins  = GPIO_PIN_10;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_10);

    /* PG7 - QSPI_SCK. */
    gpio_init.Pins  = GPIO_PIN_7;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);

    /* PG6 - QSPI_IO0. */
    gpio_init.Pins  = GPIO_PIN_6;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);

    /* PA3 - QSPI_IO1. */
    gpio_init.Pins  = GPIO_PIN_3;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &gpio_init);
    GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_10);

    /* PB3 - QSPI_IO2. */
    gpio_init.Pins  = GPIO_PIN_3;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_10);

    /* PG8 - QSPI_IO3. */
    gpio_init.Pins  = GPIO_PIN_8;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);
}



魔改PLUS-F5280工程中的pin_init.c源文件:

void BOARD_InitPins(void)
{
    ...

    /* PF6 - QSPI_CS. */
    gpio_init.Pins  = GPIO_PIN_6;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOF, &gpio_init);
    GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);

    /* PG7 - QSPI_SCK. */
    gpio_init.Pins  = GPIO_PIN_7;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);

    /* PG6 - QSPI_IO0. */
    gpio_init.Pins  = GPIO_PIN_6;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);

    /* PF8 - QSPI_IO1. */
    gpio_init.Pins  = GPIO_PIN_8;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOF, &gpio_init);
    GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);

    /* PF10 - QSPI_IO2. */
    gpio_init.Pins  = GPIO_PIN_10;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOF, &gpio_init);
    GPIO_PinAFConf(GPIOF, gpio_init.Pins, GPIO_AF_10);

    /* PG8 - QSPI_IO3. */
    gpio_init.Pins  = GPIO_PIN_8;
    gpio_init.PinMode  = GPIO_PinMode_AF_PushPull; //GPIO_PinMode_AF_OpenDrain
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &gpio_init);
    GPIO_PinAFConf(GPIOG, gpio_init.Pins, GPIO_AF_10);
}




还要注意,因为新增使用了GPIOF端口,还需要在clock_init.c文件中启用GPIOF端口的总线访问时钟。

void BOARD_InitBootClocks(void)
{
    CLOCK_ResetToDefault();
    CLOCK_BootToHSE120MHz();

    ...

    /* GPIOF. */
    RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOF, true);
    RCC_ResetAHB1Periphs(RCC_AHB1_PERIPH_GPIOF);

    ...
}


总结
魔改之后,可以使用MindSDK中为PLUS-F5270微控制器提供的软件包(启动代码、驱动程序、样例及演示工程),评估MM32F5280微控制器芯片。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/suyong_yq/article/details/129063606

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

80

帖子

0

粉丝