文章目录
- 引言
- 硬件调整
- 软件调整
- 总结
引言
由于目前灵动官网暂未发布正式版的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所示:
MM32F5280微控制器芯片,是在MM32F5270微控制器的基础之上,在芯片内部合封了一块2MB容量的flash,合封flash芯片同MM32F5270的die也是通过qspi接口对接。但当前版本的PLUS-F5270开发板外界flash芯片的qspi引脚同MM32F5280合封内部使用的qspi引脚不相同。见表1所示。
qspi function | PLUS-F5270 pin | MM32F5280 pin |
---|---|---|
CS | PB10 | PF6 |
SCK | PG7 | PG7 |
D0 | PG6 | PG6 |
D1 | PA3 | PF8 |
D2 | PB3 | PF10 |
D3 | PG8 | PG8 |
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微控制器芯片。