最近支持客户,在使用 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
参考资料:
- DS_N32G435系列数据手册V1.0.pdf
- UM_N32G43x系列用户手册V1.0.pdf
- N32G43x_L4xx系列芯片串口IAP升级应用笔记_V1.0.pdf
- N32G43x_IAP Loader 参考例程
评论