打印
[N32G43x]

【N32G435x】串口打印输出

[复制链接]
680|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 数码小叶 于 2022-1-16 14:51 编辑

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


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




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


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

开发板布局




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



然后到J5跳线



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



对于PA9和PA10,查看对应的管脚复用功能

没有选择连接到LPUART,要是连接到LPUART就更好了。


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



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


在keil里设置成CMSIS-DAP,居然就识别到了芯片



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





按住reset会让D2微亮,感觉这个有点不正常



操作串口之前,通过操作led灯熟悉一下库的API操作,板载了三颗用户可以控制的led



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

GPIO_InitType GPIO_InitStructure;
    GPIO_InitStruct(&GPIO_InitStructure);

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

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

USART_StructInit(&USART_InitStructure);
    USART_InitStructure.BaudRate            = 115200;
    USART_InitStructure.WordLength          = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;

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

int fputc(int ch, FILE* f)
{
    USART_SendData(USARTx, (uint8_t)ch);
    while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET)
        ;

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




编译无错后,直接下载



打开串口调试助手,观察输出




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



反复示例几次,结果一致,这个也就属于不正常现象了


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









使用特权

评论回复
沙发
sparrow054| | 2022-1-17 11:22 | 只看该作者
写的很详细,期望后面也能中一块

使用特权

评论回复
板凳
东裕光大张浩| | 2022-1-18 11:10 | 只看该作者
写的很详细, 不错

使用特权

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

本版积分规则

103

主题

2542

帖子

19

粉丝