1
完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
标签 > LPC1114
LPC1114是NXP公司推出的一款ARM Cortex-M0 内核的32位单片机。它的主频最大可达50MHz,内部集成时钟产生单元,不用外部晶振也可以工作。
LPC1114是NXP公司推出的一款ARM Cortex-M0 内核的32位单片机。它的主频最大可达50MHz,内部集成时钟产生单元,不用外部晶振也可以工作。内部集成32KB FALSH程序存储器、8K SRAM数据存储器、一个快速I2C接口、一个RS485/EIA485 UART、两个带SSP特征的SPI接口、4个通用定时器、1个系统定时器、1个带窗口功能的看门狗定时器、功耗管理模块、1个ADC模块和42个GPIO。截至Ration写稿时,一片LPC1114的零售价只需5.9元,批量价更便宜。如此强大的处理器,如此低廉的价格,可谓是性价比无敌,其低功耗、简单易用、高能效和低成本相结合,必然会在市场中占有一席之地。
LPC1114是NXP公司推出的一款ARM Cortex-M0 内核的32位单片机。它的主频最大可达50MHz,内部集成时钟产生单元,不用外部晶振也可以工作。内部集成32KB FALSH程序存储器、8K SRAM数据存储器、一个快速I2C接口、一个RS485/EIA485 UART、两个带SSP特征的SPI接口、4个通用定时器、1个系统定时器、1个带窗口功能的看门狗定时器、功耗管理模块、1个ADC模块和42个GPIO。截至Ration写稿时,一片LPC1114的零售价只需5.9元,批量价更便宜。如此强大的处理器,如此低廉的价格,可谓是性价比无敌,其低功耗、简单易用、高能效和低成本相结合,必然会在市场中占有一席之地。
LPC1114是ARM入门级的单片机,使用起来非常简单,只要会51单片机,就可以快速的使用LPC1114。幸运的是,即使你不会51单片机,Ration也可以带领你彻底征服这个看似复杂实则简单的单片机。
不管是什么单片机,本质上都一样,对外表现为N个引脚,用引脚的高低电平变化来完成各种控制通信工作。内部由若干个功能模块构成,例如串口模块、ADC模块等,有些单片机集成的功能模块相对较多,有些单片机集成的功能模块相对较少。我们要学习的,即如何配置单片机内部的各个模块,来完成我们所需要的目的。
不管是学习单片机,还是学习其它与单片机配合的其它硬件,学习方法都一样。从大局上看,它们都是由外部引脚和内部功能模块构成的。内部功能模块会有一些寄存器,我们了解了它的每个寄存器的功能,就可以通过它的用户手册配置寄存器,达到所需的要求。
例如:给51单片机中的寄存器P1写0x01,将会使得引脚P1.0电平为高,P1.1~P1.7引脚为低。给51单片机中的寄存器TMOD写0x20,将会配置定时器0为16位模式,定时器1为8位自动重载模式。
从学习角度讲,LPC1114与普通51单片机的主要区别:
1. LPC1114寄存器是32位的,普通51单片机寄存器是8位的
2. LPC1114内部功能模块比普通51单片机多
lpc1114的spi速率设置
spi速率计算公式为:PCLK / (CPSDVSR *[SCR+1])
公式出处:lpc1114用户手册SSP章节CR0寄存器的bit15:bit8定义的解释里面
PCLK是当前SSP的时钟,CPSDVSR是寄存器CPSR值,SCR是CR0寄存器bit15:bit8的值。
所以spi的速率受到了3个寄存器值的影响,这3个寄存器分别是:
1. LPC_SYSCON-》SSP1CLKDIV或者 LPC_SYSCON-》SSP0CLKDIV(这是SSP的分频寄存器)
2. LPC_SSP1-》CR0(这是SSP控制寄存器0,其中bit15:bit8决定速率)
3. LPC_SSP1-》CPSR(这是SSP时钟预分频寄存器)
得到这3个寄存器的值,就可以计算出当前的spi速率值,例如下面的SPI1初始化函数:
void SPI1_Init(void)
{
uint8_t i,Clear=Clear;//Clear=Clear:用这种语句形式解决编译产生的Waring:never used!
LPC_SYSCON-》PRESETCTRL |= (0x1《《2); //禁止LPC_SSP1复位
LPC_SYSCON-》SYSAHBCLKCTRL |= (0x1《《18);//允许LPC_SSP1时钟 bit18
LPC_SYSCON-》SSP1CLKDIV = 10; //10分频:50/10=5Mhz
LPC_SYSCON-》SYSAHBCLKCTRL |= (1《《16); // 使能IOCON时钟(bit16)
LPC_IOCON-》PIO2_1 &= ~0x07;
LPC_IOCON-》PIO2_1 |= 0x02; //把PIO2_1选择为LPC_SSP CLK
LPC_IOCON-》PIO2_2 &= ~0x07;
LPC_IOCON-》PIO2_2 |= 0x02; //把PIO2_2选择为LPC_SSP MISO
LPC_IOCON-》PIO2_3 &= ~0x07;
LPC_IOCON-》PIO2_3 |= 0x02; //把PIO2_3选择为LPC_SSP MOSI
LPC_SYSCON-》SYSAHBCLKCTRL &= ~(1《《16); // 禁能IOCON时钟(bit16)
// 8位数据传输,SPI模式, CPOL = 1, CPHA = 1,空闲时CLK为1,SCR = 4
LPC_SSP1-》CR0 = 0x04C7;
// 预分频值(注意:这里必须为偶数 2~254)
LPC_SSP1-》CPSR = 10;
LPC_SSP1-》CR1 &= ~(1《《0);//LBM=0:正常模式
LPC_SSP1-》CR1 &= ~(1《《2);//MS=0:主机模式
LPC_SSP1-》CR1 |= (1《《1);//SSE=1:使能SPI1
//清空RxFIFO,LPC1114收发均有8帧FIFO,每帧可放置4~16位数据
for ( i = 0; i 《 8; i++ )
{
Clear = LPC_SSP1-》DR;//读数据寄存器DR将清空RxFIFO
}
}
上面例子中,主频50MHz, LPC_SYSCON-》SSP1CLKDIV值为10,即PCLK=5MHz; LPC_SSP1-》CR0=0x04c7,即bit15:bit8为4,即SCR=4;LPC_SSP1-》CPSR=10;带入公式计算得出,现在的SPI速率应该是100KHz.
上图中,示波器,横向每格表示5微秒,图中一个周期就是10微秒,即100KHz,实测与理论完全一致。
编辑推荐厂商产品技术软件/工具OS/语言教程专题
电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |