本帖最后由 数码小叶 于 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复位没问题,那就很有可能是整板设计的时候,没有考虑好下载复位的问题。
|