完善資料讓更多小伙伴認識你,還能領取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 |