[N32G43x] 【N32G435x】串口打印输出

[复制链接]
1058|2
 楼主| 数码小叶 发表于 2022-1-16 14:57 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2022-1-16 14:51 编辑

这两年,在缺芯片的大环境下,产品也不得不替换到国产MCU了,也接触了几家,但这还是第一次接触国民的MCU。
微信图片_20220116100937.jpg

盒子内有一块开发板,加一根mini usb线。首先板子给人感觉不错,彩色排针以及彩色的跳线帽,板子上的按键触感很软,相比一般的按键好用多了,关键还静音,之前也就在调试器上见过这样的按键。其次,配件也挺全的,数据线、塑料螺柱。

微信图片_20220116100947.jpg


拿到的板子主芯片是N32G435CBL7,从命名规则上看,这是一颗LQFP48封装,128KB Flash的Cortex-M4内核芯片。SRAM看不出来,通过数据手册知道是32KB。
手册上有一个N32G435的系统框图,很直白的显示了内部的完整资源。
Snipaste_2022-01-16_10-26-32.png

关于SRAM分为2部分,是分情况使用的,片内集成多达32K字节的内置SRAM, 分为SRAM1和SRAM2,其中SRAM1最大为24K字节, SRAM2为8K字
节。 在STOP2状态下SRAM1和SRAM2均可选保持数据、 STANDBY低功耗模式下仅SRAM2可选保持数据。

开发板布局

Snipaste_2022-01-16_10-37-42.png


板子通过NS-LINK芯片(U4)的DEBUG USB接口,可以提供主MCU程序下载调试功能,也可以连接MCU的串口提供USB转串口功能。而使用 NS-LINK 通过 USB DEBUG 口做串口使用时,只需要短接 MCU_TX 信号插针以及MCU_RX 信号插针。
查看原理图的串口连接,首先是NS-LINK部分

Snipaste_2022-01-16_10-46-22.png

然后到J5跳线

Snipaste_2022-01-16_10-48-32.png

最后到N32G435了,串口选择的是PA9和PA10两个管脚

Snipaste_2022-01-16_10-49-07.png

对于PA9和PA10,查看对应的管脚复用功能
Snipaste_2022-01-16_10-53-52.png
没有选择连接到LPUART,要是连接到LPUART就更好了。


硬件ok了,下面就是软件了,知道支持keil环境后,选择了keil方式,安装pack支持包先

Snipaste_2022-01-03_15-51-02.png

插上开发板,自动识别到了硬件,不过也不需要啥操作,没看到什么调试接口,只有一个串口标示
Snipaste_2022-01-13_21-49-13.png

在keil里设置成CMSIS-DAP,居然就识别到了芯片
Snipaste_2022-01-13_21-50-33.png


板子连接上电脑后只有一个绿色的led亮外无任何反应,按键也没有反应,应该是没有demo程序
微信图片_20220116135959.jpg




按住reset会让D2微亮,感觉这个有点不正常
微信图片_20220116140002.jpg


操作串口之前,通过操作led灯熟悉一下库的API操作,板载了三颗用户可以控制的led
Snipaste_2022-01-16_14-48-05.png
124.gif

通过led操作,发现这个库还是很容易上手的,然后就是操作串口了

  1. GPIO_InitType GPIO_InitStructure;
  2.     GPIO_InitStruct(&GPIO_InitStructure);

  3.     GPIO_InitStructure.Pin            = USARTx_TxPin;
  4.     GPIO_InitStructure.GPIO_Mode      = GPIO_Mode_AF_PP;
  5.     GPIO_InitStructure.GPIO_Alternate = USARTx_Tx_GPIO_AF;
  6.     GPIO_InitPeripheral(USARTx_GPIO, &GPIO_InitStructure);

  7.     GPIO_InitStructure.Pin            = USARTx_RxPin;
  8.     GPIO_InitStructure.GPIO_Pull      = GPIO_Pull_Up;
  9.     GPIO_InitStructure.GPIO_Alternate = USARTx_Rx_GPIO_AF;
  10.     GPIO_InitPeripheral(USARTx_GPIO, &GPIO_InitStructure);

  11. USART_StructInit(&USART_InitStructure);
  12.     USART_InitStructure.BaudRate            = 115200;
  13.     USART_InitStructure.WordLength          = USART_WL_8B;
  14.     USART_InitStructure.StopBits            = USART_STPB_1;
  15.     USART_InitStructure.Parity              = USART_PE_NO;
  16.     USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
  17.     USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;

串口的一些初始化完成后,就是stdio.h里的printf的重定向

  1. int fputc(int ch, FILE* f)
  2. {
  3.     USART_SendData(USARTx, (uint8_t)ch);
  4.     while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET)
  5.         ;

  6.     return (ch);
  7. }
测试结果只有一条语句
  1. printf("\r\nUSART Printf test ok!\r\n");




编译无错后,直接下载
Snipaste_2022-01-16_14-16-21.png


打开串口调试助手,观察输出
Snipaste_2022-01-13_22-20-16.png



可以在串口助手成功看到输出,以为ok了,但是在调试的时候发现一个问题,在程序下载期间会有结果输出,还不止一个
Snipaste_2022-01-13_22-25-53.png


反复示例几次,结果一致,这个也就属于不正常现象了
Snipaste_2022-01-13_22-29-36.png

也测试了几次手动复位,手动按复位键的结果就是正常的,只有一次输出,这就说明MCU复位没问题,那就很有可能是整板设计的时候,没有考虑好下载复位的问题。









sparrow054 发表于 2022-1-17 11:22 | 显示全部楼层
写的很详细,期望后面也能中一块
东裕光大张浩 发表于 2022-1-18 11:10 | 显示全部楼层
写的很详细, 不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

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