NUC1xx系列是32位的內(nèi)嵌ARM Cortex-M0核的微控制器 ,適用于工業(yè)控制和需要豐富的通信接口的應(yīng)用領(lǐng)域。ARM Cortex-M0 內(nèi)核最高運(yùn)行50MHz。寬電壓工作范圍 由2.5V 至 5.5V。1.ARM Cortex-M0 內(nèi)核
Cortex-M0處理器是32位多級(jí)可配置的RISC處理器。它有AMBA AHB-Lite接口和嵌套向量中斷控制器(NVIC),具有可選的硬件調(diào)試功能,可以執(zhí)行Thumb指令,并與其它Cortex-M系列兼容。支持兩種模式:Thread模式和Handler模式;異常時(shí),系統(tǒng)進(jìn)入Handler模式,復(fù)位時(shí),系統(tǒng)進(jìn)入Thread模式。
1)基本特性:
特征:系統(tǒng)支持小端(little-endian)數(shù)據(jù)訪問,提供單指令32-bit 硬件乘法器。
NVIC:提供32個(gè)外部中斷,具有4級(jí)中斷優(yōu)先級(jí)。有專用的不可屏蔽中斷NMI。支持電平和脈沖中斷觸發(fā)。中斷喚醒控制器WIC,支持極低功耗休眠模式。
調(diào)試:提供4個(gè)硬件斷點(diǎn),2個(gè)觀察點(diǎn),用于非侵入式代碼分析的程序計(jì)數(shù)采樣寄存器,單步向量捕獲能力。
總線接口:提供簡(jiǎn)單的集成到所有系統(tǒng)外設(shè)和存儲(chǔ)器的單一32位AMBA-3 ABH-Lite系統(tǒng)接口;支持DAP(Debug Access Port)的單一32位的從端口。
2)外部總線接口EBI
為節(jié)省外部設(shè)備與芯片的連接線,EBI支持地址總線與設(shè)備總線多路復(fù)用,且地址鎖存使能信號(hào)ALE支持地址和數(shù)據(jù)周期的差別。
支持最大外部設(shè)備64KB(8位數(shù)據(jù)寬度)/128KB(16位數(shù)據(jù)寬度),支持可變的數(shù)據(jù)訪問時(shí)間(tACC)、地址鎖存使能時(shí)間(tALE)和地址保持時(shí)間(tAHD)。
EBI地址在0x6000 0000至0x6001 FFFF,總共內(nèi)存空間為128KB,當(dāng)系統(tǒng)申請(qǐng)的地址在EBI的內(nèi)存空間,相應(yīng)的EBI片選信號(hào)有效,EBI狀態(tài)機(jī)工作。
芯片內(nèi)的所有EBI信號(hào)通過MCLK同步,MCLK可以設(shè)置EBICON中的MCLKDIVN分頻HCLK/32
2.系統(tǒng)管理器
1)系統(tǒng)復(fù)位
復(fù)位源包括:上電復(fù)位、復(fù)位腳(/RESET)上有低電平、看門狗復(fù)位、低壓復(fù)位、欠壓檢測(cè)復(fù)位、Coretex-M0 單片機(jī)復(fù)位、系統(tǒng)復(fù)位。
系統(tǒng)復(fù)位和上電復(fù)位使整個(gè)芯片復(fù)位,包括外設(shè)。
2)系統(tǒng)電源
該器件的電源分為3類:a.由AVDD和AVSS提供的模擬電源,為模擬部分工作提供電壓;b.由VDD和VSS提供的固定的2.5V的數(shù)字電源,用于數(shù)字操作和I/O引腳的內(nèi)部穩(wěn)壓電源;c.VBUS提供給USB的電源,用于USB模塊傳輸操作。
內(nèi)部電壓調(diào)節(jié)器輸出LDO和VDD33,需要在相應(yīng)的引腳上外接電容。
3)系統(tǒng)內(nèi)存映射
NUC1xx 提供4G字節(jié)的尋址空間,NUC1xx系列僅支持小端數(shù)據(jù)格式,ROM、SRAM和控制寄存器統(tǒng)一編址。
4)系統(tǒng)定時(shí)器
Cortex-M0 包含一個(gè)24位系統(tǒng)定時(shí)器SysTick,使能后,定時(shí)器從SysTick 當(dāng)前寄存器(SYST_CVR)的值向下計(jì)數(shù)到0,下一個(gè)時(shí)鐘邊緣,重新加載寄存器(SYST_RVR) 的值。當(dāng)計(jì)數(shù)器減到0時(shí),標(biāo)志位COUNTFLAG置位,在讀數(shù)時(shí),清COUNTFLAG標(biāo)志位。
5)嵌套向量中斷控制器 (NVIC)
Cortex-M0 提供中斷控制器,用于總體管理異常,NVIC和處理器內(nèi)核緊密相連。
NVIC結(jié)構(gòu)支持32(IRQ[31:0])4級(jí)離散中斷優(yōu)先級(jí),當(dāng)接受任何中斷時(shí),ISR的開始地址可從內(nèi)存的向量表中取得,當(dāng)開始地址取得時(shí),NVIC將自動(dòng)保存處理狀態(tài)到棧中,包括以下寄存器“PC, PSR, LR, R0~R3, R12” 的值. 在ISR結(jié)束時(shí), NVIC 將從棧中恢復(fù)相關(guān)寄存器的值,進(jìn)行正常操作,因此花費(fèi)少量時(shí)處理中斷請(qǐng)求。向量表的基地址為0x00000000. 向量表包括復(fù)位后棧的初始值,所有異常處理器的入口地址. 向量號(hào)表示處理異常的先后次序。
6)系統(tǒng)控制寄存器
系統(tǒng)控制寄存器控制了Cortex?-M0的狀態(tài)和操作模式,包括CPUID、Cortex?-M0中斷優(yōu)先級(jí)和Cortex?-M0電源管理。
3.時(shí)鐘控制器
時(shí)鐘控制器為芯片提供時(shí)鐘源. 包括AMBA接口模塊和所有外圍設(shè)備時(shí)鐘,時(shí)鐘發(fā)生器由如下5個(gè)時(shí)鐘源組成:一個(gè)外部 32KHz 晶振、一個(gè)外部 12MHz 晶振、一個(gè)可編程的 PLL FOUT(PLL 由 12M 和 22M組成)、一個(gè)內(nèi)部 22MHz RC 振蕩器、一個(gè)內(nèi)部 10KHz 振蕩器。
時(shí)鐘源切換取決于寄存器HCLK_S(CLKSEL0[2:0]):
Cortex?-M0內(nèi)核的SysTick時(shí)鐘源可以選擇CPU時(shí)鐘或外部時(shí)鐘(SYST_CSR[2]),如果使用外部時(shí)鐘,SysTick時(shí)鐘(STCLK)有5個(gè)時(shí)鐘源,
該器件包含分頻器,由16級(jí)2分頻移位寄存器組成. 因此有16種分頻選擇從 Fin/21 到 Fin/216 ,其中 Fin 為輸入到時(shí)鐘分頻器的時(shí)鐘頻率.
4.存儲(chǔ)器
本文引用地址:
http://www.biyoush.com/article/201611/317154.htm1)程序存儲(chǔ)器
具有32K/64K/128K字節(jié)的片上FLASH ROM,用于存儲(chǔ)程序代碼(APROM),4kB在系統(tǒng)編程(ISP)加載程序內(nèi)存(LDROM),用于存儲(chǔ)ISP引導(dǎo)代碼,用戶可以通過ISP/IAP更新FLASH中的程序,用戶設(shè)置Config0以選擇從AP_ROM或LD_ROM開始。對(duì)于64/32K字節(jié)的器件,NUC1XX系列為用戶提供4k字節(jié)的數(shù)據(jù)FLASH用于存儲(chǔ)一些應(yīng)用所需的數(shù)據(jù);對(duì)于128k字節(jié)的器件,數(shù)據(jù)flash與128K的程序內(nèi)存共享,其開始地址是可配置的,由用戶在Config1中定義.用戶可以根據(jù)其應(yīng)用的需要來定義數(shù)據(jù)FLASH的大小。數(shù)據(jù)FLASH的基地址由DFBADR定義
2)數(shù)據(jù)存儲(chǔ)器
4K/8K/16K字節(jié)內(nèi)建SRAM,支持9通道PDMA用于SRAM和周邊設(shè)備的自動(dòng)數(shù)據(jù)傳輸。
3)PDMA控制器
NUC100/NUC120系列包括直接存儲(chǔ)器訪問(PDMA)控制器,用于APB和存儲(chǔ)器間的數(shù)據(jù)交換,具有 9 路DMA (外設(shè)-存儲(chǔ)器 或存儲(chǔ)器 -外設(shè) 或存儲(chǔ)器-存儲(chǔ)器) 通道,每路 PDMA 通道 (PDMA CH0~CH8), 在外設(shè) APB IP和存儲(chǔ)器間有一個(gè)字的數(shù)據(jù)緩沖器,每個(gè)通道可支持一個(gè)單項(xiàng)傳輸。
PDMA 運(yùn)行通過軟件輪流檢測(cè)或接收到內(nèi)部PDMA 中斷, CPU可以識(shí)別PDMA運(yùn)作的完成,PDMA 控制器可增加源和目的地址。對(duì)于源和目的地址而言,PDMA 控制器具有兩種模式:increased和fixed模式。每個(gè)PDMA模擬通道沒有先設(shè)定,因此用戶需要通過設(shè)定PDMA_PDSSR0和 PDMA_PDSSR1先行配置每路的PDMA 通道。軟件需使能DMA通道PDMA[PDMACEN] 并且寫有效的源地址到PDMA_SARx寄存器、目的地址到PDMA_DSABx寄存器、傳輸計(jì)算數(shù)到PDMA_BCRx寄存器、以及設(shè)置DMA_CSRx PDMA[Trig_EN]觸發(fā)。PDMA將繼續(xù)傳輸直到PDMA_CBCRx為0。PDMA (外設(shè)-到-存儲(chǔ)器、存儲(chǔ)器-到-外設(shè)) 模式,DMA可以在外設(shè)APB IP (ex:UART,SPI,ADC….) 和Memory將傳遞數(shù)據(jù)。
硬件通道優(yōu)先級(jí):DMA通道0有最高優(yōu)先級(jí),通道n有最低優(yōu)先級(jí)。
Low Density系列僅支持1個(gè)PDMA通道:
5.通用I/O
有80個(gè)通用I/O引腳,可以和其他功能引腳共享。80個(gè)引腳分配在GPIOA, GPIOB, GPIOC, GPIOD與GPIOE五個(gè)口上,每個(gè)口最多16個(gè)引腳。每個(gè)引腳都是獨(dú)立的,都有相應(yīng)的寄存器來控制引腳模式與數(shù)據(jù)。I/O引腳上的I/O類型可由軟件獨(dú)立地配置為輸入,輸出,開漏或準(zhǔn)雙端模式.所有的I/O引腳默認(rèn)處于準(zhǔn)雙端模式。
可選的TTL/Schmitt觸發(fā)輸入,支持大電流驅(qū)動(dòng)/灌入I/O模式。
1)輸入模式
設(shè)置GPIOx_OMD(PMDn[1:0])為00b,GPIOx port[n]為輸入模式,I/O引腳為三態(tài)(高阻),沒有輸出驅(qū)動(dòng)能力。GPIOx_PIN的值反映相當(dāng)端口的狀態(tài)。
2)推挽輸出模式
設(shè)置 GPIOx_OMD(PMDn[1:0]) 為 01b,GPIOx port [n] 為輸入模式,I/O支持?jǐn)?shù)字輸出功能,有source/sink電流能力. GPIO_DOUT 相應(yīng)位的值被送到相應(yīng)引腳上。
3)開漏輸出模式
設(shè)置 GPIOx_OMD(PMDn[1:0]) 為 10b,GPIOx port [n]為開漏模式,I/O支持?jǐn)?shù)字輸出功能,僅有灌電流能力,需要一個(gè)外加上拉電阻驅(qū)動(dòng)到高電平。
4)準(zhǔn)雙端模式
設(shè)置GPIOx_OMD(PMDn[1:0]) 為 11b,GPIOx port [n] 為準(zhǔn)雙端模式,I/O同時(shí)支持?jǐn)?shù)字輸出和輸入功能,但source電流僅達(dá)數(shù)百uA. 要實(shí)現(xiàn)數(shù)字輸入,需要先將GPIOx_DOUT 相應(yīng)位置1, 準(zhǔn)雙端輸出是80C51及其派生產(chǎn)品所共有的模式。準(zhǔn)雙端模式的source 電流能力僅有200uA到30uA(相應(yīng)VDD的電壓從5.0V到2.5V)
6.中斷系統(tǒng) NUC1xx 系列支持下表所列的異常模式. 與所有中斷一樣,軟件可以對(duì)其中一些中斷設(shè)置4級(jí)優(yōu)先級(jí). 最高優(yōu)先級(jí)為“0”,最低優(yōu)先級(jí)為“3”,所有用戶可配置的優(yōu)先級(jí)的默認(rèn)值為“0”. 注意:優(yōu)先級(jí)為“0”在整個(gè)系統(tǒng)中為第4優(yōu)先級(jí),排在“Reset”, “NMI” 與“Hard Fault”之后。
中斷模式對(duì)應(yīng)向量號(hào)為16-47,共32個(gè)中斷。
響應(yīng)中斷時(shí),處理器自動(dòng)從向量表中取出ISR的起始地址,對(duì)于ARMv6-M, 向量表的基地址為0x00000000。向量表包括復(fù)位后棧的初始值,所有異常處理器的入口地址。
7.定時(shí)器 定時(shí)器模塊包含4組32位定時(shí)器(包含一個(gè)8位預(yù)分頻計(jì)數(shù)器,一個(gè)24位向上計(jì)數(shù)器),TIMER0~TIMER3 (TIMER0, TIMER1位于 AHB1 ,TIMER2 和 TIMER3 位于 AHB2);各通道有獨(dú)立的時(shí)鐘源,每個(gè)通道有5個(gè)時(shí)鐘源選項(xiàng)。通過TDR(定時(shí)器數(shù)據(jù)寄存器)可讀取內(nèi)部24位向上計(jì)數(shù)器值
時(shí)間溢出周期= (定時(shí)器時(shí)鐘周期) * (8位預(yù)分頻值 + 1) * (24位 TCMP)
定時(shí)器控制器提供one-shot(單次觸發(fā)模式)、period(周期觸發(fā)模式)、toggle(可編程時(shí)鐘輸出)、持續(xù)計(jì)
數(shù)模式和事件計(jì)數(shù)器模式;
1)單次觸發(fā)模式
一旦定時(shí)器計(jì)數(shù)器的值達(dá)到TCMPR的值,且IE置1,則定時(shí)器中斷位置位,產(chǎn)生中斷信號(hào)并送到NVIC通知CPU,表明定時(shí)器發(fā)生溢出,定時(shí)器計(jì)數(shù)操作停止,該比較的操作僅進(jìn)行一次。
2)周期觸發(fā)模式
一旦定時(shí)器計(jì)數(shù)器的值達(dá)到TCMPR的值,定時(shí)器計(jì)數(shù)器的值返回計(jì)數(shù)初值并再次計(jì)數(shù),如果IE置1,則定時(shí)器中斷位置位,產(chǎn)生中斷信號(hào)并送到NVIC通知CPU。
3)可編程時(shí)鐘輸出模式
一旦定時(shí)器計(jì)數(shù)器的值與TCMPR匹配,且IE置1,則定時(shí)器中斷標(biāo)志位置位,產(chǎn)生中斷信號(hào)并送到NVIC通知CPU,相應(yīng)toggle輸出信號(hào)置1,定時(shí)器計(jì)數(shù)器的值返回到計(jì)數(shù)初值,定時(shí)器計(jì)數(shù)器重新計(jì)數(shù),如果中斷標(biāo)志被軟件清除,一旦定時(shí)器計(jì)數(shù)器的值再次與TCMPR匹配,則定時(shí)器中斷標(biāo)志為再次置位,產(chǎn)生中斷信號(hào)并送到NVIC通知CPU,相應(yīng)toggle輸出信號(hào)置0;如此往復(fù),產(chǎn)生占空比為50%的信號(hào)輸出。
4)持續(xù)計(jì)數(shù)模式
產(chǎn)生中斷信號(hào)的產(chǎn)生取決于TDR==TCMPR。定時(shí)器計(jì)數(shù)器的值與TCMPR匹配后,定時(shí)器計(jì)數(shù)器繼續(xù)計(jì)數(shù),而不返回計(jì)數(shù)初值,用戶可以通過不斷改變TCMPR值來實(shí)現(xiàn)計(jì)數(shù)或定時(shí)功能。
5)事件計(jì)數(shù)器
定時(shí)器計(jì)數(shù)器的時(shí)鐘源TMRx_CLK必須設(shè)置為HCLK,可以通過設(shè)置TEXCONx[7]來使能或禁止TM0-TM3防抖動(dòng)功能,以及設(shè)置TEXCONx[0]來設(shè)定TM0-TM3上升沿或下降沿計(jì)數(shù)。如果禁用計(jì)數(shù)防抖動(dòng),事件計(jì)數(shù)源頻率頻率必須小于1/3HCLK,如果使能計(jì)數(shù)防抖動(dòng),事件計(jì)數(shù)源頻率必須小于1/8HCLK,
8.串行口
MCU提供3個(gè)UART通道,UART0支持高速,UART1~2支持普通速度,另外UART0與UART1支持流控制,UART0與UART1可以采用DMA控制器。
通用異步收/發(fā)器(UART) 在從外設(shè)收到數(shù)據(jù)的時(shí)候執(zhí)行串到并的轉(zhuǎn)換,在從CPU收到數(shù)據(jù)的時(shí)候執(zhí)行并到串的轉(zhuǎn)換。該串口同時(shí)支持LIN主機(jī)模式和 IrDA SIR 功能。有7 種類型的中斷:發(fā)送FIFO 空中斷(Int_THRE)、接收極限到達(dá)中斷(Int_RDA)、線狀態(tài)中斷 (overrun error 或者校驗(yàn)錯(cuò)誤或者framing error或者break 中斷) (Int_RLS)、超時(shí)中斷(Int_Tout)、MODEM 狀態(tài)中斷(Int_Modem) 、喚醒狀態(tài)中斷 (Int_WakeUp)和LIN 接收停止偵測(cè)中斷。
UART0 接口控制器一個(gè)內(nèi)嵌64-byte 發(fā)送FIFO (TX_FIFO) 和 64-byte 接收 FIFO (RX_FIFO) 來降低CPU的中斷數(shù)量;UART1~2內(nèi)嵌 16-byte 發(fā)送FIFO (TX_FIFO) 和16-byte (每個(gè)字節(jié)加3比特的錯(cuò)誤數(shù)據(jù)) 接收FIFO (RX_FIFO) 來降低CPU的中斷數(shù)量,UART包括一個(gè)可編程的波特率發(fā)生器,它可以將輸入晶振除以一個(gè)除數(shù)來得到收發(fā)器需要的時(shí)鐘. 波特率公式是 Baud Rate = UART_CLK / M * [BRD + 2]. 其中M和BRD在波特率分頻寄存器UA_BAUD中定義。
UART0與UART1 控制器用 2 種low-level 信號(hào), /CTS (clear-to-send)和 /RTS (request-to-send)支持自動(dòng)流程控制功能。
UART 控制器提供 串行 IrDA (SIR, 串行紅外) 功能 (用戶需置位 UA_FUN_SEL[IrDA_EN] 使能 IrDA 功能),SIR 定義短程紅外異步串行傳輸模式 1 開始位, 8 數(shù)據(jù)位, 和1 停止位. 最大數(shù)據(jù)速率 為 115.2 Kbps (半雙工). IrDA SIR 包括 IrDA SIR 編碼/解碼協(xié)議。
UART 控制器具有LIN(局域網(wǎng)) 功能. LIN 模式提供設(shè)定LIN_EN bit 位 UA_FUN_SEL 寄存器. 在LIN 模式, 1 開始位 8 數(shù)據(jù)位和1 停止位相一致,同標(biāo)準(zhǔn)LIN 相同。
串口特性:可編程為5,6,7,8位的數(shù)據(jù)位,可編程奇偶校驗(yàn)或無校驗(yàn),可編程為1,1.5,2位的停止位,
UART支持RS-485 9位模式功能,設(shè)置UA_FUN_SEL選擇RS485模式;控制器可以配置成可尋址的從機(jī)模式,RS485發(fā)送可通過設(shè)置優(yōu)先級(jí)(bit9)為1標(biāo)志地址特性,對(duì)于數(shù)據(jù)特性,標(biāo)志優(yōu)先級(jí)為0;設(shè)置寄存器UA_LCR控制第9位(PBE,EPE和SPE置位,第9位發(fā)送0;PBE,SPE置位,EPE清零,第9位發(fā)送1)。
RS485自動(dòng)地址識(shí)別模式:接收器在檢測(cè)到地址字節(jié)(bit9 =1),并且地址字節(jié)數(shù)據(jù)與UA_RS_485[ADDR_MATCH]的值相匹配之前將忽略所有數(shù)據(jù),地址字節(jié)數(shù)據(jù)將存儲(chǔ)在RX_FIFO,所有接收字節(jié)數(shù)據(jù)將被接收并存儲(chǔ)于RX_FIFO,直到地址字節(jié)或數(shù)據(jù)字節(jié)與UA_RS_485[ADDR_MATCH]的值不匹配。
RS485普通多點(diǎn)操作模式:流設(shè)置UART_FCR[RS485_RX_DIS]使能UA_RS_485[RS485_NMM],接收器會(huì)忽略數(shù)據(jù),直到檢測(cè)到地址字節(jié)(bit 9=1)并且地址字節(jié)數(shù)據(jù)存儲(chǔ)到RX_FIFO;流禁止UART_FCR[RS485_RX_DIS],接收器將接收任何數(shù)據(jù)。
RS485編程流程:1)設(shè)置寄存器UA_FUN_SEL的FUN_SEL位選擇RS485模式;
2)設(shè)置寄存器UA_FCR中的RX_DIS位使能或禁止RS485接收器;
3)設(shè)置RS_485_NMM模式或RS_485_AAD模式;
4)如果選擇RS_485_AAD模式,AADR_MATCH設(shè)置成自動(dòng)地址匹配值;
5)若為自動(dòng)方向模式,設(shè)置R2_485_AUD;
9.實(shí)時(shí)時(shí)鐘 時(shí)鐘源由外部32.768KHz晶振提供,管腳為X32I 及X32O 或者外接32.768KHz 頻率的信號(hào)源。RTC支持時(shí)間格式 (秒,分,時(shí))寄存器(TLR)以及日歷格式(日,月,年)寄存器(CLR)。數(shù)據(jù)格式由BCD格式存取。模塊支持鬧鐘功能,(TAR)寄存器用于指示時(shí)間鬧鈴,(CAR)用于指示日期鬧鈴。
RTC 模塊支持時(shí)間記步及鬧鐘中斷,通過設(shè)定TTR.TTR[2:0],中斷提供8級(jí)選擇1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2 及1 秒。當(dāng) RTC 計(jì)數(shù)器內(nèi)的值TLR 和CLR 與TAR和CAR相當(dāng)時(shí),會(huì)引發(fā)中斷標(biāo)志 (RIIR.AIF)。
基于RTC時(shí)鐘與系統(tǒng)時(shí)鐘采用不同的模塊,用戶對(duì)RTC寄存器寫入后,必須等待2個(gè)RTC時(shí)鐘周期(60us)后,寄存器內(nèi)的值才會(huì)被更新。寄存器AER 位 15~0 作為RTC允許讀/寫密碼,用于避免掉電時(shí)對(duì)RTC造成的誤寫,要訪問RTC的寄存器AER,必須寫入0xa965以打開訪問限制,讀寫使能后,將會(huì)有效512個(gè)RTC時(shí)鐘,之后自動(dòng)關(guān)閉。
10.PWM發(fā)生器和捕捉定時(shí)器
1)PWM發(fā)生器
包含4組PWM發(fā)生器,可配置為8個(gè)獨(dú)立的PWM輸出,PWM0~PWM7,或4組互補(bǔ)的PWM對(duì),帶4個(gè)可編程的死區(qū)發(fā)生器。4組PWM發(fā)生器提供8個(gè)獨(dú)立的PWM中斷標(biāo)志,當(dāng)PWM向下計(jì)數(shù)周期達(dá)到零時(shí)觸發(fā)中斷。PWM發(fā)生器可以定義為單觸發(fā)模式或連續(xù)輸出PWM波形。
每組PWM發(fā)生器帶有8位預(yù)分頻,一個(gè)時(shí)鐘除頻提供5級(jí)時(shí)鐘源(1, 1/2, 1/4, 1/8, 1/16),兩個(gè)PWM定時(shí)器包括2個(gè)時(shí)鐘選擇,兩個(gè)16位PWM向下計(jì)數(shù)計(jì)數(shù)器用于PWM period 周期控制,兩個(gè)16位比較器用于PWM duty 周期控制以及死區(qū)發(fā)生。
當(dāng)PCR.DZEN01置位, PWM0 與 PWM1形成互補(bǔ)的PWM周期,這一對(duì)PWM的周期、占空比和死區(qū)時(shí)間由PWM0定時(shí)器和死區(qū)發(fā)生器0決定;其他PWM互補(bǔ)對(duì)類似。
當(dāng)16位向下計(jì)數(shù)計(jì)數(shù)器達(dá)到0時(shí),中斷請(qǐng)求產(chǎn)生。如果PWM定時(shí)器被定義為連續(xù)模式,當(dāng)向下計(jì)數(shù)器達(dá)到0時(shí),會(huì)自動(dòng)重新導(dǎo)入設(shè)定值(CNRx)并從新開始運(yùn)行下一個(gè)周期。如果定時(shí)器設(shè)為單觸發(fā)模式,向下計(jì)數(shù)器停止計(jì)數(shù),并產(chǎn)生中斷請(qǐng)求。比較器數(shù)據(jù)用于設(shè)定脈寬,計(jì)數(shù)器控制邏輯在計(jì)數(shù)器計(jì)數(shù)到比較值時(shí)將PWM輸出變高。
PWM period 和duty 控制由向下計(jì)數(shù)的PWM寄存器(CNR)以及PWM比較寄存器(CMR)控制。占空比 = (CMR+1)/(CNR+1).
PWM 頻率 = PWMxy_CLK/(prescale+1)*(clock divider)/(CNR+1); xy代表01, 23, 45 或 67, 取決于所選擇的PWM通道.
CMR >= 計(jì)數(shù)值: PWM 輸出為高,反之PWM輸出低;PWM低脈寬= (CNR-CMR) ; PWM高脈寬=(CMR+1)
PWM定時(shí)器具有雙緩存功能。寄存器預(yù)先設(shè)定的值,在一個(gè)周期完成后,可以自動(dòng)重載。PWM計(jì)數(shù)器值寫入CNR0~7,并可從PDR0~7內(nèi)讀出;PWM 控制寄存器(PCR) 的CH0MOD 位定義PWM0是自動(dòng)重載模式或是單觸發(fā)模式。當(dāng)PWM計(jì)數(shù)器計(jì)到0,MCU自動(dòng)重載CNR0 值到PWM 計(jì)數(shù)器。雙緩存允許CMR字當(dāng)前運(yùn)行時(shí)改寫,下一個(gè)周期內(nèi)值被導(dǎo)入運(yùn)行。
PWM死區(qū)發(fā)生器,用于保護(hù)器件電源(這一特性用于在開關(guān)設(shè)備的斷開和另一個(gè)開關(guān)設(shè)備的閉合之間插入一個(gè)時(shí)間缺口,使它們不會(huì)處于同時(shí)閉合的狀態(tài))。該功能產(chǎn)生可編程的延遲時(shí)間到PWM上升沿輸出,用戶通過編程PPRx.DZI確定死區(qū)間隔。
2)捕捉定時(shí)器
當(dāng)PWM輸出模塊的輸入捕捉功能使能,可同時(shí)用作捕捉功能。捕捉器0和PWM0使用同一個(gè)定時(shí)器,捕捉器1和PWM1使用另一組定時(shí)器,以此類推。在使用捕捉功能之前,必須預(yù)先配置PMW定時(shí)器。當(dāng)輸入信號(hào)有上升沿轉(zhuǎn)變時(shí),PWM計(jì)數(shù)器的值將存入CRLRx寄存器,當(dāng)輸入信號(hào)有下降沿轉(zhuǎn)變時(shí),PWM計(jì)數(shù)器的值將存入CFLRx寄存器。
設(shè)定CCR0[1] (上升沿觸發(fā)中斷有效)和CCR0[2](下降沿觸發(fā)中斷有效),可以使捕捉器通道0作為中斷源。同樣設(shè)定CCR0[17] 和CCR0[18],可以設(shè)定通道1。最大的捕捉頻率由捕捉中斷延遲決定,捕捉中斷發(fā)生時(shí),軟件執(zhí)行以下三步:a.讀PIIR獲取中斷源;b.讀CRLRx/CFLRx獲取捕捉值和寫
1清PIIR,如果中斷延遲在T0完成,捕捉信號(hào)在(T0)間隔內(nèi)必須不能變化,此條件下,捕捉頻率最大為1/T0。 每當(dāng)捕捉控制器觸發(fā)捕捉中斷時(shí),相應(yīng)的PWM計(jì)數(shù)器會(huì)同時(shí)重載CNRx的值,通道低脈寬為(CNR+1-CRLR);通道高脈寬為 (CNR+1-CFLR)。
3)PWM定時(shí)器及捕捉配置
PWM定時(shí)器開啟步驟:
1. 配置時(shí)鐘選擇 (CSR)
2. 配置預(yù)分頻(PPR)
3. 配置反向打開/關(guān)閉,死區(qū)打開/關(guān)閉,自動(dòng)重載/單觸發(fā)模式以及PWM定時(shí)器關(guān)閉 (PCR)
4. 配置比較器寄存器(CMR) 設(shè)定PWM 占空比.
5. 配置PWM計(jì)數(shù)器寄存器 (CNR) 設(shè)定PWM周期.
6. 配置中斷使能寄存器 (PIER)
7. 配置PWM輸出使能 (POE)
8. 配置相應(yīng)的管腳GPIO (GPA_MFP)
9. 配置相應(yīng)的管教到輸出模式 (GPIOA_OMD)
10. 使能PWM定時(shí)器(PCR)
PWM定時(shí)器關(guān)閉步驟:
方式 1:設(shè)定16位向下計(jì)數(shù)計(jì)數(shù)器(CNR)為0,并查看PDR狀態(tài)。當(dāng)PDR達(dá)到0,關(guān)閉PWM定時(shí)器 (PCR的CHxEN位). (推薦)
方式2:設(shè)定16位向下計(jì)數(shù)計(jì)數(shù)器(CNR)為0,當(dāng)中斷條件發(fā)生。在中斷內(nèi)關(guān)閉PWM定時(shí)器(PCR的CHxEN位). (推薦)
方式3:直接關(guān)閉PWM定時(shí)器(PCR的CHxEN位). (不推薦,因?yàn)榻笴HxEN會(huì)立即停止PWM輸出信號(hào),導(dǎo)致PWM占空比改變,可能引起電機(jī)的損壞)
捕捉開始步驟:
1. 配置時(shí)鐘選擇(CSR)
2. 配置預(yù)分頻(PPR)
3. 配置通道使能,上升/下降沿中斷使能以及輸入信號(hào)反向打開/關(guān)閉 (CCR0, CCR1)
4. 配置PWM計(jì)數(shù)器寄存器 (CNR)
5. 配置捕捉輸入使能寄存器 (CAPENR)
6. 配置相應(yīng)的GPIO管腳用于PWM功能 (GPA_MFP)
7. 配置相應(yīng)的GPIO管腳于輸入模式S (GPIOA_OMD)
8. 使能PWM定時(shí)器(PCR)
11.看門狗定時(shí)器WDT
看門狗定時(shí)器包含一個(gè)18位的自動(dòng)運(yùn)行的計(jì)數(shù)器,可編程其定時(shí)溢出間隔。設(shè)置WTE(WDTCR[7])使能看門狗定時(shí)器和WDT計(jì)數(shù)器開始計(jì)數(shù). 當(dāng)計(jì)數(shù)器達(dá)到選擇的定時(shí)溢出間隔,看門狗定時(shí)器中斷標(biāo)志W(wǎng)TIF被立即置位,并請(qǐng)求WDT中斷(如果看門狗定時(shí)器中斷使能位WTIE置位),同時(shí),緊接著會(huì)有一個(gè)指定周期(1024*Twdt)延時(shí),用戶必須在指定周期內(nèi)設(shè)置WTR(WDTCR[0]) (看門狗定時(shí)器復(fù)位)為高,重置18位WDT計(jì)數(shù)器,防止CPU復(fù)位,WTR在WDT計(jì)數(shù)重置后自動(dòng)由硬件清零。
通過設(shè)置WTIS(WDTCR[10:8])選擇8個(gè)定時(shí)溢出間隔(2^4~2^18),如果在特殊延遲時(shí)間終止后,如果WDT計(jì)數(shù)沒有被清零,看門狗定時(shí)將置位看門狗定時(shí)器重置標(biāo)志(WTRF)為高并使CPU復(fù)位. 這個(gè)復(fù)位將持續(xù)63個(gè)WDT時(shí)鐘,然后CPU重啟,并從復(fù)位向量(0x0000 0000)執(zhí)行程序,WTRF將不被看門狗復(fù)位清零,用戶可用軟件拉低WTFR。
12.模擬數(shù)字轉(zhuǎn)換(ADC)
NUC1XX 系列包含 一個(gè)12-bit 8通道逐次逼近式 模擬 – 數(shù)字轉(zhuǎn)換器 (SAR A/D converter)。A/D 轉(zhuǎn)換器支持 三種操作模式: 單一、單周期掃描 和連續(xù)掃描模式。開始A/D 轉(zhuǎn)換可軟件設(shè)定和外部STADC/PB.8 pin開啟。
當(dāng)改變運(yùn)行模式或模擬輸入通道使能時(shí), 為了防止錯(cuò)誤的操作, 軟件需清 ADST 位為 0 (ADCR register). A/D 轉(zhuǎn)換將停止 并進(jìn)入idle 模式.
A/D轉(zhuǎn)換器有3個(gè)中斷源:A/D 轉(zhuǎn)換結(jié)束時(shí)ADF(ADSR寄存器)位被置1;當(dāng)A/D轉(zhuǎn)換結(jié)果同ADCMPR0/1寄存器設(shè)定值相匹配時(shí),CMPF0/1會(huì)被置1;當(dāng)ADF、CMPF0、CMPF1其中一個(gè)標(biāo)志被置1,且其相應(yīng)的ADIE 位(ADCR 寄存器)及CMPIE(ADCMPR0/1寄存器)置1時(shí),將產(chǎn)生 ADINT 中斷請(qǐng)求。
1)特征
模擬輸入電壓: 0~Vref (Max to 5.0V).
12位分辨率和10位精確度保證。
多達(dá) 8 路單端模擬輸入通道或4路差分輸入。
最大 ADC 時(shí)鐘頻率 16MHz/20MHz。ADC時(shí)鐘頻率= (ADC clock source frequency) / (ADC_N+1);
高達(dá)600K/1M SPS 轉(zhuǎn)換速率, 轉(zhuǎn)換時(shí)間少于 1us.
轉(zhuǎn)換結(jié)果可和指定的值相比較 當(dāng)轉(zhuǎn)換值和設(shè)定值相匹配時(shí),用戶設(shè)定產(chǎn)生中斷請(qǐng)求.
通道7支持3輸入源:外部模擬電壓, 內(nèi)部基準(zhǔn)電壓和內(nèi)部溫度傳感器輸出.
支持自身校正功能減少轉(zhuǎn)換的誤差,用戶可寫1到CALEN 位(ADCALR 寄存器)使能自身校正功能, 當(dāng)內(nèi)部校正完成CAL_DONE為高。
2)單觸發(fā)模式
在單觸發(fā)模式下, A/D 轉(zhuǎn)換僅僅在指定的單一通道中執(zhí)行一次,運(yùn)作流程如下:
1. 當(dāng) ADCR 的ADST 置位開始A/D 轉(zhuǎn)換,可通過軟件或外部觸發(fā)輸入.
2. 當(dāng) A/D 轉(zhuǎn)換完成,轉(zhuǎn)換值將存儲(chǔ)在與通道相對(duì)應(yīng)的A/D數(shù)據(jù)寄存器中.
3. A/D 轉(zhuǎn)換完成, ADSR 的ADF 位置位. 若此時(shí)ADIE 位置位, 將產(chǎn)生ADINT 中斷請(qǐng)求.
4. A/D 轉(zhuǎn)換期間,ADST 位維持為1,A/D 轉(zhuǎn)換結(jié)束,ADST 位自動(dòng)清 0,A/D 轉(zhuǎn)換器進(jìn)入idle 模式。ADST清0后,至少要等一個(gè)ADC時(shí)鐘,才能再將ADST位置1,否則A/D 轉(zhuǎn)換器可能無法運(yùn)作。
3)單周期掃描模式
在單周期模式下,ADC會(huì)對(duì)所有指定的通道進(jìn)行一次采樣和轉(zhuǎn)換,且從編號(hào)最小的通道開始運(yùn)作,具體流程如下:
1. 軟件置位 ADCR 寄存器的ADST 位或外部觸發(fā)輸入置位,A/D 轉(zhuǎn)換從最小編號(hào)的通道開始。
2. 每路 A/D 轉(zhuǎn)換完成后, A/D 轉(zhuǎn)換數(shù)值將裝載到相應(yīng)數(shù)據(jù)寄存器中。
3. 當(dāng)被選擇的通道數(shù)都轉(zhuǎn)換完成后,ADF 位(ADSR 寄存器)置位。若此時(shí) ADIE 置位, 將產(chǎn)生 ADINT 中斷請(qǐng)求。
4. A/D 轉(zhuǎn)換結(jié)束, ADST位自動(dòng)清0,A/D 轉(zhuǎn)換器進(jìn)入idle 模式。若在轉(zhuǎn)換過程中ADST被清0,則無法保證存儲(chǔ)在數(shù)據(jù)寄存器中的值之正確性。ADST清0后,至少要等一個(gè)ADC時(shí)鐘,才能再將ADST位置1,否則A/D 轉(zhuǎn)換器可能無法運(yùn)作。
4)連續(xù)轉(zhuǎn)換模式
在連續(xù)模式下, 可通過設(shè)定CHEN 位 ADCHER 寄存器 (maximum 8 channels for ADC) 使能 A/D 轉(zhuǎn)換.運(yùn)作流程如下:
1. 軟件置位 ADCR 寄存器的 ADST 位或外部觸發(fā)輸入置位,A/D 轉(zhuǎn)換從最小編號(hào)的通道開始。
2. 每路 A/D 轉(zhuǎn)換完成后, A/D 轉(zhuǎn)換數(shù)值將裝載到相應(yīng)數(shù)據(jù)寄存器中.
3. 當(dāng)所有被使能的通道數(shù)依序完成一次A/D轉(zhuǎn)換后,ADF位(ADSR 寄存器)置位。若此時(shí) ADIE 置位,將產(chǎn)生ADINT中斷請(qǐng)求,當(dāng) A/D 轉(zhuǎn)換完成后. 使能的最小編號(hào)通道將開始新的轉(zhuǎn)換。
4. 只要ADST保持 1,就重復(fù)步驟2 ~ 3。當(dāng) ADST 位清 0, A/D 轉(zhuǎn)換將停止,但無法保證最小通道使能通道的轉(zhuǎn)換結(jié)果之正確性。
5)比較模式下的A/D轉(zhuǎn)換結(jié)果監(jiān)控
ADC控制器提供2組比較寄存器 ADCMPR0和ADCMPR1監(jiān)控 A/D 轉(zhuǎn)換模塊的2路轉(zhuǎn)換結(jié)果值??赏ㄟ^軟件設(shè)定CMPCH[2:0] 來選擇監(jiān)控那路通道,而CMPCOND 位被用來檢查轉(zhuǎn)換值小于或大于等于CMPD[11:0]指定值,當(dāng)CMPCH指定的通道轉(zhuǎn)換完成時(shí),比較行為將會(huì)被自動(dòng)的觸發(fā)一次,當(dāng)比較結(jié)果與設(shè)定值匹配,比較計(jì)數(shù)器將加1,否則比較計(jì)數(shù)器清0。當(dāng)計(jì)數(shù)器的值與(CMPMATCNT+1)匹配,CMPF位將置1,將產(chǎn)生ADINT中斷請(qǐng)求。在掃描模式下軟件可應(yīng)用于監(jiān)控外部模擬輸入pin腳電壓變化。
6)外設(shè)DMA 請(qǐng)求
當(dāng) A/D 轉(zhuǎn)換完成,結(jié)果裝載到ADDR 寄存器且VALID 置位。如果ACDR寄存器PTEN位置位, ADC控制器將產(chǎn)生PDMA請(qǐng)求(P_nDRQ) ,以便用戶將數(shù)據(jù)傳輸?shù)接脩糁付ǖ膬?nèi)存空間,而無需CPU參與。不管選擇哪個(gè)通道,PDMA操作的源地址都是ADPDMA。如果ADC工作在單周期或連續(xù)掃描模式,當(dāng)PDMA傳輸轉(zhuǎn)換結(jié)果時(shí),ADC將繼續(xù)轉(zhuǎn)換選擇的下一通道,用戶可通過讀ADPDMA監(jiān)控當(dāng)前PDMA傳輸數(shù)據(jù)。
13.模擬比較器CMP
NUC1XX 系列包括2 路模擬比較器,當(dāng)正級(jí)輸入大于負(fù)極輸入(可選擇內(nèi)部參考電壓)時(shí),比較器輸出為邏輯1,反之為邏輯 0;每一路比較器可配置成:當(dāng)輸入值發(fā)生改變時(shí)產(chǎn)生中斷。軟件可 寫 0 到 CMP0 位 CMPF1 以停止中斷請(qǐng)求。2路模擬比較器共用同一個(gè)中斷請(qǐng)求。
14.USB設(shè)備控制器
NUC1xx系列包含一組全速USB 2.0 設(shè)備控制器和收發(fā)器,符合USB 2.0規(guī)范,支持control/bulk/
interrupt/isochronous 傳輸類型。
在該設(shè)備控制器里,包含2個(gè)主接口:APB總線和由USB PHY收發(fā)器出來的USB總線,CPU通過APB總線編程控制寄存器,在該控制器內(nèi)置有512字節(jié)的SRAM作為數(shù)據(jù)緩存。輸入或輸出傳輸,需要通過AHB從接口或SIE向SRAM寫數(shù)據(jù)或從SRAM讀數(shù)據(jù)。用戶需要通過BUFSEGx為每個(gè)端點(diǎn)緩存設(shè)置有效的SRAM地址。在USB功能有效前,用戶需要在緩沖段寄存器配置每個(gè)端點(diǎn)的有效起始地址(地址范圍0x4006 0100-0x4006 02ff)。
USB設(shè)備控制器具有6個(gè)可配置的端點(diǎn),每個(gè)端點(diǎn)可配置為IN或OUT類型。所有的操作包括control,bulk,interrupt,isochronous傳輸都由斷點(diǎn)模塊來執(zhí)行。端點(diǎn)控制模塊還可以用來管理數(shù)據(jù)同步時(shí)序,端點(diǎn)狀態(tài)控制,當(dāng)前起始地址,當(dāng)前事務(wù)狀態(tài)和每個(gè)端點(diǎn)的數(shù)據(jù)緩存狀態(tài)。
該控制器提供1個(gè)中斷向量、4個(gè)不同的中斷事件,包括喚醒功能、設(shè)備插拔事件、USB事件(如IN ACK,OUT ACK等)和BUS事件(如suspend和resume等),用戶需要在中斷事件狀態(tài)寄存器(USB_INISTS)檢查相關(guān)事件標(biāo)志以得知發(fā)生何種中斷,然后檢測(cè)相關(guān)USB端點(diǎn)狀態(tài)寄存器(USB_EPSTS)以得知該端點(diǎn)上發(fā)生何種事件??偩€中斷告之用戶一些總線事件,如USB復(fù)位、中止、暫停、恢復(fù),用戶可以讀特殊功能寄存器“ATTR”獲取總線事件。
USB設(shè)備有一個(gè)軟件禁用功能,用于模擬設(shè)備沒有跟主機(jī)相連的情況。
SIE是設(shè)備控制器的前端,處理最多的USB 協(xié)議包。處理功能包括:
- 包識(shí)別,處理時(shí)序
- SOP, EOP, RESET, RESUME信號(hào)檢測(cè)/產(chǎn)生
- Clock/Data分離
- NRZI 數(shù)據(jù)編解碼與比特填塞(bit-stuffing)
- CRC產(chǎn)生和校驗(yàn) (for Token and Data)
- Packet ID (PID) 產(chǎn)生和校驗(yàn)/解碼
- 串-并/并-串轉(zhuǎn)換
數(shù)字鎖相環(huán)DPLL:USB數(shù)據(jù)的比特率為12MHz, DPLL采用的48MHz的頻率由時(shí)鐘控制器產(chǎn)生,鎖定RXDP與RXDM的輸入數(shù)據(jù),12MHz的比特率時(shí)鐘也是由DPLL轉(zhuǎn)換來的。
插拔去抖動(dòng):USB設(shè)備可以進(jìn)行熱插拔操作,為了監(jiān)測(cè)USB設(shè)備被拔出的狀態(tài),設(shè)備控制器提供了硬件去抖動(dòng)以防止在USB插拔時(shí)產(chǎn)生的抖動(dòng)問題,懸空檢測(cè)中斷產(chǎn)生于USB進(jìn)行插拔操作的10ms后,用戶可以通過讀取“FLODET”寄存器的值,來應(yīng)答USB插拔;“FLODET”代表在當(dāng)前總線上沒有經(jīng)過去抖動(dòng)處理的狀態(tài),若用戶要通過這個(gè)標(biāo)志來檢測(cè)USB的狀態(tài),則需要添加軟件去抖動(dòng)功能。
當(dāng)芯片進(jìn)入掉電模式時(shí),USB 自動(dòng)關(guān)閉PHY省電,此外,在特殊環(huán)境下,用戶可以給特殊功能寄存器ATTR[4]寫入“0”關(guān)閉PHY進(jìn)入省電狀態(tài)。
與USB外設(shè)通信處理:用戶可以采用中斷或檢測(cè)USB_EVF來監(jiān)測(cè)USB通信,在USB通信發(fā)生時(shí),USB_EVF 由硬件置1,并向CPU發(fā)送中斷請(qǐng)求。
USB主機(jī)向設(shè)備控制器請(qǐng)示數(shù)據(jù)時(shí),用戶需要準(zhǔn)備相關(guān)的數(shù)據(jù)給端點(diǎn)緩存. 在緩沖請(qǐng)求數(shù)據(jù)后,用戶需要寫入實(shí)際數(shù)據(jù)長(zhǎng)度給MAXPLD寄存器。一旦這個(gè)寄存器被寫入數(shù)據(jù),內(nèi)部信號(hào)“In_Rdy”會(huì)被設(shè)置,當(dāng)收到主機(jī)相關(guān)的IN token之后,緩沖數(shù)據(jù)將被立刻傳送。在傳送制定數(shù)據(jù)之后,信號(hào) “In_Rdy”會(huì)由硬件自動(dòng)清除。
USB主機(jī)要發(fā)送數(shù)據(jù)到設(shè)備控制器的OUT端點(diǎn),硬件將這些數(shù)據(jù)存在指定的端點(diǎn)緩存里,通信完成后,硬件在MAXPLD記錄數(shù)據(jù)長(zhǎng)度,并發(fā)送“Out_Rdy”信號(hào),這避免硬件在用戶沒有取走當(dāng)前數(shù)據(jù)時(shí)接收下一個(gè)數(shù)據(jù)。一旦用戶處理了這個(gè)通信時(shí),由軟件寫入相關(guān)的寄存器“MAXPLD”來設(shè)置“Out_Rdy” 信號(hào)以接收下一次通信。
15.I2C 總線控制器 (主機(jī)/從機(jī))
I2C 為雙線,雙向串行總線,I2C 總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s 在快速模式下可達(dá)400kbit/s 在高速模式,直至 1.0 Mbit/s 的增強(qiáng)高速模式。
在連接到總線的器件間傳遞信息每個(gè)器件都有一個(gè)唯一的地址識(shí)別。數(shù)據(jù)在主機(jī)和從機(jī)間通過SCL時(shí)鐘線控制在SDA數(shù)據(jù)線上實(shí)現(xiàn)一字節(jié)一字節(jié)的同步傳輸,數(shù)據(jù)由最高位MSB開始傳輸,每個(gè)字節(jié)包含8位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個(gè)字節(jié)后必須跟一個(gè)響應(yīng)位。如果從機(jī)要完成一些其他功能后,才能接收或發(fā)送下一個(gè)完整的數(shù)據(jù)。字節(jié)可以使時(shí)鐘線SCL 保持低電平迫使主機(jī)進(jìn)入等待狀態(tài),當(dāng)從機(jī)準(zhǔn)備好接收下一個(gè)數(shù)據(jù)字節(jié)并釋放時(shí)鐘線SCL 后,數(shù)據(jù)傳輸繼續(xù)。
片上I2C邏輯提供符合I2C總線標(biāo)準(zhǔn)的串聯(lián)標(biāo)準(zhǔn)接口,I2C接口自動(dòng)處理字節(jié)傳輸,將I2CON的ENS1位設(shè)置為1,即可使能該端口,I2C H/W接口通過SDA與SCL兩個(gè)引腳連到I2C總線。用于I2C操作的兩個(gè)引腳需要上拉電阻,因?yàn)檫@兩個(gè)引腳為開漏腳,在I/O引腳作為I2C端口使用時(shí),用戶必須預(yù)先設(shè)置引腳功能為I2C功能。
1)I2C協(xié)議
通常標(biāo)準(zhǔn)I2C傳輸協(xié)議包含四個(gè)部分:
- 起始信號(hào)或重復(fù)起始信號(hào)
-從機(jī)地址傳輸
-數(shù)據(jù)傳輸
-停止信號(hào)
2)I2C寄存器
NUC1xx共有6個(gè)特殊功能寄存,用于I2C通訊: I2CON(控制寄存器 C0H), I2STATUS(狀態(tài)寄存器 BDH), I2DAT(數(shù)據(jù)寄存器 BCH), I2ADDR(包括I2CADDRn和I2CADRMn,地址寄存器 C1H), I2CLK(時(shí)鐘速率寄存器 BEH) 和 I2TOC(定時(shí)計(jì)數(shù)寄存器 BFH)。寄存器的第31位至第8位都是保留的,不具備任何功能。
當(dāng)ENS1置1,I2C口使能后,內(nèi)部狀態(tài)由 I2CON 和 I2C總線上狀態(tài)控制。當(dāng)有新的狀態(tài)發(fā)生后,會(huì)存儲(chǔ)到 I2STATUS, I2C 中斷標(biāo)志(SI) 也會(huì)自動(dòng)置起。若此時(shí) EI2 被設(shè)定為高,I2C中斷會(huì)被響應(yīng)。
3)I2C操作模式
5種操作模式:主機(jī)/傳輸,主機(jī)/接收,從機(jī)/傳輸,從機(jī)/接收和GC 模式。
16.串行外圍設(shè)備接口(SPI)控制器
SPI接口是工作于全雙工模式下的同步串行數(shù)據(jù)傳輸接口。共支持四組雙向主/從機(jī)模式傳輸。包括4組SPI控制器,將從外設(shè)得到的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,或?qū)?shù)據(jù)進(jìn)行并串轉(zhuǎn)換,發(fā)送到外設(shè)。每組SPI控制可以被作為一個(gè)主機(jī),驅(qū)動(dòng)最多2個(gè)外部從設(shè)備,還可以被設(shè)置為外圍設(shè)備的從機(jī)。
該主/從機(jī)內(nèi)核包含2組32位輸出/輸入數(shù)據(jù)緩存,可支持突發(fā)傳輸(burst mode)模式,并支持各種不同長(zhǎng)度的變量數(shù)據(jù)模式,最多可支持64位數(shù)據(jù)傳輸。
該控制器支持不同串行時(shí)鐘,支持1位、2位數(shù)據(jù)傳輸模式。支持MSB 或 LSB 為最先傳輸模式。支持2個(gè)通道的PDMA請(qǐng)求,一個(gè)用于發(fā)送,一個(gè)用于接收。
1)SPI作為主機(jī)時(shí),與 一個(gè)從機(jī)設(shè)備通信如下:
a.對(duì)DIVIDER內(nèi)寫入值,確定傳輸頻率。
b.將主機(jī)模式的相應(yīng)設(shè)置寫入SSR,設(shè)定 ASS = 0, SS_LVL = 0 且SSR[0] 或SSR[1] =1 用以使能模塊。
c.將主機(jī)模式的相應(yīng)設(shè)置寫入寄存器SPI_CNTRL。
d.如果SPI主機(jī)要發(fā)送一個(gè)字節(jié)的數(shù)據(jù)到外設(shè),則將所要發(fā)送的數(shù)據(jù)寫入寄存器SPI_Tx0。
e.如果SPI主機(jī)只是從外設(shè)接收一個(gè)字節(jié)的數(shù)據(jù),不必管被傳輸出去的數(shù)據(jù)是什么,只需向寄存器SPI_TX0寫入0xff。
f.使能GO_BUSY位(SPI_CNTRL[0]=1),以開始SPI接口的數(shù)據(jù)傳輸。
g.等到SPI中斷發(fā)生,或檢測(cè)GO_BUSY位直到被硬件自動(dòng)清0。
h.從寄存器SPI_RX0[7:0]讀出所接收到的一個(gè)字節(jié)的數(shù)據(jù)。
i.重復(fù)步驟d,繼續(xù)其他數(shù)據(jù)的傳輸,或設(shè)置SSR[0]為0以停止外設(shè)。
2)SPI作為從機(jī)時(shí)
a.設(shè)置從機(jī)有效電平位SS_LVL(SPI_SSR[2]=1)與從機(jī)選擇電平觸發(fā)位SS_LTRIG(SPI_SSR[4]=1)使從機(jī)選擇信號(hào)為高電平觸發(fā)。
b.將從機(jī)模式的相應(yīng)設(shè)置寫入寄存器SPI_CNTRL。
c.如果SPI從機(jī)要發(fā)送一個(gè)字節(jié)的數(shù)據(jù)到SPI主機(jī),則將所要發(fā)送的數(shù)據(jù)寫入寄存器SPI_Tx0。
d.如果SPI從機(jī)只是要從外設(shè)主機(jī)接收一個(gè)字節(jié)的數(shù)據(jù),不必管被傳輸?shù)臄?shù)據(jù)是什么,只需向寄存器SPI_TX0寫入0xff。
e.使能GO_BUSY位(SPI_CNTRL[0]=1),等到外設(shè)的從機(jī)選擇觸發(fā)輸入和串行時(shí)鐘輸入,以開始SPI接口的數(shù)據(jù)傳輸。
f.等到SPI中斷發(fā)生,或檢測(cè)GO_BUSY位直到被硬件自動(dòng)清0。
g.從寄存器SPI_RX0[7:0]讀出所接收到的一個(gè)字節(jié)的數(shù)據(jù)。
h.重復(fù)步驟c,繼續(xù)其他數(shù)據(jù)的傳輸,或設(shè)置SSR[0]為0以停止外設(shè)。
17.I2S 控制器
I2S控制器由IIS協(xié)議與外部音頻CODEC組成,兩個(gè)8字的FIFO分別用于讀與寫通道,可以處理8~32位字大小。DMA控制器處理數(shù)據(jù)在FIFO與內(nèi)存之間傳輸,兩個(gè)DMA請(qǐng)求,一個(gè)用于發(fā)送,一個(gè)用于接收。
I2S 可工作于8位主機(jī)或從機(jī),支持單聲道和立體聲的音頻數(shù)據(jù).支持I2S和MSB 校驗(yàn)數(shù)據(jù)格式.當(dāng)緩沖超過可編程邊界時(shí),產(chǎn)生中斷請(qǐng)求.
18.PS2設(shè)備控制器(PS2D)
PS/2 設(shè)備控制器為 PS/2通訊提供基本時(shí)序控制。在設(shè)備和主機(jī)之間的通訊CLK 和 DATA pins控制. 不同于 PS/2 鍵盤和鼠標(biāo)設(shè)備控制器, 接收/傳輸代碼需要固件進(jìn)行代碼轉(zhuǎn)換成有意義的代碼。主機(jī)發(fā)送到設(shè)備的數(shù)據(jù)是在上升沿讀取,設(shè)備發(fā)送到主機(jī)的數(shù)據(jù)在上升沿之后被改變??删幊?~16 位傳輸緩沖 以減少CPU 干擾。支持雙數(shù)據(jù)緩沖功能。
PS/2 設(shè)備具有 雙向雙向同步串行協(xié)議,當(dāng)總線為 "Idle" 模式并且兩條線都為高 (open-collector),該狀態(tài)為設(shè)備允許開始 DATA 傳輸?shù)奈ㄒ粭l件。主機(jī)在總線上有最終的控制權(quán) ,比呢且任何時(shí)候都可以通過下拉CLK line禁止通訊。設(shè)備始終產(chǎn)生CLK信號(hào),如果主機(jī)需要發(fā)送 DATA, 下拉CLK line 為低,禁止從設(shè)備進(jìn)行通訊。主機(jī)隨后將DATA拉低并且釋放CLK,這是"Request-to-Send" 狀態(tài),通知設(shè)備開始發(fā)送CLK脈沖。所有數(shù)據(jù)每次傳輸1字節(jié),每字節(jié)包括11-12位:1 開始位(一直為 0);8 數(shù)據(jù)位(先最低位);1 奇偶位(odd parity);1 停止位(一直為1);1 應(yīng)答位(主機(jī)~設(shè)備通訊)。
設(shè)備向主機(jī)傳輸,設(shè)備應(yīng)用于連續(xù)的 11-位 架構(gòu):1 個(gè)開始位(始終為 0);8 數(shù)據(jù)位(最高位最先傳輸);1奇偶位(odd parity);1停止位(一直為1)。
主機(jī)向設(shè)備傳輸:首先,PS/2 設(shè)備一直產(chǎn)生 CLK 信號(hào),如果主機(jī)希望發(fā)送DATA, 首先需設(shè)定CLK 和 DATA在 "Request-to-send" 狀態(tài):拉低CLK 至少100 us 禁止通訊;應(yīng)用 "Request-to-send" 拉 DATA 為低, 釋放CLK。設(shè)備在不超過10 ms時(shí)間內(nèi)需不間斷的監(jiān)控狀態(tài),當(dāng)設(shè)備監(jiān)控到此狀態(tài),將開始產(chǎn)生CLK 信號(hào)和8位DATA位 1 位停止位。當(dāng)CLK line為低時(shí),主機(jī)改變DATA line,當(dāng)CLK為高時(shí)設(shè)備讀數(shù)據(jù)。停止位接收后,設(shè)備發(fā)出應(yīng)答信號(hào),使DATA line 為低 并且產(chǎn)生CLK 脈沖。
寫PS2TXDATA0 寄存器將觸發(fā)設(shè)備和主機(jī)通訊,在向TX FIFO傳輸數(shù)據(jù)前,S/w 需定義TXFIFO 長(zhǎng)度。寫PS2TXDATA0 寄存器后100us,第一個(gè)字節(jié)的start bit 才會(huì)被傳送到總線上。
19.局域控制網(wǎng)絡(luò)總線(CAN Bus)
區(qū)域控制器 (CAN) 為串行通訊協(xié)議 具有多主機(jī)(multi-master) 和高效率實(shí)時(shí)控制功能,安全性能高 成本低,應(yīng)用于高速網(wǎng)絡(luò),在汽車電子, 車身控制, 傳感器, 防滑系統(tǒng)等。CAN 連接速度可達(dá) 1Mbit/s。CAN 2.0B 協(xié)議兼容。
總線上信息發(fā)送為固定模式.當(dāng)總線空閑時(shí), 任何的連接單元可進(jìn)行數(shù)據(jù)傳遞.
信息傳遞受 4 種不同結(jié)構(gòu)類型控制:
1. A DATA FRAME 數(shù)據(jù)從傳輸?shù)浇邮盏倪\(yùn)輸.
2. A REMOTE DATA FRAME 通過總線單元向傳輸DATA FRAME IDENTIFIER發(fā)送請(qǐng)求.
3. An ERROR FRAME 傳輸通過 任何單元偵測(cè)總線 error.
4. An OVERLOAD FRAME 應(yīng)用于提供額外延時(shí) 在當(dāng)前和隨后 DATA 或 REMOTE FRAMES 之間.
評(píng)論