打印
[DemoCode下载]

M480串口固件升级

[复制链接]
1382|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2018-10-21 18:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
/**************************************************************************//**
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  2.0.0
* [url=home.php?mod=space&uid=212281]@date[/url]     20, June, 2017
* [url=home.php?mod=space&uid=247401]@brief[/url]    Use MKROM API to do internal ISP. This sample code is run at LDROM,
*           and use API to update APROM. After reset the system, the program
*           will boot from APROM.
*
* [url=home.php?mod=space&uid=17282]@CopyRight[/url] (C) 2017 Nuvoton Technology Corp. All rights reserved.
******************************************************************************/
#include <stdio.h>
#include "bootisplib.h"

void UART1_IRQHandler(void)
{
    UART1_ISR();
}

void SYS_Init(void)
{
    uint32_t volatile i;

    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Set XT1_OUT(PF.2) and XT1_IN(PF.3) to input mode */
    PF->MODE &= ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);

    /* Enable External XTAL (4~24 MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

    /* Waiting for 12MHz clock ready */
    CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

    /* Switch HCLK clock source to HXT */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HXT,CLK_CLKDIV0_HCLK(1));

    /* Set core clock as PLL_CLOCK from PLL */
    CLK_SetCoreClock(FREQ_192MHZ);

    /* Set both PCLK0 and PCLK1 as HCLK/2 */
    CLK->PCLKDIV = CLK_PCLKDIV_PCLK0DIV2 | CLK_PCLKDIV_PCLK1DIV2;

    /* Select IP clock source */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));

    /* Enable IP clock */
    CLK_EnableModuleClock(UART0_MODULE);


    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH &= ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk);
    SYS->GPB_MFPH |= (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);

}


int32_t main (void)
{
    uint32_t au32Config[2];

    SYS_Init();
    UART_Open(UART0, 115200);

    printf("\n");
    printf("+----------------------------------------+\n");
    printf("|      M480 firmware update by UART1     |\n");
    printf("+----------------------------------------+\n");

    /*******************************************************/
    /* MKROM support UART1 ISP, should initial UART1 first */
    /*******************************************************/
    /* UART1: TX = PB.7, RX = PB.6 */
    SYS->GPB_MFPL &= ~(SYS_GPB_MFPL_PB6MFP_Msk | SYS_GPB_MFPL_PB7MFP_Msk);
    SYS->GPB_MFPL |= ((6ul << SYS_GPB_MFPL_PB6MFP_Pos) | (6ul << SYS_GPB_MFPL_PB7MFP_Pos));
    /* UART1 line configuration for (115200,n,8,1) */
    CLK->CLKSEL1 |= CLK_CLKSEL1_UART1SEL_Msk;   /* HIRC */
    CLK->APBCLK0 |= CLK_APBCLK0_UART1CKEN_Msk;
    UART1->LINE = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1;
    UART1->FIFO = UART_FIFO_RFITL_14BYTES | UART_FIFO_RTSTRGLV_14BYTES;
    UART1->BAUD = (UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HIRC, 115200));
    UART1->TOUT = 0x40;
    NVIC_SetPriority (UART1_IRQn, 2);
    NVIC_EnableIRQ(UART1_IRQn);
    UART1->INTEN = (UART_INTEN_TOCNTEN_Msk | UART_INTEN_RXTOIEN_Msk | UART_INTEN_RDAIEN_Msk);

    /***********************************************************/
    /* This sample is running at LDROM. Will update the APROM. */
    /* Change the boot select to boot from APROM               */
    /***********************************************************/
    SYS_UnlockReg();
    /* Enable FMC ISP function */
    CLK->AHBCLK |= CLK_AHBCLK_ISPCKEN_Msk;
    FMC_Open();

    FMC_ReadConfig(au32Config, 2);
    FMC_ENABLE_CFG_UPDATE();
    if ((au32Config[0] & 0x80) == 0x80) /* boot from APROM */
        au32Config[0] &= ~0x80;
    else
        au32Config[0] |= 0x80;
    FMC_WriteConfig(au32Config, 2);


    UART1_ISP();
    while(1);
}



/*** (C) COPYRIGHT 2017 Nuvoton Technology Corp. ***/



沙发
598330983|  楼主 | 2018-10-21 18:18 | 只看该作者
非常牛叉的一个芯片。

使用特权

评论回复
板凳
598330983|  楼主 | 2018-10-21 18:19 | 只看该作者
提供多种升级方式。

使用特权

评论回复
地板
598330983|  楼主 | 2018-10-21 18:20 | 只看该作者

使用特权

评论回复
5
小明的同学| | 2018-10-21 20:40 | 只看该作者
如果可以使用网络更给力。

使用特权

评论回复
6
heisexingqisi| | 2018-10-21 21:23 | 只看该作者
FMC的应用

使用特权

评论回复
7
小灵通2018| | 2018-10-21 22:53 | 只看该作者
贼溜啊。

使用特权

评论回复
8
fsss007| | 2018-11-12 20:19 | 只看该作者
bootisplib.h?

使用特权

评论回复
9
huahuagg| | 2018-11-18 21:02 | 只看该作者
如果能图形化配置选择这些配置就好了。

使用特权

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

本版积分规则

246

主题

5384

帖子

22

粉丝