看到论坛举办活动,阳春三月,春暖花开,享受着阳光的沐浴,静下心来来写写这篇**.
记得最早接触新唐的产品,应该说是Winbond 51系列单片机,那还是在上学那会,有同学不知道从哪弄了几块W77E058A片子,那时候刚接触到51系列,学校都是atmel的产品,初见W77E058A感觉挺好奇,也是8位单片机,完全兼容51指令,比51更快些.40MHZ,3个16位计时器,EEPROM和RAM等等,感觉就是cool,比较先进.等最小系统板焊好后跑起来LED时,感觉和普通51没什么区别,后来也没有在去接触,工作之后更是没有遇见51的片子了.
言归正传,工作之后,慢慢开始接触高端一些的MCU,都是基于ARM核,大部分产品都是st的芯片.在有次的偶然的机会下,获得一块试用版.从此在业余时间学习了这款NT-NUC505Y Tiny Board.
如下图:来个靓照
漂亮吧
2显出真身来个靓照
刚接到这款板子的时候,查看了基本配置. NUC505系列是32位的内嵌ARM Cortex®-M4核的微控制器配置DSP功能和浮点运算FPU ,最高可运行至100 MHz,内建2M字节的SPI Flash存储器,以及128KB字节内建SRAM,另外还有丰富的外设,如定时器,看门狗定时器,RTC, UART, SPI, I2C,I2S,PS/2, PWM定时器, ADC, GPIO,低电压复位控制和欠压检测功能。特别有24-bit Audio CODEC和USB2.0Host/Device等等。NuMicro™ NUC505 带有ISP(在系统编程)、ICP(在电路编程)和IAP(在应用编程)功能,允许用户无需取下芯片,直接在电路板上对程序存储器进行升级。适用于工业控制和需要丰富的通信接口的应用领域.根据上面的图片可以清晰的看到接口及下载电路部分.
首先,网上对于对这款Tiny Board的资料不多,基本上就是官网的DVD资料包,通过资料我们有了一个基本了解,学习之处,我自己还是按照基本的思路,先从官方给的资料开始,保证MCU可以运行起来。之后才可以从I/O开始,逐步开始学习外设。资料的连接在最后发链接.
根据资料,主控芯片为NUC505YO13Y,供电系统我们采用USB,使用其ICE下载端口供电即可。对于外设电源其对应的管教有相应的匹配。AudioCODECPower则由AVddcodec、AvddhpH和AVsshp提供;ADC Power则由Avssadc和Avssadc提供;数字电源由Vdd和Vss提供1.2V。配备高速晶振12M和低速晶振32.768Khz,可以通过配置最高主频可以达到100M。SystemTick Timer提供基准时钟源,这为RTOS系统编程时提供方便。我们只需要使能即可。32.768Khz主要供给RTC使用,高速12M晶振产生三类频率:HXT、PLL_FOUT和APLL_FOUT供其它外设使用。从启动的方式来看有好几种,根据板子上的4个拨码开关共有6中启动方式。
当我们了解了基本的知识后,肯定是要对其I/O操作了。根据资料上的信息,我们知识这款板子上的I/O绝不仅仅知识简单的I/O功能,还有特殊功能,还可以当做中断来使用,这是51一般无法达到的。我们在编写程序的时候一定要注意特殊的寄存器是否清零,因为这关系着上电后这个端口是作为I/O使用还是复用功能使用。当我们把这个记在心里的时候写程序才会得心应手。
基于KEIL的软件,开始我们的编程之旅。
简单的写下基本思路:1.需要配置相关的时钟初始化2.加在startup文件3.加载基本的外设库函数。库函数已经帮我们把外设端口的基本信息封装起来,方便操作。StartUp启动文件使硬件启动时顺序。
voidSYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* 初始化系统时钟 */
/*---------------------------------------------------------------------------------------------------------*/
/* 使能 XTAL */
CLK->PWRCTL |= CLK_PWRCTL_HXTEN_Msk;
CLK_SetCoreClock(96000000);
/*设定 PCLK 分频器 */
CLK_SetModuleClock(PCLK_MODULE, NULL, 1);
/* 更新系统主时钟 */
SystemCoreClockUpdate();
/*使能IP时钟 */
CLK_EnableModuleClock(UART0_MODULE);
/* 选择IP时钟源 */
CLK_SetModuleClock(UART0_MODULE,CLK_UART0_SRC_EXT, 0);
/*---------------------------------------------------------------------------------------------------------*/
/* 初始化I/O复用功能 */
/*---------------------------------------------------------------------------------------------------------*/
/* 设置UART0 RXD 和 TXD复用功能 */
SYS->GPB_MFPL = (SYS->GPB_MFPL &(~SYS_GPB_MFPL_PB0MFP_Msk) ) | SYS_GPB_MFPL_PB0MFP_UART0_TXD;
SYS->GPB_MFPL = (SYS->GPB_MFPL & (~SYS_GPB_MFPL_PB1MFP_Msk)) | SYS_GPB_MFPL_PB1MFP_UART0_RXD;
}
intmain (void)
{
/*初始化时钟、I/O */
SYS_Init();
/*初始化UART信息 */
UART_Open(UART0, 115200);
/*设置 PB.10作为 输出模式 and PB.11 输入模式*/
GPIO_SetMode(PB, BIT10, GPIO_MODE_OUTPUT);
GPIO_SetMode(PB, BIT11, GPIO_MODE_INPUT);
GPIO_SetPullMode(PB, BIT11,GPIO_PULL_UP_EN);
/*使用I/O端口操作 */
PB10_DOUT = 0;
if (PB11_PIN != 0) {
; }
PB10_DOUT = 1;
if (PB11_PIN != 1) {
;
}
while (1);
}
通过简单的编程,我们有了基础的框架
,就可以通过板载的ICE下载方式,进行仿真运行。一步一步来了解和掌握每一个外设端口的用法和操作。 通过上面的简单例程,我觉得基于arm的开发程序基本的思路都是一致的,采用的框架结构也基本相同,唯一不同的就是外设的功能肯能不同有所差异。目前任然处于熟悉这款板子的一些特设的外设功能,主要音频处理接口电路,这个是个亮点,也是其它片子没有的,基于这个优势,可以开发一些相关的设备.经验尚在积累中,学习仍在继续,各种各样的问题也是层出不穷。好在在21的论坛里和新唐的论坛可以找点资料,学习就是这样,出现问题—找出问题—解决问题….遇到实在解决的不了的问题求助网络和朋友,只有这样才能不断提升自己的水平。我和NUVOTON NuTiny Board之初体验还在继续,我期待在了解她的过程中有更多的故事发生,也期望多到更丰富的使用方法,更期待在将来的产品中可以使用新唐的M4/M0芯片.
1.用KEIL或IAR都可以。 2.资料:BSP_NUC505_v3.00.003(开发包)/UM_NuTiny-SDK-NUC505_V1.00(手册)等
3.链接: http://www.nuvoton.com/hq/resour... =SW0120141215140101
4.常用网站:www.nuvoton.com、www.bbs.21ic.com
|