打印
[牛人杂谈]

其实通过官方推荐的典型应用图,就能知道很多很多

[复制链接]
550|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

M058S为Cortex™-M0 32位微控制器系列,其特点为宽电压工作范围2.5V至.5V与-40℃ ~ 85℃工作温度、内建22.1184 MHz高精度RC晶振(±1%精确度,25℃ 5V)、并内建Data Flash、欠压检测、丰富周边、整合多种多组串行传输接口、高抗干扰能力(8KV ESD/4KV EFT)、支持在线系统更新(ISP)、在线电路更新(ICP)与在线应用程序更新(IAP),提供封装有QFN33、LQFP48与LQFP64。

应用领域 :

门禁系统/警报器、温度传感设备、直流无刷马达应用等等

关键特性 :

• 内核(Core)

- Cortex™-M0 32位微处理器

- 工作频率可达 50 MHz

- 工作电压:2.5V to 5.5V

- 工作温度:-40℃ ~ 85℃

内存(Memory)

- 32 KB应用程序

- 内嵌4 KB SRAM

- 内嵌4 KB Data Flash

- 在线系统更新ISP(In-System Programming)

- 在线电路更新ICP(In-Circuit Programming)

- 在线应用程序更新 IAP(In-Application Programming)

模拟转数字转换器(ADC)

- 提供8通道

- 12位分辨率

- 每秒采样率可达 800kSPS

- 提供误差±1℃温度传感器

脉波宽度调变(PWM)

- 最多4通道PWM输出或互补式PWM输出

通讯接口(Connectivity)

- 一组SPI(可达36 MHz)

- 2组I²C(可达 400 kHz)

- 一组UART

时钟控制(Clock control)

- 外部晶振4 to 24 MHz

- 内置22.1184 MHz高精度RC晶振,常温5V下±1%误差



沙发
yiyigirl2014|  楼主 | 2016-9-4 11:17 | 只看该作者
根据这个图,我们可以知道内部都有哪些外设,以及外部可以如何的扩展。
你看通过KPI可以做键盘入口,通过EBI可以实现SRAM扩展,通过SPI实现闪存,通过I2C 实现EEPROM。

使用特权

评论回复
板凳
yiyigirl2014|  楼主 | 2016-9-4 11:18 | 只看该作者
如果说内核是1.8V运行的,其实通过内部集成的LDO完全可以实现宽电压供电,从纽扣电池到USB供电所有的都行

使用特权

评论回复
地板
yiyigirl2014|  楼主 | 2016-9-4 11:18 | 只看该作者
如果说控制电机,你可以用16bit的PWM,晶振可以从4M到24M,全支持,多爽啊。

使用特权

评论回复
5
yiyigirl2014|  楼主 | 2016-9-4 11:24 | 只看该作者
该芯片的官方例程还给了个8*8*8立方矩阵的LED控制例程。
/**************************************************************************//**
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  V2.03
* $Revision: 2 $
* $Date: 13/06/28 10:14a $
* [url=home.php?mod=space&uid=247401]@brief[/url]    M051 Series General Purpose I/O Driver Sample Code
*
* @note
* Copyright (C) 2011 Nuvoton Technology Corp. All rights reserved.
*
******************************************************************************/
#include <stdio.h>
#include "M051Series.h"
#include <ScanLED.h>
#include <ScanKey.h>
#include <DMX512.h>

#define IDnumber 0
#define PLLCON_SETTING      SYSCLK_PLLCON_50MHz_XTAL
#define PLL_CLOCK           50000000

uint8_t u8Mode;
uint8_t u8Power;
uint8_t u8Modeflag;
uint8_t u8Powerflag;
extern uint8_t u8DMX512flag;
extern uint8_t u8DMX512[DMX512_size];

void DoMode(void)
{
        while(1){
                if(u8Mode == 0)
                {
                        u8Modeflag = 0;               
                        drawMode(1);
                        SYS_SysTickDelay(300000);
                        SYS_SysTickDelay(300000);
                        drawString("**");
                       
                        while(1)
                        {
                                draw**("Nuvoton 3D LED Cube with DMX512");
                                if(u8Modeflag|u8Powerflag)
                                        break;
                        }
                }
                else if(u8Mode == 1)
                {
                        u8Modeflag = 0;                       
                        drawMode(2);
                        SYS_SysTickDelay(300000);
                        SYS_SysTickDelay(300000);       
                        drawString("Auto");

                        while(1)
                        {
                                if(u8Modeflag|u8Powerflag)
                                        break;                       
                                growCubeRachel();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                growCubeRachel();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                growCubeRachel();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playCube(140);
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playHinges(240); // plays through once
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playHinges(160); // leads into ceiling for layers going down
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playLayer(220); // good - does each layer once
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playSine(280); //280 has good landing for rain
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playRain(50);
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                growAndRotateSphere(3,3,4);
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                randMoveSphere( 3,3,4, 13);
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playDancingMan();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playSolidWave();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playSolidWave();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playSolidWave();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                playSolidWave();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                scrollMiamiM();
                                if(u8Modeflag|u8Powerflag)
                                        break;
                                scrollMiamiM();                       

                        }
                }
                else if(u8Mode == 2)
                {
                        u8Modeflag = 0;                               
                        drawMode(3);
                        SYS_SysTickDelay(300000);
                        SYS_SysTickDelay(300000);       
                        drawString("DMX512");

                        while(1)
                        {
                                if(u8DMX512flag)
                                {
                                        if(u8DMX512[0]==0x00)
                                        {//Control LED On/off
                                                LED_Updata(u8DMX512+IDnumber*64+1);
                                        }else//Control lightness
                                                LED_Lightness(u8DMX512[1]);
                                        u8DMX512flag = 0;
                                }
                                if(u8Modeflag|u8Powerflag)
                                        break;
                        }
                        LED_Lightness(0);
                }       
                if(u8Power == 0)
                {
                        break;
                }
        }
}
/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/
int main (void)
{
        uint8_t i = 0;
        _GPIO_SET_PIN_MODE(P4, 3, GPIO_PMD_OUTPUT);
        LED_Init();
        Key_Init();
        DMX512_Init();

        SYS_SysTickDelay(300000);
#if(IDnumber ==0)
        drawString("NO 0");
#else
        drawString("NO 1");
#endif       
       
        LEDisplay1();
        LED_TurnOnAll();
        SYS_SysTickDelay(300000);
        SYS_SysTickDelay(300000);       
        LED_TurnOffAll();
        while(1)
        {
       
                if(u8Power)
                {
                        u8Powerflag = 0;       
                        LED_Lightness(0);
                        drawString("ON");
                        DoMode();
                        u8Powerflag = 0;                       
                        drawString("OFF");
                }
                //LEDisplay3();
                LEDisplay4();
               
                if(i>4)
                {
                        LED_Lightness(8-i++);
                }else
                {
                        LED_Lightness(i++);
                }
                if(i>8)
                        i=0;
//                 DMX512_SendData((uint8_t*) 0);
//                 SYS_SysTickDelay(300000);       
                //printf("i love you");
        }
}


使用特权

评论回复
6
newphj| | 2016-9-22 08:15 | 只看该作者
KPI的有例程吗?

使用特权

评论回复
7
yiyigirl2014|  楼主 | 2016-9-24 12:50 | 只看该作者
newphj 发表于 2016-9-22 08:15
KPI的有例程吗?

有啊。下载那个BSP里面带的有

使用特权

评论回复
8
yiyigirl2014|  楼主 | 2016-9-24 13:18 | 只看该作者
newphj 发表于 2016-9-22 08:15
KPI的有例程吗?

NUC91系列官方没有直接提供例程,只有个手册。估计需要自己用寄存器写了。

使用特权

评论回复
9
yiyigirl2014|  楼主 | 2016-9-24 13:20 | 只看该作者
NUC91配置看起来想电脑一样,还带声卡AC97接口。。

使用特权

评论回复
10
yiyigirl2014|  楼主 | 2016-9-24 13:21 | 只看该作者

NUC 920 ABN采用ARM®的ARM 926 EJ-S核心,内建 8 KB I-Cache/D-Cache并且提供丰富的外设接口,例如:Ethernet MAC、ADC、PCI Host Interface、AC97/I²S、ATAPI Host Controller、Flash Memory Interface (FMI)、PS/2 Host Interface、SPI/I²C、UART、Timer、RTC、PWM、KPI及High-Speed USB 2.0 Controller等功能,以符合客户高效能应用的需求。

目标应用:

网络硬盘、多媒体转接盒

关键特性:

• 内核(Core)

   - ARM926EJ-S核心

   - 200MHz

   - 8 KB指令高速缓存及8 KB数据高速缓存

• 外部总线接口(EBI)

   - 支持SDRAM、NOR Flash、SRAM以及EBI兼容接口装置

   - SDRAM最大容量可到256 MB

• USB 2.0高速装置

   - 可提供2组USB接口,1组USB Host及1组Host/Device

   - 支持6个USB端点

• RMII界面10/100M Ethernet MAC

• PCI界面

   - 支持标准PCI 2.2版本

• **卡接口(FMI)

   - 支持SD、SDIO、MMC及Memory Stick卡

• 系统程序启动

   - 支持SPI Flash、NOR Flash及USB Device启动










使用特权

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

本版积分规则

213

主题

3545

帖子

10

粉丝