【Nations MCU】FAQ 之《N32G43x_L4xx BootLoad 示例代码》调换 UART

        最近支持客户,在使用 N32G43x_L4xx系列芯片串口IAP升级应用笔记_V1.0\示例代码\Bootload\N32G43x_IAP 过程中发现:将例程中 UART1 -> UART2,遇到串口无法通讯的现象。现将解决过程分享,以便大家相互学习。

一、概述

1、客户问题:由于硬件没画对 Boot 脚的控制,在不更改硬件的基础上,想通过写 BootLoader 升级应用代码。

2、解决过程:按照  N32G43x_L4xx系列芯片串口IAP升级应用笔记_V1.0 资料,客户根据实际已做产品情况将例程代码串口从 UART1 ->UART2。该份代码如有项目需求,请联系我。

二、N32G43x_IAP 资源使用描述

1、N32G435x UART 资源配置如下图1,N32G43x_IAP 官网例程使用 UART1。



2、N32G435x 存储器映射图见下图2,这儿要特别注意:UART1、GPIO 与 AFIO 使用 APB2外设总线,而 UART2 使用的是 APB1 外设总线。
   

                                                        

3、N32G43x_IAP 官网例程,UART1 复用 GPIO 见下图3:

三、N32G43x_IAP 使用 UART 问题解决过程

1、将例程中 UART1->UART2 ,Bug1 Code 见下图4。原因 GPIOA 的时钟使用的是 APB2,需要将 APB2时钟打开,添加代码RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE)。另外 UM_N32G43x 手册也特别强调,见图5
  

                                                                                                       图4 . Bug1 Code         



2、将例程中 UART1->UART2 , Bug2 Code 见下图6。原因 UART2 使用是 PA2 & PA3(见图7)而非 PB2 & PB3,将 GPIOB ->GPIOA 即可,遇到这种情况也可以按照如下排查:

A.UART2调整为 UART2 PB4&PB5 试试。

B.使用 EVK 里UART2 例程,然后按照例程认真检查 N32G43x_IAP 中的 UART2 初始化函数。
                           

                                                                                                    图6 .  Bug2 Code

         

参考资料:

  1. DS_N32G435系列数据手册V1.0.pdf
  2. UM_N32G43x系列用户手册V1.0.pdf
  3. N32G43x_L4xx系列芯片串口IAP升级应用笔记_V1.0.pdf
  4. N32G43x_IAP Loader 参考例程

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论