第4章a 基于S3C2410的硬件結(jié)構(gòu)與接口編程_第1頁(yè)
第4章a 基于S3C2410的硬件結(jié)構(gòu)與接口編程_第2頁(yè)
第4章a 基于S3C2410的硬件結(jié)構(gòu)與接口編程_第3頁(yè)
第4章a 基于S3C2410的硬件結(jié)構(gòu)與接口編程_第4頁(yè)
第4章a 基于S3C2410的硬件結(jié)構(gòu)與接口編程_第5頁(yè)
已閱讀5頁(yè),還剩163頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于S3C2410的硬件結(jié)構(gòu)與接口編程基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X集成的主要片上功能包括以下內(nèi)容:●1.8VARM920T內(nèi)核,1.8V/2.5V/3.3V存儲(chǔ)系統(tǒng),帶有3.3V16KB指令和16KB數(shù)據(jù)緩存及MMU單元的外部O接口的微處理器;●外部存儲(chǔ)器控制(SDRAM控制和芯片選擇邏輯);●LCD控制器(支持4K顏色的STN或256K色TFT的LCD),帶有1個(gè)通道的LCD專用DMA控制器;●4通道DMA,具有外部請(qǐng)求引腳;●3通道UART(支持IrDA1.0,16字節(jié)發(fā)送FIFO及16字節(jié)接收FIFO)和2通道SPI接口;●1個(gè)通道多主IIC總線控制器和1通道IIS總線控制器;●1.0版本SD主機(jī)接口及2.11版本兼容的MMC卡協(xié)議;●2個(gè)主機(jī)接口的USB口和1個(gè)設(shè)備USB口(1.1版本);

S3C2410X集成的主要片上功能

基于S3C2410的硬件結(jié)構(gòu)與接口編程●4通道PWM定時(shí)器和1通道內(nèi)部計(jì)時(shí)器;●看門狗定時(shí)器;●117位通用目的I/O口和24通道外部中斷源;●電源控制:正常、慢速、空閑及電源關(guān)閉模式;●帶觸摸屏接口的8通道10位ADC;●帶日歷功能的實(shí)時(shí)時(shí)鐘控制器;●具有PLL的片上時(shí)鐘發(fā)生器。S3C2410X的結(jié)構(gòu)框圖如圖4-1所示。

S3C2410X集成的主要片上功能基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X集成的主要片上功能基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X集成的主要片上功能基于S3C2410的硬件結(jié)構(gòu)與接口編程1.體系結(jié)構(gòu)●集成了手持設(shè)備和通用嵌入式系統(tǒng)的解決方案;●32/16位結(jié)構(gòu)體系和ARM920TCPU核的強(qiáng)大指令體系;

●增強(qiáng)的ARMMMU體系結(jié)構(gòu)支持WinCE、EPOC32和Linux操作系統(tǒng);

●指令緩存、數(shù)據(jù)緩存、寫緩沖器和RAM物理地址標(biāo)簽減少了主存儲(chǔ)器帶寬和潛在性能的影響;●ARM920TCPU核支持ARM調(diào)試體系結(jié)構(gòu);

●內(nèi)置的高級(jí)微控制總線體系結(jié)構(gòu)(AMBA)(AMBA2.0,AHB/APB);

S3C2410X的特點(diǎn)

基于S3C2410的硬件結(jié)構(gòu)與接口編程2.系統(tǒng)管理器●支持小/大端模式;

●尋址空間:每個(gè)bank128MB(總共1GB);●支持每個(gè)bank可編程的8/16/32位數(shù)據(jù)總線寬度;●bank0到bank6具有固定的bank起始地址;●bank7具有可編程的bank起始地址和bank大??;●共有8個(gè)存儲(chǔ)器bank:6個(gè)存儲(chǔ)器bank用于ROM、SRAM,其他2個(gè)存儲(chǔ)器bank用于ROM、SRAM、同步DRAM;●所有的存儲(chǔ)器bank具有可編程的操作周期;

●支持外部等待信號(hào)延長(zhǎng)總線周期;

●支持掉電時(shí)的SDRAM自刷新模式;

●支持多種類型的引導(dǎo)ROM(NOR/NANDFlash,EEPROM及其他)。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程3.NANDFlash引導(dǎo)裝載器●支持從NANDFlash存儲(chǔ)器引導(dǎo);

●4KB內(nèi)置緩沖存儲(chǔ)器用于引導(dǎo);

●支持引導(dǎo)后從NANDFlash存儲(chǔ)器向內(nèi)存加載。4.緩沖存儲(chǔ)器

●帶有指令緩存(16KB)和數(shù)據(jù)緩存(16KB)的聯(lián)合緩存;●每行8字長(zhǎng)度,其中每行帶有1個(gè)有效位和2個(gè)無效位;

●偽隨機(jī)的或循環(huán)移位算法;●采用寫直達(dá)或?qū)懟鼐彺娌僮鱽砀轮鞔鎯?chǔ)器;

●寫緩沖器能夠保存16字的數(shù)據(jù)值和4個(gè)地址值。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程5.時(shí)鐘和電源管理●在片MPLL和UPLL:UPLL時(shí)鐘發(fā)生器用于主/從USB操作,MPLL時(shí)鐘發(fā)生器用于產(chǎn)生MCU的時(shí)鐘。在1.8V時(shí),時(shí)鐘最高頻率為203MHz;

●每一個(gè)功能塊可以用軟件選擇時(shí)鐘;

●電源模式:正常、慢速、空閑和掉電,

正常模式:正常操作模式,

慢速模式:不加PLL的低頻率時(shí)鐘模式,

空閑模式:僅停止CPU的時(shí)鐘,

掉電模式:所有外圍設(shè)備全部掉電僅內(nèi)核電源供電;●可以從掉電模式借助于EINT[15:0]或RTC報(bào)警中斷喚醒過來。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程6.中斷控制●55個(gè)中斷源(1個(gè)看門狗定時(shí)器,5個(gè)定時(shí)器,9個(gè)通用異步串行口,24個(gè)外部中斷,4個(gè)DMA,2個(gè)RTC,2個(gè)USB,1個(gè)LCD和1個(gè)電池故障);

●外部中斷源具有電平/邊沿觸發(fā)模式;

●可編程極性的邊沿觸發(fā)或電平觸發(fā);

●在非常緊急中斷的情況下支持快中斷請(qǐng)求(FIQ)。7.帶脈沖寬度調(diào)制器(PWM)的定時(shí)器

●4通道16位帶PWM的定時(shí)器/1通道16位基于DMA或基于中斷操作的內(nèi)部定時(shí)器;

●可編程的占空比、頻率和極性;●失效區(qū)發(fā)生器;●支持外部時(shí)鐘源。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程8.RTC(實(shí)時(shí)時(shí)鐘)●全部時(shí)鐘特點(diǎn):毫秒,秒,分,時(shí),天,星期,月,年;

●32.768kHz工作頻率;

●具有報(bào)警中斷;●具有定時(shí)中斷。9.通用輸入/輸出口

●24個(gè)外部中斷口;

●多路輸入輸出口。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程10.通用串行異步通信口(UART)●3通道基于DMA或基于中斷操作的UART;

●支持5位、6位、7位或8位串行數(shù)據(jù)發(fā)送/接收(Tx/Rx);●可編程的波特率;●支持IrDA1.0;●具有回環(huán)測(cè)試功能;

●每個(gè)通道有內(nèi)置的16字節(jié)發(fā)送FIFO和16字節(jié)接收FIFO。11.DMA控制器

●4通道DMA控制器;

●支持存儲(chǔ)器到存儲(chǔ)器、IO到存儲(chǔ)器、存儲(chǔ)器到IO和IO到IO傳輸;

●突發(fā)傳輸模式增強(qiáng)了傳輸速率。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程12.帶觸摸屏接口的A/D轉(zhuǎn)換器●8通道多路ADC;●最大500KSPS轉(zhuǎn)換速率10位分辨率。13.LCD控制器STNLCD顯示特性

●支持3種類型的STNLCD顯示屏:4位雙掃描,4位單掃描,8位單掃描顯示

類型;●支持單色模式、4級(jí)灰度、16級(jí)灰度、256色和4096色STNLCD;●支持多種不同尺寸的液晶屏,LCD實(shí)際尺寸的典型值是640×480,320×240,160×160;●最大虛擬屏幕大小是4MB,最大虛屏像素為4MB;●在256色模式下支持的最大虛擬屏是4096×1024,2048×2048,1024×4096。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程14.TFT彩色顯示特性●支持彩色TFT模式1、2、4或8位/像素(bpp)帶調(diào)色板彩色顯示;●支持彩色TFT模式16bpp不帶調(diào)色板真彩色顯示;

●支持24bpp下最大16MB彩色TFT模式;

●支持多種不同尺寸的液晶屏,典型實(shí)屏尺寸為640×480,320×240,160×160;●最大虛擬屏大小4MB;●64K色彩模式下最大的虛擬屏尺寸為2048×1024。15.看門狗定時(shí)器

●16位看門狗定時(shí)器;

●超時(shí)時(shí)發(fā)出中斷請(qǐng)求或系統(tǒng)復(fù)位。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程16.I2C總線接口●1通道多主設(shè)備I2C總線;

●可進(jìn)行串行、8位、雙向數(shù)據(jù)傳輸,標(biāo)準(zhǔn)模式下數(shù)據(jù)傳輸速度可達(dá)100kbit/s,快速模式下可達(dá)到400kbit/s。17.I2S總線接口

●1通道基于DMA的I2S總線用于音頻接口;

●串行,每通道8/16位數(shù)據(jù)傳輸;

●具有128字節(jié)(64字節(jié)+64字節(jié)),F(xiàn)IFO用于發(fā)送/接收;●支持I2S格式和MSB驗(yàn)證數(shù)據(jù)格式。

S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程18.USB主設(shè)備●2個(gè)USB主設(shè)備接口;

●遵守OHCI1.0版;

●兼容USB1.1版本規(guī)范。19.USB從設(shè)備

●1個(gè)USB從設(shè)備接口;

●5端點(diǎn)USB傳輸通道;

●兼容USB1.1版本規(guī)范。

20.SD主接口

●與SD存儲(chǔ)卡協(xié)議1.0版本兼容;●與SDIO卡協(xié)議1.0版本兼容;●具有字節(jié)FIFO用于發(fā)送/接收;●基于DMA或基于中斷模式操作;●與多媒體卡2.11版本兼容。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程21.SPI接口●與2通道串行外部接口2.11版本協(xié)議兼容;●2個(gè)8位移位寄存器,用于發(fā)送/接收;

●基于DMA或基于中斷模式操作。

22.工作電壓范圍

●內(nèi)核1.8V;

●存儲(chǔ)器:2.5V/3.3V;

●輸入/輸出口:3.3V。

23.工作頻率

●最大203MHz。24.封裝●272-FBGA。S3C2410X的特點(diǎn)基于S3C2410的硬件結(jié)構(gòu)與接口編程

S3C2410X的存儲(chǔ)器控制器

S3C2410X的存儲(chǔ)器控制器提供訪問外部存儲(chǔ)器所需要的存儲(chǔ)器控制信號(hào),S3C2410X的存儲(chǔ)器控制器有以下的特性:●小/大端(通過軟件選擇);●地址空間:每bank有128MB(8banks,總共1GB);●除bank0(只能是16/32位寬)之外,其他bank都具有可編程的訪問大?。梢允?/16/32位寬);●總共8個(gè)存儲(chǔ)器bank,其中6個(gè)是ROM、SRAM等類型存儲(chǔ)器bank,剩下的2個(gè)可以作為ROM、SRAM、SDRAM等存儲(chǔ)器bank;●7個(gè)固定的存儲(chǔ)器bank的起始地址;●最后一個(gè)bank的起始地址是可調(diào)整的;最后兩個(gè)bank的大小是可編程的;●所有存bank的訪問周期都是可編程的;總線訪問周期可以通過插入外部等待來延長(zhǎng);●支持SDRAM的自刷新和掉電模式?;赟3C2410的硬件結(jié)構(gòu)與接口編程N(yùn)ANDFlash控制器NORFlash存儲(chǔ)器的價(jià)格比較昂貴,而SDRAM和NANDFlash存儲(chǔ)器的價(jià)格相對(duì)來說比較合適,這樣就激發(fā)了一些用戶產(chǎn)生希望從NANDFlash啟動(dòng)和引導(dǎo)系統(tǒng),而在SDRAM上執(zhí)行主程序代碼的想法。S3C2410X恰好滿足這一要求,它可以實(shí)現(xiàn)從NANDFlash上執(zhí)行引導(dǎo)程序。為了支持NANDFlash的系統(tǒng)引導(dǎo),S3C2410X具備了一個(gè)內(nèi)部SRAM緩沖器,叫做“Steppingstone”。當(dāng)系統(tǒng)啟動(dòng)時(shí),NANDFlash存儲(chǔ)器的前面4KB將被自動(dòng)載入到Steppingstone中,然后系統(tǒng)自動(dòng)執(zhí)行這些載入的引導(dǎo)代碼。一般情況下,這4KB的引導(dǎo)代碼需要將NANDFlash中的程序內(nèi)容復(fù)制到SDRAM中,在引導(dǎo)代碼執(zhí)行完畢后跳轉(zhuǎn)到SDRAM執(zhí)行。使用S3C2410X內(nèi)部硬件ECC功能可以對(duì)NANDFlash的數(shù)據(jù)進(jìn)行有效性地檢測(cè)?;赟3C2410的硬件結(jié)構(gòu)與接口編程N(yùn)ANDFlash控制器的功能特性NANDFlash控制器的功能特性如下?!馧ANDFlash模式:支持讀/擦/編程N(yùn)ANDFlash存儲(chǔ)器;●自動(dòng)導(dǎo)入模式:復(fù)位后,引導(dǎo)代碼被送入Steppingstone,傳送后,引導(dǎo)代碼在Steppingstone中執(zhí)行;●具備硬件ECC產(chǎn)生模塊(硬件產(chǎn)生,軟件糾正);●4KB內(nèi)部SRAM緩沖器Steppingstone,在NANDFlash引導(dǎo)后可以作為其他用途使用;●NANDFlash控制器不能通過DMA訪問,使用LDM/STM指令來代替DMA操作。基于S3C2410的硬件結(jié)構(gòu)與接口編程自動(dòng)導(dǎo)入模式的步驟如下。①完成復(fù)位。②如果自動(dòng)導(dǎo)入模式使能,NANDFlash存儲(chǔ)器的前面4KB被自動(dòng)復(fù)制到Steppingston內(nèi)部緩沖器中。③Steppingstone被映射到nGCS0。④CPU在Steppingstone的4KB內(nèi)部緩沖器中開始執(zhí)行引導(dǎo)代碼。注意:在自動(dòng)導(dǎo)入模式下,不進(jìn)行ECC檢測(cè)。因此,NANDFlash的前4KB應(yīng)確保不能有位錯(cuò)誤(一般NANDFlash廠家都確保)。

自動(dòng)導(dǎo)入模式

基于S3C2410的硬件結(jié)構(gòu)與接口編程3.NANDFlash模式配置①通過NFCONF寄存器配置NANDFlash。②寫NANDFlash命令到NFCMD寄存器。③寫NANDFlash地址到NFADDR寄存器。④在讀/寫數(shù)據(jù)時(shí),通過NFSTAT寄存器來獲得NANDFlash的狀態(tài)信息。應(yīng)該在讀操作前或?qū)懭胫髾z查R/nB信號(hào)(準(zhǔn)備好/忙信號(hào))。NANDFlash模式配置基于S3C2410的硬件結(jié)構(gòu)與接口編程

NANDFlash存儲(chǔ)器時(shí)序

基于S3C2410的硬件結(jié)構(gòu)與接口編程D[7:0]:數(shù)據(jù)/命令/地址/的輸入/輸出口(與數(shù)據(jù)總線共享);CLE:命令鎖存使能(輸出);ALE:地址鎖存使能(輸出);nFCE:NANDFlash片選使能(輸出);nFRE:NANDFlash讀使能(輸出);nFWE:NANDFlash寫使能(輸出);R/nB:NANDFlash準(zhǔn)備好/繁忙(輸入)。管腳配置基于S3C2410的硬件結(jié)構(gòu)與接口編程①OM[1:0]=00b:使能NANDFlash控制器自動(dòng)導(dǎo)入模式。②NANDFlash的存儲(chǔ)頁(yè)面大小應(yīng)該為512B。③NCON:NANDFlash尋址步數(shù)選擇,0為3步尋址,1為4步尋址。S3C2410X在寫/讀操作時(shí),自動(dòng)生成512B的奇偶代碼。每512B數(shù)據(jù)產(chǎn)生3B的ECC奇偶代碼。24位ECC奇偶代碼

=

18位行奇偶+6位列奇偶ECC產(chǎn)生模塊執(zhí)行以下步驟。①當(dāng)MCU寫數(shù)據(jù)到NAND時(shí),ECC產(chǎn)生模塊生成ECC代碼。②當(dāng)MCU從NAND讀數(shù)據(jù)時(shí),ECC產(chǎn)生模塊生成ECC代碼,同時(shí)用戶程序?qū)⑺c先前寫入時(shí)產(chǎn)生的ECC代碼比較。表4-2所示為512BECC奇偶代碼分配情況。系統(tǒng)引導(dǎo)和NANDFlash配置基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X有各種針對(duì)不同任務(wù)提供的最佳電源管理策略,電源管理模塊能夠使系統(tǒng)工作在如下4種模式:正常模式、低速模式、空閑模式和掉電模式。●正常模式:電源管理模塊向CPU和所有外設(shè)提供時(shí)鐘。這種模式下,當(dāng)所有外設(shè)都開啟時(shí),系統(tǒng)功耗將達(dá)到最大。用戶可以通過軟件控制各種外設(shè)的開關(guān)。例如,如果不需要定時(shí)器,用戶可以將定時(shí)器時(shí)鐘斷開以降低功耗?!竦退倌J剑簺]有PLL的模式。與正常模式不同,低速模式直接使用外部時(shí)鐘(XTIpll或者EXTCLK)作為FCLK,這種模式下,功耗僅由外部時(shí)鐘決定?!窨臻e模式:電源管理模塊僅關(guān)掉FCLK,而繼續(xù)提供時(shí)鐘給其他外設(shè)。空閑模式可以減少由于CPU核心產(chǎn)生的功耗。任何中斷請(qǐng)求都可以將CPU從中斷模式喚醒?!竦綦娔J剑弘娫垂芾砟K斷開內(nèi)部電源,因此,CPU和除喚醒邏輯單元以外的外設(shè)都不會(huì)產(chǎn)生功耗。要執(zhí)行掉電模式需要有兩個(gè)獨(dú)立的電源,其中一個(gè)給喚醒邏輯單元供電,另一個(gè)給包括CPU在內(nèi)的其他模塊供電。在掉電模式下,第2個(gè)電源將被關(guān)掉。掉電模式可以由外部中斷EINT[15:0]或RTC喚醒。時(shí)鐘和電源管理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X支持位于系統(tǒng)總線和外設(shè)總線之間的4個(gè)通道的DMA控制器。每一個(gè)通道的DMA控制器都能沒有約束地實(shí)現(xiàn)系統(tǒng)總線或者外設(shè)總線之間的數(shù)據(jù)傳輸,即每個(gè)通道都能處理以下4種情況:●源器件和目的器件都在系統(tǒng)總線;●源器件在系統(tǒng)總線,目的器件在外設(shè)總線;●源器件在外設(shè)總線,目的器件在系統(tǒng)總線;●源器件和目的器件都在外設(shè)總線。DMA的主要優(yōu)點(diǎn)是:可以不通過CPU的干預(yù)來實(shí)現(xiàn)數(shù)據(jù)的傳輸,DMA的運(yùn)行可以通過軟件、內(nèi)部外設(shè)或外部請(qǐng)求引腳信號(hào)的請(qǐng)求來初始化。DMA基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA請(qǐng)求源基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA使用三態(tài)FSM(有限狀態(tài)機(jī))進(jìn)行操作,以下用3個(gè)步驟描述。狀態(tài)1:初始狀態(tài),DMA等待DMA請(qǐng)求。若請(qǐng)求到達(dá),進(jìn)入狀態(tài)2。此階段,DMAACK和INTREQ都為0。狀態(tài)2:在此狀態(tài),DMAACK變?yōu)?,計(jì)數(shù)器的值(CURR_TC)從DCON[19:0]寄存器加載。注意:DMAACK仍然為1,直到它隨后被清0。狀態(tài)3:在此狀態(tài),對(duì)DMA進(jìn)行原子操作的子FSM(子狀態(tài)機(jī))被初始化。子FSM從源地址讀取數(shù)據(jù),然后將數(shù)據(jù)寫入目的地址。在此操作中,要考慮數(shù)據(jù)大小和傳輸?shù)某叽纾╯ingleorburst)。在Wholeservice模式下這種操作重復(fù)進(jìn)行直到計(jì)數(shù)器(CURR_TC)變?yōu)?,然而在Singleservice模式中只進(jìn)行一次。當(dāng)子FSM完成每一個(gè)原子操作,mainFSM(主狀態(tài)機(jī))對(duì)CURR_TC減計(jì)數(shù)。此外,當(dāng)CURR_TC變?yōu)?并且中斷設(shè)置位DCON[29]為1時(shí),mainFSM(主狀態(tài)機(jī))發(fā)出中斷請(qǐng)求信號(hào)(INTREQ)。DMA工作過程基于S3C2410的硬件結(jié)構(gòu)與接口編程另外,如果以下條件之一滿足,mainFSM(主狀態(tài)機(jī))清除DMAACK信號(hào)。①在Wholeservice模式下CURR_TC變?yōu)?。②在Singleservice模式下原子操作完成。注意:在Singleservice模式下,主FSM(主狀態(tài)機(jī))的3個(gè)狀態(tài)執(zhí)行然后停止,再等待另外的DMAREQ。如果DMAREQ到來,就重復(fù)進(jìn)行這樣的3個(gè)狀態(tài)。因此,每一次原子傳輸?shù)倪^程中DMAACK總是先有效然后再無效。相反,在整體服務(wù)模式下,主FSM一直在狀態(tài)3等待,直到CURR_TC變?yōu)?。所以DMAACK在整個(gè)傳輸過程中有效,然后當(dāng)TC為0時(shí)無效。然而,只要CURR_TC變?yōu)?,中斷請(qǐng)求信號(hào)(INTREQ)總是被發(fā)出而與服務(wù)模式無關(guān)(單個(gè)服務(wù)模式或是整體服務(wù)模式)。有3種外部DMA請(qǐng)求/響應(yīng)協(xié)議(單個(gè)服務(wù)請(qǐng)求、單個(gè)服務(wù)握手和整體服務(wù)握手模式)。每種類型都定義了像DMA請(qǐng)求和DMA響應(yīng)這些信號(hào)是怎樣與這些規(guī)則相聯(lián)系的。DMA工作過程基于S3C2410的硬件結(jié)構(gòu)與接口編程基本的DMA時(shí)序基于S3C2410的硬件結(jié)構(gòu)與接口編程在所有模式下,XnXDREQ和XnXDACK信號(hào)的建立時(shí)間和延遲時(shí)間都相同。如果XnXDREQ信號(hào)的建立時(shí)間滿足要求,則在兩個(gè)周期內(nèi)實(shí)現(xiàn)同步,然后XnXDACK信號(hào)有效。在XnXDACK信號(hào)有效后,DMA請(qǐng)求總線。如果DMA得到總線就開始執(zhí)行DMA操作。當(dāng)DMA操作完成后,XnXDACK信號(hào)無效。請(qǐng)求和握手模式與XnXDREQ和XnXDACK之間的協(xié)議相關(guān)。在一次傳輸?shù)淖詈螅⊿ingle或Burst傳輸),DMA檢測(cè)XnXDREQ信號(hào)的狀態(tài)。請(qǐng)求模式(DemandMode):如果XnXDREQ信號(hào)仍然有效,則馬上開始下一次的傳輸。否則等待XnXDREQ信號(hào)有效。握手模式(HandshakeMode):如果XnXDREQ信號(hào)無效,DMA在兩個(gè)周期內(nèi)使XnXDACK信號(hào)無效。否則,一直等待直到XnXDREQ信號(hào)無效為止。只有在XnXDACK信號(hào)無效(高電平)之后,XnXDREQ信號(hào)才能有效(低電平)?;镜腄MA時(shí)序基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA有兩種不同的傳輸尺寸:unit和Burst4。單位(unit)傳輸尺寸:一次讀操作和一次寫操作被執(zhí)行。突發(fā)(Burst4)傳輸尺寸:在Burst4傳輸過程中,4次連續(xù)的讀操作和寫操作被分別執(zhí)行。在傳輸一塊數(shù)據(jù)時(shí)DMA牢牢地占據(jù)總線,這樣,其他的總線主設(shè)備就不能夠得到總線使用權(quán)。DMA傳輸尺寸基于S3C2410的硬件結(jié)構(gòu)與接口編程1.DMA初始源地址寄存器(DISRC)及其位描述(參見表4-4、表4-5)DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程2.DMA初始源控制寄存器(DISRCC)及其位描述(參見表4-6、表4-7)該寄存器用于選擇源數(shù)據(jù)位于系統(tǒng)總線(AHB)上還是位于外設(shè)總線(APB)上,并控制源地址增量方式。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程3.DMA初始目標(biāo)寄存器(DIDST)及其位描述(參見表4-8、表4-9)該寄存器用于存放要傳輸目標(biāo)的起始地址。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程4.DMA初始目標(biāo)控制寄存器(DIDSTC)及其位描述(參見表4-10、表4-11)該寄存器用來選擇目標(biāo)位于系統(tǒng)總線(AHB)上還是位于外設(shè)總線(APB)上,并控制目標(biāo)地址增量方式。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程5.DMA控制寄存器(DCON)及其位描述(參見表4-12、表4-13)DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程6.DMA狀態(tài)寄存器(DSTAT)及其位描述(參見表4-14、表4-15)該寄存器用于保存DMA當(dāng)前狀態(tài)。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程7.DMA當(dāng)前源地址寄存器(DCSRC)及其位描述(參見表4-16、表4-17)該寄存器用于保存DMAn當(dāng)前源地址。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程8.DMA當(dāng)前目標(biāo)地址寄存器(DCDST)及其位描述(參見表4-18、表4-19)該寄存器用于保存DMAn當(dāng)前目標(biāo)地址。DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程9.DMA屏蔽觸發(fā)寄存器(DMASKTRIG)及其位描述(參見表4-20、表4-21)DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程DMA專用寄存器基于S3C2410的硬件結(jié)構(gòu)與接口編程【例4-1】

實(shí)現(xiàn)DMA0方式內(nèi)存到內(nèi)存的復(fù)制動(dòng)作,修改DMA設(shè)置并比較其工作效率。主程序如下:

voidMain(void){/*配置系統(tǒng)時(shí)鐘*/ChangeClockDivider(1,1); //1:2:4ChangeMPllValue(0xa1,0x3,0x1); //FCLK=202.8MHzIsr_Init(); /*中斷初始化*/Port_Init(); /*初始化端口*/Uart_Init(0,115200); /*初始化串口*/Uart_Select(0);PRINTF("\n---DMA操作實(shí)驗(yàn)主程序---\n");PRINTF("\n請(qǐng)將UART0與PC串口進(jìn)行連接,然后啟動(dòng)超級(jí)終端程序(115200,8,N,1)\n");PRINTF("\n開始DMA測(cè)試\n");Test_DMA();PRINTF("\nDMA測(cè)試結(jié)束\n");while(1){}}

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程程序中主要的定義和函數(shù)如下:

/*包含文件*/#include"def.h"#include"2410lib.h"#include"option.h"#include"2410addr.h"#include"interrupt.h"/*函數(shù)聲明*/staticvoidDma0Done()__attribute__((interrupt("IRQ")));voidDMA_M2M(intch,intsrcAddr,intdstAddr,inttc,intdsz,intburst);voidTest_DMA(void);/*DMA特殊功能寄存器*/typedefstructtagDMA{volatileU32DISRC; //0x0DMA初始源寄存器volatileU32DISRCC; //0x4DMA初始源控制寄存器volatileU32DIDST; //0x8DMA初始目的寄存器volatileU32DIDSTC;//0xcDMA初始目的控制寄存器volatileU32DCON; //0x10DMA控制寄存器volatileU32DSTAT; //0x14DMA狀態(tài)寄存器volatileU32DCSRC; //0x18當(dāng)前源寄存器

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程volatileU32DCDST; //0x1c當(dāng)前目的寄存器volatileU32DMASKTRIG; //0x20DMA掩碼觸發(fā)寄存器}DMA;staticvolatileintdmaDone; //DMA復(fù)制完成標(biāo)志

voidIsr_Init(void) //中斷初始化功能{pISR_UNDEF=(unsigned)HaltUndef;pISR_SWI=(unsigned)HaltSwi;pISR_PABORT=(unsigned)HaltPabort;pISR_DABORT=(unsigned)HaltDabort;rINTMOD=0x0; //全部IRQ模式DMA編程實(shí)例基于S3C2410的硬件結(jié)構(gòu)與接口編程rINTMSK=BIT_ALLMSK; //屏蔽全部中斷rINTSUBMSK=BIT_SUB_ALLMSK; //屏蔽全部子中斷}voidIrq_Request(intirq_no,void*irq_routine) //注冊(cè)中斷處理函數(shù){if(irq_no>=IRQ_MIN&&irq_no<=IRQ_MAX)*(unsignedint*)((irq_no-1)*sizeof(unsignedint)+(unsignedint)(_ISR_STARTADDRESS+0x20))=(unsignedint)irq_routine;}voidIrq_Enable(intirq_no) //開中斷{if(irq_no>=IRQ_MIN&&irq_no<=IRQ_MAX)rINTMSK&=~(1<<(irq_no-1));DMA編程實(shí)例}voidIrq_Disable(intirq_no) //關(guān)中斷{if(irq_no>=IRQ_MIN&&irq_no<=IRQ_MAX)rINTMSK|=(1<<(irq_no-1));}voidIrq_Clear(intirq_no) //清除中斷{rSRCPND=(1<<(irq_no-1)); /*清除RTC中斷 */rINTPND=(1<<(irq_no-1));rINTPND;}voidTest_DMA(void) //DMA方式內(nèi)存復(fù)制測(cè)試{DMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x80000,0,0);

//byte,singleDMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x20000,2,0);

//word,singleDMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x20000,0,1);

//byte,b

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程urstDMA_M2M(0,_NONCACHE_STARTADDRESS,_NONCACHE_STARTADDRESS+0x800000,0x8000,2,1);//word,burst}

/********************************************************************//Functionname

:DMA_M2M//Description:DMA方式內(nèi)存復(fù)制//Returntype:void//Argument:intch:DMA通道0-DMA0//Argument:intsrcAddr:源地址//Argument:intdstAddr:目的地址//Argument:inttc:初始傳輸計(jì)數(shù)值//Argument:intdsz:傳輸數(shù)據(jù)寬度0~1字節(jié)1~2字節(jié)2~3字節(jié)//Argument:intburst:自動(dòng)傳輸?shù)膫鬏攲挾?-單元傳輸(1個(gè)字節(jié))1-突發(fā)模式傳輸(4個(gè)字節(jié))*********************************************************************/voidDMA_M2M(intch,intsrcAddr,intdstAddr,inttc,intdsz,intburst)

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程{inti,time;volatileU32memSum0=0,memSum1=0;DMA*pDMA;intlength;length=tc*(burst?4:1)*((dsz==0)+(dsz==1)*2+(dsz==2)*4);PRINTF("[DMA%dMEM2MEMTest]\n",ch);Irq_Request(IRQ_DMA0,Dma0Done); //注冊(cè)IRQ_DMA0中斷處理函數(shù)Irq_Enable(IRQ_DMA0);` //打開IRQ_DMA0中斷pDMA=(void*)0x4b000000;PRINTF("DMA%d%8xh->%8xh,size=%xh(tc=%xh),dsz=%d,burst=%d\n",ch,srcAddr,dstAddr,length,tc,dsz,burst);PRINTF("Initializethesrc.\n");

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程for(i=srcAddr;i<(srcAddr+length);i+=4) //計(jì)算源數(shù)據(jù)校驗(yàn)和{*((U32*)i)=i^0x55aa5aa5;memSum0+=i^0x55aa5aa5;}PRINTF("DMA%dstart\n",ch);dmaDone=0;pDMA->DISRC=srcAddr; //DMA原地址pDMA->DISRCC=(0<<1)|(0<<0); //原地址=AHB,傳送后原地址增加pDMA->DIDST=dstAddr; //DMA目的地址pDMA->DIDSTC=(0<<1)|(0<<0); //目的地址=AHB,傳送后目的地址增加pDMA->DCON=tc|(1<<31)|(1<<30)|(1<<29)|(burst<<28)|(1<<27)|\(0<<23)|(1<<22)|(dsz<<20)|(tc);DMA編程實(shí)例//握手模式,同步模式1,DREQ和DACK與AHB同步,當(dāng)計(jì)數(shù)器到達(dá)0時(shí)使能中斷//自動(dòng)傳輸?shù)膫鬏攲挾萣urst,整體服務(wù)模式,軟件請(qǐng)求模式觸發(fā),不重新加載//傳輸數(shù)據(jù)寬度dsz,初始傳輸計(jì)數(shù)值tcpDMA->DMASKTRIG=(1<<1)|1; //DMA開,軟件請(qǐng)求模式觸發(fā)Timer_Start(3); //開始計(jì)時(shí),128s分辨率

while(dmaDone==0); //等待DMA完成time=Timer_Stop(); //停止計(jì)時(shí)PRINTF("DMAtransferdone.time=%f,%fMB/S\n",(float)time/ONESEC3,length/((float)time/ONESEC3)/1000000.);//輸出DMA傳輸時(shí)間Irq_Disable(IRQ_DMA0); //IRQ_DMA0關(guān)中斷for(i=dstAddr;i<dstAddr+length;i+=4) //計(jì)算校驗(yàn)和

DMA編程實(shí)例

基于S3C2410的硬件結(jié)構(gòu)與接口編程{memSum1+=*((U32*)i)=i^0x55aa5aa5;}PRINTF("memSum0=%x,memSum1=%x\n",memSum0,memSum1);if(memSum0==memSum1) //比較校驗(yàn)和PRINTF("DMAtestresult---------------------O.K.\n");elsePRINTF("DMAtestresult---------------------ERROR!!!\n");}staticvoidDma0Done(void) //中斷處理函數(shù){Irq_Clear(IRQ_DMA0);dmaDone=1;}DMA編程實(shí)例S3C2410X有117個(gè)多功能的輸入/輸出引腳,這些端口是:●端口A(GPA):23個(gè)輸出口;●端口B(GPB):11個(gè)輸入輸出口;●端口C(GPC):16個(gè)輸入輸出口;●端口D(GPD):16個(gè)輸入輸出口;●端口E(GPE):16個(gè)輸入輸出口;●端口F(GPF):8個(gè)輸入輸出口;●端口G(GPG):16個(gè)輸入輸出口;●端口H(GPH):11個(gè)輸入輸出口。每個(gè)端口可以根據(jù)系統(tǒng)配置和設(shè)計(jì)需求通過軟件配置成相應(yīng)的功能。在啟動(dòng)主程序之前,必須定義好每個(gè)引腳的功能。如果某個(gè)引腳不用作復(fù)用功能,則可以將它配置成I/O腳。S3C2410X的I/O口配置如表4-22所示。S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程在S3C2410X中,大部分端口都是復(fù)用的,因此需要決定每個(gè)引腳使用哪個(gè)功能。配置這些端口,要通過設(shè)置一系列寄存器來實(shí)現(xiàn)。與I/O端口配置相關(guān)的寄存器包括端口配置寄存器、端口數(shù)據(jù)寄存器、端口上拉電阻寄存器、外部中斷控制寄存器、雜項(xiàng)控制寄存器等。端口控制寄存器(GPnCON):決定每個(gè)引腳的功能。如果GPF0~GPF7和GPG0~GPG7用于掉電模式的喚醒信號(hào),這些端口必須被配置成中斷模式。端口數(shù)據(jù)寄存器(GPADAT-GPHDAT):如果端口被配置成輸出端口,可以向GPnDAT中的相關(guān)位寫入數(shù)據(jù);如果端口被配置成輸入端口,可以從GPnDAT中的相關(guān)位讀入數(shù)據(jù)。端口上拉電阻寄存器(GPBUP-GPHUP):端口上拉電阻寄存器控制每個(gè)端口組的上拉電阻的使能和禁止。當(dāng)相關(guān)位為0,上拉電阻使能;當(dāng)相關(guān)位為1,上拉電阻禁止;當(dāng)端口上拉電阻寄存器使能時(shí),不管引腳選擇什么功能(輸入、輸出、數(shù)據(jù)、外部中斷等),上拉電阻都工作。外部中斷控制寄存器(EXTINTN):24個(gè)外部中斷可響應(yīng)各種信號(hào)請(qǐng)求方式。EXTINTn寄存器可以配置如下信號(hào)請(qǐng)求方式:低電平觸發(fā)、高電平觸發(fā)、上升沿觸發(fā)、下降沿觸發(fā)、雙邊沿觸發(fā)。雜項(xiàng)控制寄存器(MISCCR):用于控制數(shù)據(jù)端口上的上拉電阻、高阻狀態(tài)、USBPad和CLKOUT的選擇。S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程15.通用狀態(tài)寄存器及引腳配置(參見表4-38)S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410XI/O端口的工作機(jī)制基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X端口的編程實(shí)例基于S3C2410的硬件結(jié)構(gòu)與接口編程圖4-7

LED的硬件連接【例4-2】

利用GPF4-7控制4個(gè)發(fā)光二極管的亮滅。參考程序如下:

#include"2410addr.h"#include"2410lib.h"voidmain(void){inti;rGPFCON=0x5500; //設(shè)置GPF4~GPF7為輸出rGPFUP=0xf0; //禁止GPF4~GPF7端口的上拉電阻rGPFDAT=0; //GPF4~GPF7輸出0,使LED亮for(i=0;i<100000;i++); //延時(shí)rGPFDAT=0xF0; //GPF4~GPF7輸出1,使LED滅for(i=0;i<100000;i++); //延時(shí)}S3C2410X端口的編程實(shí)例基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X有5個(gè)16位定時(shí)器。其中定時(shí)器0、1、2、3有脈寬調(diào)制(PWM)功能。定時(shí)器4只有一個(gè)內(nèi)部定時(shí)器而沒有輸出管腳。定時(shí)器0有一個(gè)死區(qū)發(fā)生器,用于大電流器件。有2個(gè)8位預(yù)標(biāo)定器和2個(gè)4位分頻器。定時(shí)器0和1共享一個(gè)8位預(yù)定標(biāo)器,定時(shí)器2、3和4共享另一個(gè)8位預(yù)定標(biāo)器。每一個(gè)定時(shí)器有一個(gè)有5種不同值的分頻器(1/2,1/4,1/8,1/16和TCLK)。其中每一個(gè)定時(shí)器塊從分頻器接收時(shí)鐘信號(hào),而分頻器從相應(yīng)的預(yù)定標(biāo)器接收時(shí)鐘信號(hào)。S3C2410X定時(shí)器概述基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器主要特性如下:●5個(gè)16位定時(shí)器;●2個(gè)8位預(yù)定標(biāo)器和2個(gè)4位分割器;●可編程的占空比;●自動(dòng)再裝入模式或一次脈沖模式;●死區(qū)發(fā)生器。S3C2410X定時(shí)器概述基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器概述基于S3C2410的硬件結(jié)構(gòu)與接口編程系統(tǒng)為每個(gè)定時(shí)器設(shè)置有預(yù)定標(biāo)器、分頻器來產(chǎn)生定時(shí)時(shí)鐘。每個(gè)定時(shí)器由減法計(jì)數(shù)器、初值寄存器、比較寄存器、觀察寄存器、控制邏輯等部分構(gòu)成。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程1.預(yù)定標(biāo)器和分頻器一個(gè)8位預(yù)定標(biāo)器和一個(gè)4位分頻器作用下的輸出頻率參見表4-39中定時(shí)器最大、最小輸出周期。8位預(yù)定標(biāo)器是可編程的,它根據(jù)TCFG0和TCFG1中的數(shù)值分割PCLK。設(shè)PCLK的頻率為50MHz,經(jīng)過預(yù)標(biāo)定和分頻器后,計(jì)算送給定時(shí)器的計(jì)數(shù)時(shí)鐘頻率。計(jì)數(shù)時(shí)鐘和輸出計(jì)算:(1)定時(shí)器輸入時(shí)鐘頻率fTclk(即計(jì)數(shù)時(shí)鐘頻率) fTclk=[fpclk/(Prescaler+1)]

×

分頻值

式中:Prescaler為預(yù)標(biāo)定值,其值為0~255;分頻值為1/2、1/4、1/8、1/16。

(2)PWM輸出時(shí)鐘頻率 PWM輸出時(shí)鐘頻率

=

fTclk/TCNTBn (3)PWM輸出信號(hào)占空比(即高電平持續(xù)時(shí)間所占信號(hào)周期的比例) PWM輸出信號(hào)占空比

=

TCMPBn/TCNTBn

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程2.定時(shí)器基本操作一個(gè)定時(shí)器(定時(shí)器4除外)都包含TCNTBn、TCNTn、TCMPBn和TCMPn幾個(gè)寄存器。在定時(shí)器計(jì)數(shù)緩沖寄存器(TCNTBn)中有一個(gè)初始值,當(dāng)定時(shí)器使能后,這個(gè)值就被裝載到遞減計(jì)數(shù)器中。而在定時(shí)器比較緩沖寄存器(TCMPBn)中也有一個(gè)初始值,這一值被裝載到比較寄存器中,用來與遞減計(jì)數(shù)器的值進(jìn)行比較。這兩個(gè)緩沖器使得在頻率和占空比發(fā)生改變時(shí)仍能產(chǎn)生一個(gè)穩(wěn)定的輸出。當(dāng)TCNTn到0且中斷使能時(shí),定時(shí)器將產(chǎn)生一個(gè)中斷請(qǐng)求。自動(dòng)加載和雙緩沖模式脈寬調(diào)制定時(shí)器有一個(gè)雙緩沖功能,在這種情況下,改變下次加載值的同時(shí)不影響當(dāng)前定時(shí)周期。因此,盡管設(shè)置一個(gè)新的定時(shí)器值,當(dāng)前定時(shí)器的操作將會(huì)繼續(xù)完成而不受影響。定時(shí)器的值可以寫入定時(shí)器計(jì)數(shù)值緩沖寄存器(TCNTBn)中,而當(dāng)前計(jì)數(shù)器的值可以通過讀定時(shí)器計(jì)數(shù)值觀測(cè)寄存器(TCNTOn)得到。當(dāng)TCNTn的值到0時(shí),自動(dòng)加載操作復(fù)制TCNTBn的值到TCNTn中。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程3.用手動(dòng)更新位和逆變器位對(duì)定時(shí)器進(jìn)行初始化當(dāng)遞減計(jì)數(shù)器的值到0時(shí),自動(dòng)加載操作才能進(jìn)行。所以,用戶必須預(yù)先對(duì)TCNTn定義一個(gè)起始值。因此,起始值必須由手動(dòng)更新位載入。以下步驟描述了怎么起始一個(gè)定時(shí)器。①將初始值寫入到TCNTBn和TCMPBn中。②設(shè)置相應(yīng)定時(shí)器的手動(dòng)更新位。推薦配置逆變器位開或關(guān)(不管逆變器用與否)。③設(shè)置相應(yīng)定時(shí)器的起始位從而啟動(dòng)一個(gè)定時(shí)器(同時(shí)清除手動(dòng)更新位)。④如果定時(shí)器被迫停止,TCNTn將保留計(jì)數(shù)器的值且不重載TCNTBn。如果用戶需要設(shè)置一個(gè)新值,必須執(zhí)行手動(dòng)更新。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程4.定時(shí)器操作步驟以上操作步驟的結(jié)果如圖4-10所示。圖4-10定時(shí)器操作示意圖

①使能自動(dòng)加載功能。設(shè)置TCNTBn為160,TCMPBn

為110。設(shè)置手動(dòng)更新位并配置逆變器位。手動(dòng)更新位設(shè)置TCNTn

TCMPn

的值與

TCNTBn

和TCMPBn

相同。然后設(shè)置

TCNTBn

和TCMPBn的值分別為80和40,確定下一個(gè)周期的值。②如果手動(dòng)更新位為0、逆變器關(guān)且自動(dòng)加載開,則設(shè)置起始位,在定時(shí)器的延遲時(shí)間后定時(shí)器開始遞減計(jì)數(shù)。③當(dāng)TCNTn的值和TCMPn相等時(shí),則TOUTn的邏輯電平將發(fā)生改變,由低到高。④當(dāng)TCNTn的值到0時(shí),產(chǎn)生一個(gè)中斷并且將TCNTBn的值加載到一個(gè)臨時(shí)寄存器。在下一個(gè)時(shí)鐘周期,TCNTn由臨時(shí)寄存器加載到TCNTn中。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程⑤在中斷服務(wù)程序中,TCNTBn和TCMPBn分別設(shè)置成80和60。⑥當(dāng)TCNTn的值和TCMPn相等時(shí),則TOUTn的邏輯電平將發(fā)生改變,由低到高。⑦當(dāng)TCNTn到0時(shí),TCNTn自動(dòng)重新加載,并出發(fā)一個(gè)中斷請(qǐng)求。⑧在中斷服務(wù)子程序,自動(dòng)加載和中斷請(qǐng)求都被禁止,從而將停止定時(shí)器。⑨當(dāng)TCNTn的值和TCMPn相等時(shí),則TOUTn的邏輯電平將發(fā)生改變,由低到高。

當(dāng)TCNTn的值為0時(shí),TCNTn將不再重新加載新的值,從而定時(shí)器停止。

由于中斷請(qǐng)求被禁止,不再產(chǎn)生中斷請(qǐng)求。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程5.脈寬調(diào)制脈寬調(diào)制功能可以通過改變TCMPBn的值實(shí)現(xiàn)。寄存器TCMPBn的作用是:當(dāng)計(jì)數(shù)器TCNTn中的值減到與TCMPBn的值相同時(shí),TOUT的輸出值取反。PWM的頻率由TCNTBn決定,改變TCMPB的值,便改變了輸出方波的占空比。

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程6.輸出電平控制以下步驟描述了如何在逆變器關(guān)閉的情況下,控制TOUTn的值為高或低。①關(guān)閉自動(dòng)加載位,TOUTn的值變高且在TCNTn為0后定時(shí)器停止運(yùn)行。②通過定時(shí)器開始位清零來停止定時(shí)器運(yùn)行。如果TCNTn<=TCMPn,輸出為高;如果TCNTn>TCMPn,輸出為低。③通過改變TCON中的逆變器開關(guān)位來使TOUTn為高或?yàn)榈汀?/p>

S3C2410X定時(shí)器的工作原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程7.死區(qū)發(fā)生器死區(qū)是一小段時(shí)間間隔,在這個(gè)時(shí)間間隔內(nèi),禁止兩個(gè)開關(guān)同時(shí)處于開啟狀態(tài),即使是一段非常短的時(shí)間內(nèi)。死區(qū)是在功率設(shè)備控制中常采用的一種技術(shù),防止兩個(gè)開關(guān)同時(shí)打開起反作用。S3C2410X的Timer0具有死區(qū)發(fā)生器功能,可用于控制大功率設(shè)備。TOUT0是一個(gè)PWM輸出,nTOUT0是TOUT0的反相。如果死區(qū)使能,則TOUT0和nTOUT0的輸出波形將是TOUT0_DZ和nTOUT0_DZ。nTOUT0_DZ由TOUT1腳輸出。在死區(qū)間隔,TOUT0_DZ和nTOUT0_DZ將不會(huì)同時(shí)開啟。

S3C2410X定時(shí)器的工作原理

8.DMA請(qǐng)求模式PWM定時(shí)器能在任何時(shí)間產(chǎn)生一個(gè)DMA請(qǐng)求。定時(shí)器保持DMA請(qǐng)求信號(hào)(nDMA_REQ)為低直到定時(shí)器接收到ACK信號(hào)。當(dāng)定時(shí)器接收到ACK信號(hào)時(shí),定時(shí)器將使請(qǐng)求信號(hào)無效。產(chǎn)生DMA請(qǐng)求的定時(shí)器由設(shè)置DMA模式位(TCFG1)決定。如果一個(gè)定時(shí)器配置成DMA請(qǐng)求模式,則此定時(shí)器將不能產(chǎn)生中斷請(qǐng)求,而其他定時(shí)器將正常產(chǎn)生中斷請(qǐng)求。S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程9.定時(shí)器專用寄存器定時(shí)器專用寄存器共有6種、17個(gè)寄存器,如表4-41所示。S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程其中:TCNTBn為Timern計(jì)數(shù)初值寄存器(計(jì)數(shù)緩沖寄存器,16位);TCMPBn為Timern比較寄存器(比較緩沖寄存器,16位);TCNTOn為Timern計(jì)數(shù)讀出寄存器(16位)。(1)定時(shí)器配置寄存器0(TCFG0)及其位描述(參見表4-42和表4-43)定時(shí)器的輸入頻率

=

PCLK/(預(yù)標(biāo)定器+1)/分頻器;預(yù)標(biāo)定器的值:0~255;分頻器:2,4,8,16。S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程S3C2410X定時(shí)器的工作原理基于S3C2410的硬件結(jié)構(gòu)與接口編程晶體管的導(dǎo)通時(shí)間也被稱為導(dǎo)通角,若改變調(diào)制晶體管的開關(guān)時(shí)間,也就是說通過改變導(dǎo)通角的大?。ㄒ妶D4-13),來改變加在負(fù)載上的平均電壓的大小,以實(shí)現(xiàn)對(duì)電動(dòng)機(jī)的變速控制,稱為脈寬調(diào)制(PWM)變速控制。在PWM變速控制中,系統(tǒng)采用直流電源,放大器的頻率是固定的,變速控制通過調(diào)節(jié)脈寬來實(shí)現(xiàn)。構(gòu)成PWM的功率轉(zhuǎn)換電路或者采用“H”橋式驅(qū)動(dòng),或者采用“T”式驅(qū)動(dòng)。由于“T”式電路要求雙電源供電,而且功率晶體管承受的反向電壓為電源電壓的兩倍。因此,只適用于小功率低電壓的電動(dòng)機(jī)系統(tǒng)。而“H”橋式驅(qū)動(dòng)電路只需一個(gè)電源,功率晶體管的耐壓相對(duì)要求也低些,所以應(yīng)用得較廣泛,尤其用在耐高壓的電動(dòng)機(jī)系統(tǒng)中。

直流電動(dòng)機(jī)的PWM電路原理

基于S3C2410的硬件結(jié)構(gòu)與接口編程對(duì)于開發(fā)板中的直流電動(dòng)機(jī)的驅(qū)動(dòng),由于S3C2410X芯片自帶PWM定時(shí)器,所以控制部分省去了三角波產(chǎn)生電路、脈沖調(diào)制電路和PWM信號(hào)延遲及信號(hào)分配電路,取而代之的是S3C2410X芯片的定時(shí)器0、1組成的雙極性PWM發(fā)生器。PWM發(fā)生器用到的寄存器主要有以下幾個(gè)。(1)TCFG0,參考:Deadzonelength=0;prescalervalue=2。(2)TCFG1。時(shí)鐘輸入頻率=PCLK/(prescalervalue+1)/(dividervalue)。prescalervalue由TCFG0決定;dividervalue由TCFG1決定。參考:無DMA模式,dividervalue=2。本系統(tǒng)中PCLK=50.7MHz。

(3)TCON。參考:deadzoneoperationenable;Inverteroff。(4)TCNTB0&TCMPB0。TCNTB0決定了脈沖的頻率,TCMPB0決定了正脈沖的寬度。當(dāng)TCMPB0=TCNTB0/2時(shí),正負(fù)脈沖寬度相同;當(dāng)TCMPB0由0變到TCNTB0時(shí),負(fù)脈沖寬度不斷增加。參考:脈沖頻率為1Hz。

開發(fā)平臺(tái)中直流電動(dòng)機(jī)驅(qū)動(dòng)的實(shí)現(xiàn)

基于S3C2410的硬件結(jié)構(gòu)與接口編程【例4-3】PWM直流電動(dòng)機(jī)驅(qū)動(dòng)程序。主要程序參考代碼如下:

//主程序intmain(void){inti,j,ADData,lastADData,count=0;ARMTargetInit(); //開發(fā)版初始化init_MotorPort();init_ADdevice();Uart_Printf(0,"\nBegincontrolDCmotor.\t\tPressanykeytostopDCmotor.\n");for(;;){參考程序基于S3C2410的硬件結(jié)構(gòu)與接口編程

for(i=0;i<2;i++)ADData=GetADresult(0); //取采樣值Uart_Printf(0,"addata=%d",ADData);hudelay(10);SetPWM((ADData-512)*MOTOR_CONT/1024);hudelay(10);if((rUTRSTAT0&0x1)) //有輸入,則跳出{*Revdata=RdURXH0();break;}}SetPWM(0);hudelay(10);return0;}

參考程序基于S3C2410的硬件結(jié)構(gòu)與接口編程基于S3C2410的硬件結(jié)構(gòu)與接口編程主要的定義和函數(shù)如下:

#include"../inc/drivers.h"#include"../inc/lib.h"#include<string.h>#include<stdio.h>#include"inc/max504.h"#include"inc/MotorCtrl.h"#include"inc/EXIO.h"#pragmaimport(__use_no_semihosting_swi)#definePCLK(50700000)#defineMOTOR_SEVER_FRE1000 //20kHz參考程序基于S3C2410的硬件結(jié)構(gòu)與接口編程#defineMOTOR_CONT(PCLK/2/2/MOTOR_SEVER_FRE)#defineMOTOR_MID(MOTOR_CONT/2)#definerTCFG0(*(volatileunsigned*)0x51000000)#definerTCFG1(*(volatileunsigned*)0x51000004)#definerTCNTB0(*(volatileunsigned*)0x5100000C)#definerTCMPB0(*(volatileunsigned*)0x51000010)#definerTCON(*(volatileunsigned*)0x51000008)#definerGPBCON(*(volatileunsigned*)0x56000010)#definerGPBUP(*(volatileunsigned*)0x56000018)#definerGPBDAT(*(volatileunsigned*)0x56000014)參考程序#defineADCCON_FLAG(0x1<<15)#defineADCCON_ENABLE_START_BYREAD(0x1<<1)#definerADCCON(*(volatileunsigned*)0x58000000)#definerADCDAT0(*(volatileunsigned*)0x5800000C)#definerUTRSTAT0(*(volatileunsigned*)0x50000010)#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)#definePRSCVL(49<<6)#defineADCCON_ENABLE_START(0x1)#defineSTDBM(0x0<<2)#definePRSCEN(0x1<<14)

voidinit_ADdevice(){ //初始化rADCCON=(PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN);}

參考程序基于S3C2410的硬件結(jié)構(gòu)與接口編程voidinit_MotorPort(){rGPBCON=rGPBCON&0x3ffff0|0xa;//DeadZone=24,PreScalero1=2;rTCFG0=(0<<16)|2;//dividertimer0=1/2;rTCFG1=0;rTCNTB0=MOTOR_CONT;rTCMPB0=MOTOR_MID;rTCON=0x2; //updatemodeforTCNTB0andTCMPB0.rTCON=0x19; //timer0=autoreload,start.DeadZone}

voidSetPWM(intvalue){rTCMPB0=MOTOR_MID+value;}

intGetADresult(intchannel)參考程序基于S3C2410的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論