Toc
  1. 修改MDK FLM下载法
    1. 修改关键
    2. 引脚修改
    3. 修改芯片信息
  • 上一篇—–>>H7PI-如何使用Bootloader更新App
  • 下一篇—–>>H7PI-定义自己的MDK-Keil下载算法FLM
  • Toc
    0 results found
    Pinno
    H7PI-定义自己的MDK-Keil下载算法FLM

    修改MDK FLM下载法

    因为MDK下载需要对Flash直接编程,因此默认的flm不适合片外Flash, 需要创建新的flm文件。
    H7PI 开发板的flm文件可以百度网盘下载

    修改关键

    • 引脚修改
    • flash芯片信息修改
    • MCU初始化修改(主要是初始化,STM32系列通用,略加修改即可,这里不提)

    引脚修改

    查找QSPI_Init函数,并根据自己的设计,修改下方这段代码的初始化,主要是IO口和复用功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    u8 QSPI_Init(void)
    {
    u32 tempreg=0;

    RCC->AHB4ENR|=1<<0; //??GPIOA??
    RCC->AHB4ENR|=1<<1; //??GPIOB??
    RCC->AHB4ENR|=1<<2; //??GPIOC??
    RCC->AHB4ENR|=1<<4; //??GPIOE??
    RCC->AHB3ENR|=1<<14; //QSPI????

    //PB2 QUADSPI1_CLK
    GPIO_Set(GPIOB,1<<2,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);
    //PB6 QUADSPI1_BK1_NCS
    GPIO_Set(GPIOB,1<<6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);
    //PC9,PC10 QUADSPI1_BK1_IO0, IO1,
    GPIO_Set(GPIOC,1<<9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);
    GPIO_Set(GPIOC,1<<10,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);
    //IO3
    GPIO_Set(GPIOA,1<<1,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);
    //PE2 QUADSPI1_BK1_IO2
    GPIO_Set(GPIOE, 1<<2,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU);

    GPIO_AF_Set(GPIOB,2,9); //PB2,AF9
    GPIO_AF_Set(GPIOB,6,10); //PB6,AF10
    GPIO_AF_Set(GPIOC,9,9); //PC9,AF9
    GPIO_AF_Set(GPIOC,10,9); //PC10,AF9
    GPIO_AF_Set(GPIOA,1,9); //Pa1,AF9
    GPIO_AF_Set(GPIOE,2,9); //PE2,AF9

    同样在QSPI_Init函数中修改闪存模式

    1
    2
    tempreg|=0<<7;			//选择FLASH1,flash1将0改为1
    tempreg|=0<<6; //禁止双闪存模式,开启双闪存的话将0改为1

    修改芯片信息

    找到这段代码,根据自己的芯片修改相关信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #ifdef W25Q64JV
    struct FlashDevice const FlashDevice = {
    FLASH_DRV_VERS, // Driver Version, do not modify!
    "H7PI_W25Q64", // Device Name
    EXTSPI, // Device Type
    0x90000000, // Device Start Address
    0x00800000, // Device Size (8MB)
    256, // Programming Page Size
    0, // Reserved, must be 0
    0xFF, // Initial Content of Erased Memory
    1000, // Program Page Timeout 300 mSec
    3000, // Erase Sector Timeout 3000 mSec

    // Specify Size and Address of Sectors
    0x001000, 0x000000, // Sector Size 4kB (2048 Sectors)
    SECTOR_END
    };
    #endif

    在工程配置里修改芯片的声明,需要跟上面的芯片信息代码中,#ifdef W25Q64JV 这里保持一致
    1.png

    编译
    2.png

    复制flm文件到keil安装目录\Keil_v5\ARM\Flash(这个根据自己keil的安装目录定位)
    4.png

    最后一步在自己的app工程里进行,删除原来的Programing Algorithm,然后通过add按钮选择刚才自己生成的,名字和刚才这里修改的device name一致,同时修改ram for algorithm,如果出现校验失败,请不要勾选Verify

    1
    2
    3
    struct FlashDevice const FlashDevice  =  {
    FLASH_DRV_VERS, // Driver Version, do not modify!
    "H7PI_W25Q64", // Device Name

    5.png

    上一篇—–>>H7PI-如何使用Bootloader更新App

    下一篇—–>>H7PI-定义自己的MDK-Keil下载算法FLM

    打赏
    支付宝
    微信
    本文作者:Pinno
    版权声明:本文首发于Pinno,转载请注明出处!