[应用方案] BSP包里面的ISP_UART的改写

[复制链接]
2335|45
 楼主| 東南博士 发表于 2021-6-2 08:47 | 显示全部楼层
/****************************************************************************
* @file     MyProject031.c
* @version  V1.22
* @date     2021/06/02-08:44:54
* @brief    NuMicro generated code file
*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright (C) 2013-2021 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/

/********************
MCU:M031TB0AE(QFN33)
Pin Configuration:
Pin17:ICE_DAT
Pin18:ICE_CLK
Pin19:UART2_TXD
Pin20:UART2_RXD
********************/
 楼主| 東南博士 发表于 2021-6-2 08:48 | 显示全部楼层
#include "M031Series.h"

void MyProject031_init_ice(void)
{
    SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF1MFP_Msk | SYS_GPF_MFPL_PF0MFP_Msk);
    SYS->GPF_MFPL |= (SYS_GPF_MFPL_PF1MFP_ICE_CLK | SYS_GPF_MFPL_PF0MFP_ICE_DAT);

    return;
}

void MyProject031_deinit_ice(void)
{
    SYS->GPF_MFPL &= ~(SYS_GPF_MFPL_PF1MFP_Msk | SYS_GPF_MFPL_PF0MFP_Msk);

    return;
}

关于ICE PIN 使能
 楼主| 東南博士 发表于 2021-6-2 08:49 | 显示全部楼层
关于uart2的使能与禁止

void MyProject031_init_uart2(void)
{
    SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC1MFP_Msk | SYS_GPC_MFPL_PC0MFP_Msk);
    SYS->GPC_MFPL |= (SYS_GPC_MFPL_PC1MFP_UART2_TXD | SYS_GPC_MFPL_PC0MFP_UART2_RXD);

    return;
}

void MyProject031_deinit_uart2(void)
{
    SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC1MFP_Msk | SYS_GPC_MFPL_PC0MFP_Msk);

    return;
}
 楼主| 東南博士 发表于 2021-6-2 08:50 | 显示全部楼层
void MyProject031_init(void)
{
    //SYS->GPA_MFPH = 0x00000000UL;
    //SYS->GPA_MFPL = 0x00000000UL;
    //SYS->GPB_MFPH = 0x00000000UL;
    //SYS->GPB_MFPL = 0x00000000UL;
    //SYS->GPC_MFPL = 0x00000088UL;
    //SYS->GPF_MFPH = 0x00000000UL;
    //SYS->GPF_MFPL = 0x000000EEUL;

    MyProject031_init_ice();
    MyProject031_init_uart2();

    return;
}

void MyProject031_deinit(void)
{
    MyProject031_deinit_ice();
    MyProject031_deinit_uart2();

    return;
}

分配好的使能与禁止的 Function
 楼主| 東南博士 发表于 2021-6-2 08:51 | 显示全部楼层
使用keil的几个关键配置:
1、经过上面的改写之后,可以使用NULINK连接目标芯片;
2、进行下载的设置:如下所示
 楼主| 東南博士 发表于 2021-6-2 08:52 | 显示全部楼层
 楼主| 東南博士 发表于 2021-6-2 08:52 | 显示全部楼层
1620560b6d6500ed51.png

找到目标芯片类型
 楼主| 東南博士 发表于 2021-6-2 08:59 | 显示全部楼层
2394160b6d7faa6061.png

ISP工程里面选择LDROM;
 楼主| 東南博士 发表于 2021-6-2 09:00 | 显示全部楼层
4925560b6d8289eb2e.png

这里 booting 启动 选择这里

LDROM

 楼主| 東南博士 发表于 2021-6-2 09:02 | 显示全部楼层
使用ICE软件的选择与keil一样

5817560b6d89e72bb4.png
 楼主| 東南博士 发表于 2021-6-2 09:04 | 显示全部楼层
基本操作步骤:

先烧写LDROM,启动也必须选择LDROM;

然后可以使用ICE软件或者ISP软件烧写APPROM

或者使用ICE软件一次性烧写LDROM与APPROM,并且必须设置为启动LDROM
 楼主| 東南博士 发表于 2021-6-2 09:06 | 显示全部楼层
如何使用与其他拓展:

1、打开ISP软件,选择UART;选择PORT 端口;
2、点击连接;

3、对目标重新上电,可以即可以实现对目标芯片的连接;
 楼主| 東南博士 发表于 2021-6-2 09:09 | 显示全部楼层
1、如果使用ISP软件,不进行断电操作,需要对硬件电路配合串口的使能进行控制;

2、使用特定IO口进行状态跳转;

3、使用flash特殊区域来写一个_ISP与APP的跳转;

4、更新完成后,可以对flash区域来进行标志位复位;

5、这样就可以实现了不拆机,使用对外接口来进行APP的更新了;
 楼主| 東南博士 发表于 2021-6-2 09:13 | 显示全部楼层
以上为个人的一点心得体会,如果有不对之处,请予以指点。共同学习。
庆余年2020 发表于 2021-6-2 09:14 | 显示全部楼层
多谢分享!

学习学习!
我们荡起双桨 发表于 2021-6-2 09:41 | 显示全部楼层
请问一下,那个IIC的,是不是理论上用IO口模拟来进行读写实现IIC也可以?

这样岂不是任何一个IO口都可以进行程序的烧录了?

包括SPI是不是也是这样的?
我们荡起双桨 发表于 2021-6-2 09:53 | 显示全部楼层
很详细 学到了
 楼主| 東南博士 发表于 2021-6-2 09:55 | 显示全部楼层
关于ISP包里面的RS485的解读:

这个和UART基本一样,就不新开帖子进行解读了;

 楼主| 東南博士 发表于 2021-6-2 09:56 | 显示全部楼层
在main函数里面定义了 RS485 TX RX 的切换:

1958060b6e52cf2aad.png

 楼主| 東南博士 发表于 2021-6-2 09:59 | 显示全部楼层
3550760b6e5d8ce6e3.png

初始化后,将UART 配置为RX 接收模式;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部