第4章a 基于S3C2410的硬件結構與接口編程_第1頁
第4章a 基于S3C2410的硬件結構與接口編程_第2頁
第4章a 基于S3C2410的硬件結構與接口編程_第3頁
第4章a 基于S3C2410的硬件結構與接口編程_第4頁
第4章a 基于S3C2410的硬件結構與接口編程_第5頁
已閱讀5頁,還剩163頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

S3C2410X集成的主要片上功能

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

S3C2410X集成的主要片上功能基于S3C2410的硬件結構與接口編程S3C2410X集成的主要片上功能基于S3C2410的硬件結構與接口編程S3C2410X集成的主要片上功能基于S3C2410的硬件結構與接口編程1.體系結構●集成了手持設備和通用嵌入式系統的解決方案;●32/16位結構體系和ARM920TCPU核的強大指令體系;

●增強的ARMMMU體系結構支持WinCE、EPOC32和Linux操作系統;

●指令緩存、數據緩存、寫緩沖器和RAM物理地址標簽減少了主存儲器帶寬和潛在性能的影響;●ARM920TCPU核支持ARM調試體系結構;

●內置的高級微控制總線體系結構(AMBA)(AMBA2.0,AHB/APB);

S3C2410X的特點

基于S3C2410的硬件結構與接口編程2.系統管理器●支持小/大端模式;

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

●支持外部等待信號延長總線周期;

●支持掉電時的SDRAM自刷新模式;

●支持多種類型的引導ROM(NOR/NANDFlash,EEPROM及其他)。S3C2410X的特點基于S3C2410的硬件結構與接口編程3.NANDFlash引導裝載器●支持從NANDFlash存儲器引導;

●4KB內置緩沖存儲器用于引導;

●支持引導后從NANDFlash存儲器向內存加載。4.緩沖存儲器

●帶有指令緩存(16KB)和數據緩存(16KB)的聯合緩存;●每行8字長度,其中每行帶有1個有效位和2個無效位;

●偽隨機的或循環移位算法;●采用寫直達或寫回緩存操作來更新主存儲器;

●寫緩沖器能夠保存16字的數據值和4個地址值。S3C2410X的特點基于S3C2410的硬件結構與接口編程5.時鐘和電源管理●在片MPLL和UPLL:UPLL時鐘發生器用于主/從USB操作,MPLL時鐘發生器用于產生MCU的時鐘。在1.8V時,時鐘最高頻率為203MHz;

●每一個功能塊可以用軟件選擇時鐘;

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

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

慢速模式:不加PLL的低頻率時鐘模式,

空閑模式:僅停止CPU的時鐘,

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

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

●可編程極性的邊沿觸發或電平觸發;

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

●4通道16位帶PWM的定時器/1通道16位基于DMA或基于中斷操作的內部定時器;

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

●32.768kHz工作頻率;

●具有報警中斷;●具有定時中斷。9.通用輸入/輸出口

●24個外部中斷口;

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

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

●每個通道有內置的16字節發送FIFO和16字節接收FIFO。11.DMA控制器

●4通道DMA控制器;

●支持存儲器到存儲器、IO到存儲器、存儲器到IO和IO到IO傳輸;

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

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

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

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

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

●16位看門狗定時器;

●超時時發出中斷請求或系統復位。S3C2410X的特點基于S3C2410的硬件結構與接口編程16.I2C總線接口●1通道多主設備I2C總線;

●可進行串行、8位、雙向數據傳輸,標準模式下數據傳輸速度可達100kbit/s,快速模式下可達到400kbit/s。17.I2S總線接口

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

●串行,每通道8/16位數據傳輸;

●具有128字節(64字節+64字節),FIFO用于發送/接收;●支持I2S格式和MSB驗證數據格式。

S3C2410X的特點基于S3C2410的硬件結構與接口編程18.USB主設備●2個USB主設備接口;

●遵守OHCI1.0版;

●兼容USB1.1版本規范。19.USB從設備

●1個USB從設備接口;

●5端點USB傳輸通道;

●兼容USB1.1版本規范。

20.SD主接口

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

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

22.工作電壓范圍

●內核1.8V;

●存儲器:2.5V/3.3V;

●輸入/輸出口:3.3V。

23.工作頻率

●最大203MHz。24.封裝●272-FBGA。S3C2410X的特點基于S3C2410的硬件結構與接口編程

S3C2410X的存儲器控制器

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

自動導入模式

基于S3C2410的硬件結構與接口編程3.NANDFlash模式配置①通過NFCONF寄存器配置NANDFlash。②寫NANDFlash命令到NFCMD寄存器。③寫NANDFlash地址到NFADDR寄存器。④在讀/寫數據時,通過NFSTAT寄存器來獲得NANDFlash的狀態信息。應該在讀操作前或寫入之后檢查R/nB信號(準備好/忙信號)。NANDFlash模式配置基于S3C2410的硬件結構與接口編程

NANDFlash存儲器時序

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

=

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

實現DMA0方式內存到內存的復制動作,修改DMA設置并比較其工作效率。主程序如下:

voidMain(void){/*配置系統時鐘*/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操作實驗主程序---\n");PRINTF("\n請將UART0與PC串口進行連接,然后啟動超級終端程序(115200,8,N,1)\n");PRINTF("\n開始DMA測試\n");Test_DMA();PRINTF("\nDMA測試結束\n");while(1){}}

DMA編程實例

基于S3C2410的硬件結構與接口編程程序中主要的定義和函數如下:

/*包含文件*/#include"def.h"#include"2410lib.h"#include"option.h"#include"2410addr.h"#include"interrupt.h"/*函數聲明*/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狀態寄存器volatileU32DCSRC; //0x18當前源寄存器

DMA編程實例

基于S3C2410的硬件結構與接口編程volatileU32DCDST; //0x1c當前目的寄存器volatileU32DMASKTRIG; //0x20DMA掩碼觸發寄存器}DMA;staticvolatileintdmaDone; //DMA復制完成標志

voidIsr_Init(void) //中斷初始化功能{pISR_UNDEF=(unsigned)HaltUndef;pISR_SWI=(unsigned)HaltSwi;pISR_PABORT=(unsigned)HaltPabort;pISR_DABORT=(unsigned)HaltDabort;rINTMOD=0x0; //全部IRQ模式DMA編程實例基于S3C2410的硬件結構與接口編程rINTMSK=BIT_ALLMSK; //屏蔽全部中斷rINTSUBMSK=BIT_SUB_ALLMSK; //屏蔽全部子中斷}voidIrq_Request(intirq_no,void*irq_routine) //注冊中斷處理函數{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編程實例}voidIrq_Disable(intirq_no) //關中斷{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方式內存復制測試{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編程實例

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

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

:DMA_M2M//Description:DMA方式內存復制//Returntype:void//Argument:intch:DMA通道0-DMA0//Argument:intsrcAddr:源地址//Argument:intdstAddr:目的地址//Argument:inttc:初始傳輸計數值//Argument:intdsz:傳輸數據寬度0~1字節1~2字節2~3字節//Argument:intburst:自動傳輸的傳輸寬度0-單元傳輸(1個字節)1-突發模式傳輸(4個字節)*********************************************************************/voidDMA_M2M(intch,intsrcAddr,intdstAddr,inttc,intdsz,intburst)

DMA編程實例

基于S3C2410的硬件結構與接口編程{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); //注冊IRQ_DMA0中斷處理函數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編程實例

基于S3C2410的硬件結構與接口編程for(i=srcAddr;i<(srcAddr+length);i+=4) //計算源數據校驗和{*((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編程實例//握手模式,同步模式1,DREQ和DACK與AHB同步,當計數器到達0時使能中斷//自動傳輸的傳輸寬度burst,整體服務模式,軟件請求模式觸發,不重新加載//傳輸數據寬度dsz,初始傳輸計數值tcpDMA->DMASKTRIG=(1<<1)|1; //DMA開,軟件請求模式觸發Timer_Start(3); //開始計時,128s分辨率

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

DMA編程實例

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

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

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

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

S3C2410X定時器的工作原理

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

×

分頻值

式中:Prescaler為預標定值,其值為0~255;分頻值為1/2、1/4、1/8、1/16。

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

=

fTclk/TCNTBn (3)PWM輸出信號占空比(即高電平持續時間所占信號周期的比例) PWM輸出信號占空比

=

TCMPBn/TCNTBn

S3C2410X定時器的工作原理

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

S3C2410X定時器的工作原理

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

S3C2410X定時器的工作原理

基于S3C2410的硬件結構與接口編程4.定時器操作步驟以上操作步驟的結果如圖4-10所示。圖4-10定時器操作示意圖

①使能自動加載功能。設置TCNTBn為160,TCMPBn

為110。設置手動更新位并配置逆變器位。手動更新位設置TCNTn

TCMPn

的值與

TCNTBn

和TCMPBn

相同。然后設置

TCNTBn

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

S3C2410X定時器的工作原理

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

當TCNTn的值為0時,TCNTn將不再重新加載新的值,從而定時器停止。

由于中斷請求被禁止,不再產生中斷請求。

S3C2410X定時器的工作原理

基于S3C2410的硬件結構與接口編程5.脈寬調制脈寬調制功能可以通過改變TCMPBn的值實現。寄存器TCMPBn的作用是:當計數器TCNTn中的值減到與TCMPBn的值相同時,TOUT的輸出值取反。PWM的頻率由TCNTBn決定,改變TCMPB的值,便改變了輸出方波的占空比。

S3C2410X定時器的工作原理

基于S3C2410的硬件結構與接口編程6.輸出電平控制以下步驟描述了如何在逆變器關閉的情況下,控制TOUTn的值為高或低。①關閉自動加載位,TOUTn的值變高且在TCNTn為0后定時器停止運行。②通過定時器開始位清零來停止定時器運行。如果TCNTn<=TCMPn,輸出為高;如果TCNTn>TCMPn,輸出為低。③通過改變TCON中的逆變器開關位來使TOUTn為高或為低。

S3C2410X定時器的工作原理

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

S3C2410X定時器的工作原理

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

=

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

直流電動機的PWM電路原理

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

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

開發平臺中直流電動機驅動的實現

基于S3C2410的硬件結構與接口編程【例4-3】PWM直流電動機驅動程序。主要程序參考代碼如下:

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

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的硬件結構與接口編程基于S3C2410的硬件結構與接口編程主要的定義和函數如下:

#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的硬件結構與接口編程#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的硬件結構與接口編程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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論