第6章 時鐘與定時器_第1頁
第6章 時鐘與定時器_第2頁
第6章 時鐘與定時器_第3頁
第6章 時鐘與定時器_第4頁
第6章 時鐘與定時器_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、主要內(nèi)容S3C2410簡介簡介 I/O口口系統(tǒng)時鐘與定時器系統(tǒng)時鐘與定時器中斷中斷A/D接口接口UART觸摸屏觸摸屏LCDUSB設備的數(shù)據(jù)收發(fā)設備的數(shù)據(jù)收發(fā)音頻錄放音頻錄放鍵盤和鍵盤和LED控制控制第6章 系統(tǒng)時鐘與定時器6.1 ARM時鐘體系時鐘體系一、時鐘一、時鐘 S3C2410的時鐘源可以是外接晶振,由內(nèi)部電路產(chǎn)的時鐘源可以是外接晶振,由內(nèi)部電路產(chǎn)生的時鐘源,也可以是外部提供的時鐘源生的時鐘源,也可以是外部提供的時鐘源 選擇:外部引腳選擇:外部引腳OM3.2選擇選擇OM3.2=00 晶振為主時鐘源和晶振為主時鐘源和USB時鐘源時鐘源OM3.2=01 晶振為主時鐘源,外部時鐘為晶振為主時鐘

2、源,外部時鐘為USB時鐘時鐘OM3.2=10 外部時鐘為主時鐘源,晶振為外部時鐘為主時鐘源,晶振為USB時鐘源時鐘源OM3.2=11 外部時鐘為主時鐘源和外部時鐘為主時鐘源和USB時鐘源時鐘源二、芯片內(nèi)部使用的時鐘二、芯片內(nèi)部使用的時鐘 整個整個 芯片使用三個時鐘芯片使用三個時鐘: FCLK=用于用于CPU核核 HCLK=用于用于AHB(Advanced High performance Bus)總線上的設備,如:)總線上的設備,如:CPU,中斷中斷控制器,控制器,DMA等高性能模塊之間的連接等高性能模塊之間的連接 PCLK=用于用于APB (Advanced Peripheral Bus)總

3、)總線上的設備,如線上的設備,如PWM定時器,定時器,ACD,UART等低帶寬等低帶寬設備之間的連接設備之間的連接問題:問題:CPU頻率為多少?晶振頻率是多少?頻率為多少?晶振頻率是多少?回答:回答:2410CPU 核電壓核電壓1.8V 主頻主頻200MHZ 電壓電壓2.0V 主頻主頻266MHZ 實際使用中,為了降低電磁干擾,實際使用中,為了降低電磁干擾,2410外接外接晶振頻率都很低,系統(tǒng)板主頻晶振頻率都很低,系統(tǒng)板主頻12MHZ 需要使用需要使用PLL提高系統(tǒng)時鐘提高系統(tǒng)時鐘三、三、PLL(鎖相環(huán))鎖相環(huán)) 鎖相環(huán)是相位誤差控制系統(tǒng),它由鑒相器(鎖相環(huán)是相位誤差控制系統(tǒng),它由鑒相器(PF

4、D)和壓控振蕩器(和壓控振蕩器(VCO)組成組成 比較輸入信號和壓控振蕩器輸出信號之間的相位差,產(chǎn)生比較輸入信號和壓控振蕩器輸出信號之間的相位差,產(chǎn)生誤差控制電壓調整壓控振蕩器的頻率,達到與輸入信號同頻誤差控制電壓調整壓控振蕩器的頻率,達到與輸入信號同頻的目的。的目的。鎖相環(huán)實際應用:鎖相環(huán)實際應用:采用鎖相環(huán)實現(xiàn)采用鎖相環(huán)實現(xiàn)倍頻倍頻,通過,通過增加乘法器增加乘法器實現(xiàn)信號的倍頻實現(xiàn)信號的倍頻 2410內(nèi)部增加內(nèi)部增加3個乘法器,分別是個乘法器,分別是P,M,S乘法器,對系統(tǒng)時乘法器,對系統(tǒng)時鐘倍頻,產(chǎn)生鎖相環(huán)輸出時鐘鐘倍頻,產(chǎn)生鎖相環(huán)輸出時鐘MPLL,UPLL提供后續(xù)的提供后續(xù)的FCLK,

5、PCLK,HCLK使使用用USB接接口使用口使用Fin:晶振或外部輸入時鐘,本系統(tǒng)為:晶振或外部輸入時鐘,本系統(tǒng)為12MHZ例:例: Fin=12MHZ,設定設定M=161,P=3,S=1,則則Mpll時鐘頻時鐘頻率為多少?率為多少?Mpll =(161+8)*12*1000000/5*2=202.8MHz四、時鐘控制寄存器 2410中對時鐘的控制是通過三個寄存器進行中對時鐘的控制是通過三個寄存器進行管理的管理的 1、LOCKTIME寄存器寄存器 功能:設置功能:設置MPLL啟動時間啟動時間 地址:地址:0 x4c000000 位【位【23:12】用于】用于UPLL 位【位【11:0】用于】用

6、于MPLL 一般使用默認值即可,默認值:一般使用默認值即可,默認值:0 x00FFFFFF啟動時間啟動時間150us2、MPLLCON寄存器(寄存器(Main pll Control) 地址:地址:0 x4c000004 功能:用于設置鎖相環(huán)輸出功能:用于設置鎖相環(huán)輸出MPLL與與Fin的倍頻系數(shù)的倍頻系數(shù) MPLLCON寄存器寄存器 位【位【19:12】值為】值為MDIV 位【位【9:4】值為】值為PDIV 位【位【1:0】值為】值為SDIV例:例: Fin=12MHZ,設定設定M=161,P=3,S=1,則則Mpll時鐘頻率為時鐘頻率為多少?多少?Mpll =(161+8)*12*1000

7、000/5*2=202.8MHz對應程序:對應程序:例:例: #define rMPLLCON (*(volatile unsigned *)0 x4c000004) rMPLLCON=(0 xa112)|(0 x34)|0 x1說明:說明:FCLK時鐘頻率與時鐘頻率與Mpll 時鐘頻率相同時鐘頻率相同3、CLKDIVN 寄存器(寄存器(clock divider control)地址:地址:0 x4c0000014功能:設置功能:設置FCLK,HCLK,PCLK三者的比例三者的比例通常設置通常設置FCLK:HCLK:PCLK=1:2:4位位2:1 表示表示FCLK:HCLK:PCLK=1:4

8、:4 0 保留保留位位1: HCLK的分頻系數(shù)的分頻系數(shù) 0 表示表示HCLK=FCLK 1表示表示HCLK=FCLK/2位位0: PCLK的分頻系數(shù)的分頻系數(shù) 0 表示表示PCLK=HCLK 1 表示表示PCLK=HCLK/2因此因此, CLKDIV寄存器值通常設定為寄存器值通常設定為0X03例:設置分頻比為例:設置分頻比為1:2:4#define rclkdivn (*(volatile unsigned *)0 x40000014);rclkdivn=(11)|1;文件名稱文件名稱 : 2410addr.h;* 文件功能文件功能 : 該文件定義地址寄存器。該文件定義地址寄存器。#defi

9、ne rLOCKTIME (*(volatile unsigned *)0 x4c000000) /PLL lock time counter#define rMPLLCON (*(volatile unsigned *)0 x4c000004) /MPLL Control#define rCLKDIVN (*(volatile unsigned *)0 x4c000014) /Clock divider control文件名稱文件名稱 : 2410lib.c void ChangeClockDivider(int hdivn,int pdivn)rCLKDIVN = (hdivn1) | p

10、divn;if (hdivn) MMU_SetAsyncBusMode();else MMU_SetFastBusMode();void ChangeMPllValue(int mdiv,int pdiv,int sdiv) rMPLLCON = (mdiv12) | (pdiv4) | sdiv;例:對例:對2410進行時鐘管理,設置進行時鐘管理,設置FCLK為為200MHZ,設置設置FCLK:HCLK:PCLK=1:2:4為了設置為了設置FCLK:HCLK:PCLK=1:2:4,在主程序,在主程序TARGET.c中中引用上述函數(shù)引用上述函數(shù)/ File Name : TARGET.cvoi

11、d Target_Init(void)MMU_Init();ChangeMPllValue(0 xa1,0 x3,0 x1); / FCLK=(161+8)*12*1000000/5*2=202.8MHz ChangeClockDivider(1,1); / 1:2:4 PCLK=50MHZ Port_Init(); Isr_Init();Uart_Init(0,115200); Uart_Select(0); 6.2 PWM (Pulse Width Modulation定時器一、定時器簡介一、定時器簡介 1、2410共有共有5個個16位的定時器,其中:位的定時器,其中: 定時器定時器0,1

12、,2,3有有PWM功能,都功能,都有有 一個輸出引腳,分別對應一個輸出引腳,分別對應TOUT3.0 定時器定時器4沒有輸出引腳沒有輸出引腳2、定時器時鐘源、定時器時鐘源 時鐘源:時鐘源:PCLK 說明:說明:PCLK經(jīng)過兩級分頻后,降低頻率經(jīng)過兩級分頻后,降低頻率后作為定時器時鐘。后作為定時器時鐘。說明:說明:PCLKPCLK經(jīng)過兩級分頻后,降低頻率后作為定時器時鐘。經(jīng)過兩級分頻后,降低頻率后作為定時器時鐘。3、定時器內(nèi)部結構及工作過程、定時器內(nèi)部結構及工作過程 5個定時器均為減計數(shù)器個定時器均為減計數(shù)器定時器內(nèi)部結構圖定時器內(nèi)部結構圖工作過程(見內(nèi)部結構圖):工作過程(見內(nèi)部結構圖): 首先

13、設置定時器比較器初始值和計數(shù)器初始首先設置定時器比較器初始值和計數(shù)器初始值,然后啟動定時器,將初始值加載到相應的值,然后啟動定時器,將初始值加載到相應的寄存器中,開始計數(shù),當前的計數(shù)值寄存器中,開始計數(shù),當前的計數(shù)值=比較器比較器初始值時,輸出信號翻轉,計數(shù)器繼續(xù)減計數(shù);初始值時,輸出信號翻轉,計數(shù)器繼續(xù)減計數(shù);計數(shù)值計數(shù)值=0時,輸出信號再翻轉,同時申請中斷。時,輸出信號再翻轉,同時申請中斷。 如設置自動加載,則比較器初始值和計數(shù)初如設置自動加載,則比較器初始值和計數(shù)初始值重新加載,下一輪計數(shù)開始。始值重新加載,下一輪計數(shù)開始。定時時間:分頻后的時鐘周期定時時間:分頻后的時鐘周期*計時器初值

14、計時器初值PWM脈沖占空比:比較器初值脈沖占空比:比較器初值/計數(shù)器初值計數(shù)器初值%二、定時器寄存器二、定時器寄存器1、TCFG0(time configuration) 功能:功能:8位的分頻器,對位的分頻器,對PCLK信號進行第一次分頻信號進行第一次分頻位位7.0控制分頻器控制分頻器0,1,值為,值為0255位位15:8控制分頻器控制分頻器2,3,4,值為,值為0255 分頻輸出時鐘頻率:分頻輸出時鐘頻率:PCLK/分頻值分頻值1+12、TCFG1寄存器寄存器功能:對功能:對PCLK時鐘進行二次分頻時鐘進行二次分頻 將時鐘進行將時鐘進行2分頻,分頻,4分頻,分頻,8分頻,分頻,16分頻,或

15、分頻,或是設置外接時鐘是設置外接時鐘 最后定時器的工作時鐘頻率最后定時器的工作時鐘頻率= PCLK/分頻值分頻值1*(2或或4或或6或或8或或16)寄存器格式:寄存器格式: 每四位對應一個定時器,定時器每四位對應一個定時器,定時器0定時器定時器4 0000=2分頻;分頻; 0001=4分頻;分頻;0010=8分頻分頻0011=16分頻;分頻;01xx=外部時鐘外部時鐘TCLK0,13、TCNTBn 和和TCMPBn(count buffer registerCompare buffer register) n為為04功能:比較器初始值和計數(shù)器初始計數(shù)值,功能:比較器初始值和計數(shù)器初始計數(shù)值,1

16、6位,位, 這兩個值在啟動定時器時,被傳到定時這兩個值在啟動定時器時,被傳到定時器內(nèi)部的寄存器中器內(nèi)部的寄存器中注意:沒有注意:沒有TCMPB4定時時間定時時間=(計數(shù)初值(計數(shù)初值* 預分頻值預分頻值1*(2,4, 8,16)/ PCLK例例1:使用定時器:使用定時器1實現(xiàn)定時實現(xiàn)定時0.5秒,秒, 已知已知PCLK=50MHZ,預置分頻器預置分頻器1值為值為255,預置分頻,預置分頻器器2為為2分頻,則計算計數(shù)初值為多少?并寫出初分頻,則計算計數(shù)初值為多少?并寫出初始化程序始化程序(比較器初值為比較器初值為0)計數(shù)初值計數(shù)初值=(定時時間定時時間*PCLK)/預分頻值預分頻值1*(2,4,

17、 8,16)初值初值=50000000*0.5/256*2=48828TCFG0寄存器值寄存器值=255TCFG1寄存器值寄存器值=xxxx xxxx xxxx xxxx xxxx xxxx 0000 xxxxTCNTB1=48828TCMPB1=0#define rTCFG0 (*(volatile unsigned *)0 x51000000) /Timer 0 configuration#define rTCFG1 (*(volatile unsigned *)0 x51000004) /Timer 1 configuration#define rTCNTB1 (*(volatile u

18、nsigned *)0 x51000018) /Timer count buffer 1#define rTCMPB1 (*(volatile unsigned *)0 x5100001c) /Timer compare buffer 1rTCFG0=255;rTCFG1=04;rTCNTB1=48828;rTCMPB1=0 x00;4、TCON 寄存器(寄存器(time control)功能:控制功能:控制5個定時器的啟動,初值加載和輸出個定時器的啟動,初值加載和輸出位位3:0:控制定時器:控制定時器0位位11:8:控制定時器:控制定時器1位位15:12:控制定時器控制定時器2位位19:16

19、:控制定時器控制定時器3位位22:20:控制定時器控制定時器4以定時器以定時器0為例:為例:位位0:啟動:啟動/停止停止 0:停止定時器:停止定時器0;1:開啟定時器:開啟定時器0位位1:手動更新:手動更新 0:無用;無用;1:將比較初值和計數(shù)初值加:將比較初值和計數(shù)初值加載到內(nèi)部的比較器和計數(shù)器中載到內(nèi)部的比較器和計數(shù)器中位位2:輸出反轉:輸出反轉 0:TOUT0不反轉;不反轉;1:TOUT0反轉反轉位位3:自動加載:自動加載 0:不自動加載;:不自動加載; 1:計數(shù)到:計數(shù)到0時,計數(shù)初值和比較初值時,計數(shù)初值和比較初值自動加載到內(nèi)部的計數(shù)器和比較器中自動加載到內(nèi)部的計數(shù)器和比較器中定時器

20、設置步驟:定時器設置步驟:(1)初值手動加載,定時器不工作)初值手動加載,定時器不工作(2)啟動定時器,同時設定數(shù)據(jù)為自動加載)啟動定時器,同時設定數(shù)據(jù)為自動加載*- 函數(shù)名稱函數(shù)名稱 : void Timer1_init(void)- 函數(shù)說明函數(shù)說明 : 定時器初始化程序定時器初始化程序- 輸入?yún)?shù)輸入?yún)?shù) : 無無- 輸出參數(shù)輸出參數(shù) : 無無*/void Timer1_init(void) rGPGCON = rGPGCON & 0 xfff0ffff | 0 x00050000; /配置配置GPG口為信號輸出口為信號輸出 rGPGDAT = rGPGDAT | 0 x300;

21、 rTCFG0 = 255; / Prescaler0=255 rTCFG1 = 0 4; / rTCNTB1 =48828; / 在在pclk=50MHZ下,下,0.5秒鐘的記數(shù)值秒鐘的記數(shù)值rTCNTB1 = 50000000 / 2 / 256 = 48828; rTCMPB1 = 0 x00; rTCON = (011)|(19)|(08); /禁用定時器禁用定時器1,手動加載,手動加載 rTCON = (111)|(09)|(18); /啟動定時器啟動定時器1,自動裝載,自動裝載 定時器時間到向定時器時間到向CPU申請中斷申請中斷特殊功能寄存器特殊功能寄存器SRCPND(SRCPND

22、(中斷源掛起寄存器)的每一位指中斷源掛起寄存器)的每一位指示中斷源的中斷請求示中斷源的中斷請求1 1 有中斷請求有中斷請求00無中斷請求無中斷請求 SRCPND11SRCPND11位為定時器位為定時器1 1的中斷請求位的中斷請求位 CPUCPU與定時器的數(shù)據(jù)通信方式與定時器的數(shù)據(jù)通信方式(1 1)查詢法)查詢法 查詢中斷源掛起寄存器中的相應位,浪費查詢中斷源掛起寄存器中的相應位,浪費cpucpu資源資源(2 2)中斷法)中斷法 適合與嵌入式系統(tǒng)適合與嵌入式系統(tǒng)例:查詢法設計每隔例:查詢法設計每隔0.5秒,屏幕上顯示字符秒,屏幕上顯示字符#include #include .INCconfig.

23、h“#define rSRCPND (*(volatile unsigned *)0 x4a000000)#define rTCFG0 (*(volatile unsigned *)0 x51000000)#define rTCFG1 (*(volatile unsigned *)0 x51000004) #define rTCNTB1 (*(volatile unsigned *)0 x51000018)#define rTCMPB1 (*(volatile unsigned *)0 x5100001c)void ChangeMPllValue(int mdiv,int pdiv,int s

24、div) rMPLLCON = (mdiv12) | (pdiv4) | sdiv;void ChangeClockDivider(int hdivn,int pdivn) rCLKDIVN = (hdivn1) | pdivn; if(hdivn) MMU_SetAsyncBusMode(); else MMU_SetFastBusMode();void Timer1_init(void) rTCFG0 = 255; rTCFG1 = 0 4; rTCNTB1 =48828; rTCMPB1 = 0 x00; rTCON = (011)|(19)|(08); rTCON = (111)|(0

25、9)|(18);void Main(void)ChangeMPllValue(0 xa1,0 x3,0 x1); / FCLK=202.8MHz ChangeClockDivider(1,1); / 1:2:4 Timer1_init(); Uart_Init(0,115200); Uart_Select(0); while(1) if (rSRCPND&(111) Uart_Printf(n*n ); Uart_Printf( 歡迎使用歡迎使用ADS開發(fā)環(huán)境開發(fā)環(huán)境n); Uart_Printf(n*n ); rSRCPND &=(011);/清除中斷請求位清除中斷請求位文件

26、名稱文件名稱 : 2410addr.h;* 文件功能文件功能 : 該文件定義地址寄存器。該文件定義地址寄存器。/ CLOCK & POWER MANAGEMENT#define rLOCKTIME (*(volatile unsigned *)0 x4c000000) /PLL lock time counter#define rMPLLCON (*(volatile unsigned *)0 x4c000004) /MPLL Control#define rUPLLCON (*(volatile unsigned *)0 x4c000008) /UPLL Control#define

27、 rCLKCON (*(volatile unsigned *)0 x4c00000c) /Clock generator control#define rCLKSLOW (*(volatile unsigned *)0 x4c000010) /Slow clock control#define rCLKDIVN (*(volatile unsigned *)0 x4c000014) /Clock divider control#define rSRCPND (*(volatile unsigned *)0 x4a000000);#define rTCFG0 (*(volatile unsig

28、ned *)0 x51000000) /Timer 0 configuration#define rTCFG1 (*(volatile unsigned *)0 x51000004) /Timer 1 configuration#define rTCNTB1 (*(volatile unsigned *)0 x51000018) /Timer count buffer 1#define rTCMPB1 (*(volatile unsigned *)0 x5100001c) /Timer compare buffer 補充內(nèi)容:補充內(nèi)容: DMADMA技術技術第一節(jié)第一節(jié) DMADMA工作原理工

29、作原理 一、一、CPUCPU與外設數(shù)據(jù)傳輸方式與外設數(shù)據(jù)傳輸方式3 3種種 查詢方式:查詢方式:查詢外設狀態(tài)查詢外設狀態(tài) 中斷方式:中斷方式:CPUCPU控制,可以實時響應中斷源的請求,但處理中斷的時控制,可以實時響應中斷源的請求,但處理中斷的時間,使得中斷響應頻率受限制,不適用于高速數(shù)據(jù)傳輸間,使得中斷響應頻率受限制,不適用于高速數(shù)據(jù)傳輸 DMADMA方式方式:DMADMA控制器控制,適于高速數(shù)據(jù)和批量數(shù)據(jù)傳輸控制器控制,適于高速數(shù)據(jù)和批量數(shù)據(jù)傳輸二、二、DMADMA方式方式 直接存儲器存取(直接存儲器存?。―irect Memory AcessDirect Memory Acess) 是指

30、存儲器與外設在是指存儲器與外設在DMADMA控制器的控制下,直接傳送數(shù)據(jù)而不通過控制器的控制下,直接傳送數(shù)據(jù)而不通過CPUCPU,傳輸速率主要取決于存儲器存取速度。傳輸速率主要取決于存儲器存取速度。DMADMA方式為高速方式為高速I/OI/O設備和存儲器之設備和存儲器之間的批量數(shù)據(jù)交換提供了直接的傳輸通道。間的批量數(shù)據(jù)交換提供了直接的傳輸通道。 三、三、DMA方式的特點方式的特點 使用使用專門的硬件控制器專門的硬件控制器控制內(nèi)存與外設之控制內(nèi)存與外設之間的數(shù)據(jù)交流,無需間的數(shù)據(jù)交流,無需CPU介入。介入。 大大提高了大大提高了CPU的工作效率;還排除了的工作效率;還排除了CPU因并行設備過多而

31、來不及處理以及因速度不匹因并行設備過多而來不及處理以及因速度不匹配而造成數(shù)據(jù)丟失等現(xiàn)象。配而造成數(shù)據(jù)丟失等現(xiàn)象。 第二節(jié)第二節(jié) S3C2410AS3C2410A的的DMADMA控制器控制器 S3C2410AS3C2410A支持支持4 4個通道的個通道的DMADMA控制器:通道控制器:通道0 0,通道,通道1 1,通道,通道2 2,通道通道3 3一、一、DMADMA請求源請求源 2 2種:硬件和軟件請求種:硬件和軟件請求 采用硬件請求模式(采用硬件請求模式(H/W),H/W),每個每個DMADMA通道對應通道對應5 5個個DMADMA請求源請求源 采用軟件請求模式(采用軟件請求模式(S/W),S

32、/W),表無意義表無意義二、二、DMADMA操作過程操作過程 控制器采用有限狀態(tài)機進行操作控制器采用有限狀態(tài)機進行操作 4 4個狀態(tài)個狀態(tài)DMA操作過程示意圖操作過程示意圖三、三、DMA操作寄存器操作寄存器 每個每個DMA通道有通道有9個寄存器,其中個寄存器,其中6個用于控制個用于控制DMA傳輸,傳輸,3個用于監(jiān)控個用于監(jiān)控DMA狀態(tài)。狀態(tài)。DMADMA初始源寄存器(初始源寄存器(DISRCDISRC) DMADMA初始源控制寄存器(初始源控制寄存器(DISRCCDISRCC)DMADMA初始目標地址寄存器(初始目標地址寄存器(DIDSTDIDST) DMADMA初始目標控制寄存器(初始目標控

33、制寄存器(DIDSTCDIDSTC) DMADMA控制寄存器(控制寄存器(DCONDCON) DMADMA狀態(tài)寄存器(狀態(tài)寄存器(DSTATDSTAT) DMADMA當前源寄存器(當前源寄存器(DCSRCDCSRC) DMADMA當前目標寄存器(當前目標寄存器(DCDSTDCDST) DMADMA屏蔽觸發(fā)寄存器(屏蔽觸發(fā)寄存器(DMASKTRIGDMASKTRIG) 寄存器的講解以一個實例為基礎進行講解寄存器的講解以一個實例為基礎進行講解例:實現(xiàn)某一存儲器數(shù)據(jù)與串口數(shù)據(jù)的例:實現(xiàn)某一存儲器數(shù)據(jù)與串口數(shù)據(jù)的DMA數(shù)據(jù)傳數(shù)據(jù)傳送送1、DISRCn(DMA初始源寄存器)初始源寄存器)功能:用于存放要

34、傳輸功能:用于存放要傳輸 的數(shù)據(jù)的起始地址,的數(shù)據(jù)的起始地址, n=0-3寄存器地址:寄存器地址:DISRC0:0 x4B000000DISRC1:0 x4B000040DISRC2:0 x4B000080DISRC3:0 x4B0000c0例:例:ADD.H文件中定義寄存器文件中定義寄存器#define rDISRC0 (*(volatile unsigned *)0 x4b000000) /DMA 0 初始源寄存初始源寄存器器#define SEND_ADDR (volatile unsigned char *) 0 x30200000) Main.中賦值中賦值 /待發(fā)送數(shù)據(jù)的待發(fā)送數(shù)據(jù)的

35、起始地址起始地址 rDISRC0 = (U32)SEND_ADDR; /DMA0 初始化初始化在在ADD.H文件中定義了特殊功能寄存器文件中定義了特殊功能寄存器/DMA#define rDISRC0 (*(volatile unsigned *)0 x4b000000) /DMA 0 Initial source#define rDISRCC0 (*(volatile unsigned *)0 x4b000004) /DMA 0 Initial source control#define rDIDST0 (*(volatile unsigned *)0 x4b000008) /DMA 0 In

36、itial Destination#define rDIDSTC0 (*(volatile unsigned *)0 x4b00000c) /DMA 0 Initial Destination control#define rDCON0 (*(volatile unsigned *)0 x4b000010) /DMA 0 Control#define rDSTAT0 (*(volatile unsigned *)0 x4b000014) /DMA 0 Status#define rDCSRC0 (*(volatile unsigned *)0 x4b000018) /DMA 0 Current

37、 source#define rDCDST0 (*(volatile unsigned *)0 x4b00001c) /DMA 0 Current destination#define rDMASKTRIG0 (*(volatile unsigned *)0 x4b000020) /DMA 0 Mask trigger/ UART#define rULCON0 (*(volatile unsigned *)0 x50000000) /UART 0 Line control#define rUCON0 (*(volatile unsigned *)0 x50000004) /UART 0 Con

38、trol#define UTXH0 (0 x50000020) /Byte_access address by DMA#define URXH0 (0 x50000024)#define UTXH1 (0 x50004020)#define URXH1 (0 x50004024)#define rDISRC2 (*(volatile unsigned *)0 x4b000080) /DMA 2 Initial source#define rDISRCC2 (*(volatile unsigned *)0 x4b000084) /DMA 2 Initial source control#defi

39、ne rDIDST2 (*(volatile unsigned *)0 x4b000088) /DMA 2 Initial Destination#define rDIDSTC2 (*(volatile unsigned *)0 x4b00008c) /DMA 2 Initial Destination control#define rDCON2 (*(volatile unsigned *)0 x4b000090) /DMA 2 Control#define rDSTAT2 (*(volatile unsigned *)0 x4b000094) /DMA 2 Status#define rD

40、CSRC2 (*(volatile unsigned *)0 x4b000098) /DMA 2 Current source#define rDCDST2 (*(volatile unsigned *)0 x4b00009c) /DMA 2 Current destination#define rDMASKTRIG2 (*(volatile unsigned *)0 x4b0000a0) /DMA 2 Mask trigger#define rDISRC3 (*(volatile unsigned *)0 x4b0000c0) /DMA 3 Initial source#define rDI

41、SRCC3 (*(volatile unsigned *)0 x4b0000c4) /DMA 3 Initial source control#define rDIDST3 (*(volatile unsigned *)0 x4b0000c8) /DMA 3 Initial Destination#define rDIDSTC3 (*(volatile unsigned *)0 x4b0000cc) /DMA 3 Initial Destination control#define rDCON3 (*(volatile unsigned *)0 x4b0000d0) /DMA 3 Contro

42、l#define rDSTAT3 (*(volatile unsigned *)0 x4b0000d4) /DMA 3 Status#define rDCSRC3 (*(volatile unsigned *)0 x4b0000d8) /DMA 3 Current source#define rDCDST3 (*(volatile unsigned *)0 x4b0000dc) /DMA 3 Current destination#define rDMASKTRIG3 (*(volatile unsigned *)0 x4b0000e0) /DMA 3 Mask trigger2、DISRCC

43、n(DMA初始源控制寄存器)初始源控制寄存器)功能:控制源數(shù)據(jù)在功能:控制源數(shù)據(jù)在AHB總線上還是總線上還是APB總線上,并控制地址的增總線上,并控制地址的增長方式。長方式。n=0-3總線見總線見P69寄存器地址:寄存器地址:DISRCC0:0X4B000004DISRCC1:0X4B000044DISRCC2:0X4B000084DISRCC3:0X4B0000C4位位【1】: 0-源數(shù)據(jù)在源數(shù)據(jù)在AHB總線上總線上 1-源數(shù)據(jù)在源數(shù)據(jù)在APB總線上(內(nèi)存數(shù)據(jù))總線上(內(nèi)存數(shù)據(jù))位位【0】:0-傳送數(shù)據(jù)后源地址增加傳送數(shù)據(jù)后源地址增加 1-地址固定不變地址固定不變例:ADD.H文件中定義寄存

44、器文件中定義寄存器#define rDISRCC0 (*(volatile unsigned *)0 x4b000004)Main.中賦值中賦值 rDISRCC0 = (01)|(00); /源源=AHB,傳送后地址增加,傳送后地址增加3、DIDSTn(DMA初始目標地址寄存器)初始目標地址寄存器)功能:存放傳輸目標的起始地址,功能:存放傳輸目標的起始地址, n=0-3地址:地址:P88表表例:例: #define rDIDST0 (*(volatile unsigned *)0 x4b000008) rDIDST0 = (U32)UTXH0; /串口發(fā)送串口發(fā)送FIFO緩沖區(qū)地址緩沖區(qū)地址4

45、、DIDSTCn(DMA初始目標控制寄存器)初始目標控制寄存器)功能:控制目標位于功能:控制目標位于AHB總線還是總線還是APB總線,并控制地址增長方式總線,并控制地址增長方式地址:表地址:表5.27位【位【1】:0-源數(shù)據(jù)在源數(shù)據(jù)在AHB總線上總線上 1-源數(shù)據(jù)在源數(shù)據(jù)在APB總線上總線上位【位【0】:0-傳送數(shù)據(jù)后源地址增加傳送數(shù)據(jù)后源地址增加 1-地址固定不變地址固定不變例:例: ADD.H文件中定義寄存器文件中定義寄存器#define rDIDSTC0 (*(volatile unsigned *)0 x4b00000c) Main.中賦值中賦值rDIDSTC0 = (11)|(10)

46、; /目標目標=APB,地址固定,地址固定5、DCONn(DMA控制寄存器)控制寄存器)功能:控制功能:控制0-3通道通道DMA控制器控制器n=0-3地址:地址:p88DCONn各位含義:各位含義:位【位【31】:選擇請求模式或握手模式】:選擇請求模式或握手模式 0請求模式,請求模式,1-握手模式握手模式位【位【30】:選擇同步模式】:選擇同步模式 0-DREQ和和DACK與與APB時鐘同步時鐘同步 1DREQ和和DACK與與AHB時鐘同步時鐘同步位【位【29】:當計數(shù)器到達】:當計數(shù)器到達0時是否使能中斷時是否使能中斷 0禁止中斷;禁止中斷;1-使能中斷使能中斷位【位【28】:選擇服務模式】

47、:選擇服務模式 0單位傳輸單位傳輸 ;1-長度位長度位4的猝發(fā)式傳輸?shù)拟Оl(fā)式傳輸位【位【27】:選擇服務模式】:選擇服務模式 0單個服務模式單個服務模式;1-整體服務模式整體服務模式位【位【26:24】:為各】:為各DMA通道設置通道設置DMA請求源請求源 000:各通道的請求源各通道的請求源0;001:各通道的請求源:各通道的請求源1;010:各通:各通道的請求源道的請求源2;011:各通道的請求源:各通道的請求源3;100:各通道的請求源:各通道的請求源4 例:例:UART0時時DMA0通道的請求源通道的請求源1 因此:因此:程序中設置為程序中設置為001位【位【23】:在】:在DMA軟件

48、請求源和硬件請求源軟件請求源和硬件請求源 之間選擇之間選擇 0-軟件請求源軟件請求源 1-硬件請求源硬件請求源位【位【22】:當前計數(shù)器值等于】:當前計數(shù)器值等于0以后是否重新加載以后是否重新加載 0-自動加載自動加載 1-DMA通道關閉,不重新加載通道關閉,不重新加載位【位【21:20】:傳輸數(shù)據(jù)的大小】:傳輸數(shù)據(jù)的大小 00字節(jié)字節(jié) ; 01-半字;半字;10-字;字; 11-保留保留位【位【19:0】:初始化計數(shù)器,設置計數(shù)器初值】:初始化計數(shù)器,設置計數(shù)器初值例:程序例:程序ADD.H文件中定義寄存器文件中定義寄存器#define rDCON0 (*(volatile unsigned

49、 *)0 x4b000010)Main.中賦值中賦值rDCON0=(031)|(030)|(129)|(028)|(027)|(124)|(123)|(122)|(020)|(50);6、DMASKTRIGn(DMA屏蔽觸發(fā)寄存器)屏蔽觸發(fā)寄存器)功能:功能:DMA通道控制位,通道控制位, n=0-3地址:表地址:表5.33位【位【2】:】:stop位位 1-停止停止DMA通道操作,當前計數(shù)值取通道操作,當前計數(shù)值取0位【位【1】:】:ON-OFF位,位,DAM通道開關位通道開關位 1通道打開通道打開 0-通道關閉,忽略通道關閉,忽略DMA請求請求位【位【0】:】:DMA通道通過軟件請求模式觸

50、發(fā)位通道通過軟件請求模式觸發(fā)位 這個位只有在這個位只有在DMA軟件請求源有效時才使用軟件請求源有效時才使用例:啟動例:啟動DMA0通道存儲器與串口通道存儲器與串口0的數(shù)據(jù)傳輸操作的數(shù)據(jù)傳輸操作 Main.中賦值中賦值rDMASKTRIG0 = (11); /打開打開DMA通道通道07、DSTATn(DMA狀態(tài)寄存器)狀態(tài)寄存器)功能:保存功能:保存DMAn操作的工作狀態(tài),操作的工作狀態(tài), n=0-3地址:地址:8、DCSRC(DMA當前源寄存器)當前源寄存器)功能:保存功能:保存DMAn的當前源地址的當前源地址地址:地址:9、DCDST(DMA當前目標寄存器)當前目標寄存器)功能:保存功能:保

51、存DMAn的當前目標地址的當前目標地址地址:地址:9、串口相關寄存器的設置、串口相關寄存器的設置串口串口0控制寄存器控制寄存器UCON0 功能:選擇功能:選擇UART時鐘,設置時鐘,設置UART中斷方式中斷方式地址:地址:0 x50000004位【位【1:0】:選擇如何從】:選擇如何從UART接受緩沖區(qū)中讀取數(shù)據(jù)接受緩沖區(qū)中讀取數(shù)據(jù) 00-禁止接受數(shù)據(jù)禁止接受數(shù)據(jù) 01-中斷方式或查詢方式中斷方式或查詢方式 10DMA0請求(只能用于請求(只能用于UART0) DMA3請求(只能用于請求(只能用于UART2) 11DMA1請求(只能用于請求(只能用于UART1)位【位【3:2】:選擇如何將數(shù)據(jù)

52、發(fā)送到】:選擇如何將數(shù)據(jù)發(fā)送到UART發(fā)送緩沖區(qū)發(fā)送緩沖區(qū) 00-禁止發(fā)送數(shù)據(jù)禁止發(fā)送數(shù)據(jù) 01-中斷方式或查詢方式中斷方式或查詢方式 10DMA0請求(只能用于請求(只能用于UART0) DMA3請求(只能用于請求(只能用于UART2) 11DMA1請求(只能用于請求(只能用于UART1)例程序中:例程序中:ADD.H#define rUCON0 (*(volatile unsigned *)0 x50000004)Main.CrUCON0=(22)或:或:rUCON0 = rUCON0 & 0 xff3| 0 x8; /Uart設置成設置成DMA形式形式#include #incl

53、ude .INCconfig.h#define SEND_DATA (#define SEND_DATA (* *(volatile unsigned char (volatile unsigned char * *) 0 x30200000) 0 x30200000)#define SEND_ADDR (volatile unsigned char #define SEND_ADDR (volatile unsigned char * *) 0 x30200000) /) 0 x30200000) /待發(fā)送數(shù)據(jù)的起始待發(fā)送數(shù)據(jù)的起始地址地址void Main(void)void Main(v

54、oid)volatile unsigned charvolatile unsigned char* * p = SEND_ADDR p = SEND_ADDR; ;intint i; i;Target_Init();Target_Init();Delay(1000);Delay(1000);SEND_DATA = 0 x41; SEND_DATA = 0 x41; /初始化要發(fā)送的數(shù)據(jù)初始化要發(fā)送的數(shù)據(jù)for (i = 0; i 128; i+)for (i = 0; i 128; i+) * *p+ = 0 x41 + i;p+ = 0 x41 + i; rUCON0 = rUCON0 &a

55、mp; 0 xff3 | 0 x8; rUCON0 = rUCON0 & 0 xff3 | 0 x8; /Uart/Uart設置成設置成DMADMA形式形式 rDISRC0 = (U32)(SEND_ADDR); rDISRC0 = (U32)(SEND_ADDR); /DMA0 /DMA0 初始化初始化 rDISRCC0 = (01)|(00); rDISRCC0 = (01)|(00); /源源=AHB=AHB,傳送后地址增加,傳送后地址增加 rDIDST0 = (U32)UTXH0; rDIDST0 = (U32)UTXH0; /發(fā)送發(fā)送FIFOFIFO緩沖區(qū)地址緩沖區(qū)地址 rD

56、IDSTC0 = (11)|(10); rDIDSTC0 = (11)|(10); /目標目標=APB=APB,地址固定,地址固定 /設置設置DMA0DMA0控制寄存器:握手模式控制寄存器:握手模式, ,與與APBAPB同步同步, ,使能中斷使能中斷, ,單位傳輸單位傳輸, ,單個模式單個模式, ,目標目標=UART0,=UART0, / /硬件請求模式硬件請求模式, ,不自動加載不自動加載, ,半字半字, ,計數(shù)器初值計數(shù)器初值5050 rDCON0=(031)|(030)|(129)|(028)|(027)|(124)|(123)|(122)|(020)|(50);rDCON0=(031)

57、|(030)|(129)|(028)|(027)|(124)|(123)|(122)|(020)|(50); rDMASKTRIG0 = (11); rDMASKTRIG0 = (1調制解調器后連接調制解調器后連接 需要連接串口的各個引腳,串口需要連接串口的各個引腳,串口 完全連接完全連接近距離:串口之間直接連接近距離:串口之間直接連接 常用簡單連接(三線連接),只連接發(fā)送數(shù)據(jù)線,常用簡單連接(三線連接),只連接發(fā)送數(shù)據(jù)線,接收數(shù)據(jù)線,地線接收數(shù)據(jù)線,地線 波特率波特率9600,傳輸距離不超過,傳輸距離不超過15米米簡單連接簡單連接 完全連接完全連接 4 4、UARTUART字符傳輸格式字符傳

58、輸格式 UARTUART以字符為單位進行數(shù)據(jù)傳輸,每個字符的傳輸以字符為單位進行數(shù)據(jù)傳輸,每個字符的傳輸格式如下,一幀數(shù)據(jù)格式如下,一幀數(shù)據(jù): 空閑位:高電平空閑位:高電平起始位:低電平起始位:低電平數(shù)據(jù)位:數(shù)據(jù)位:5-8位位校驗位:可選校驗位:可選停止位:停止位:1或或2位位 8.2 S3C2410A8.2 S3C2410A的的UART UART 一、一、S3C2410UARTS3C2410UART端口簡介端口簡介 1 1、S3C2410提供提供3個獨立的異步串行端口個獨立的異步串行端口UART UART0,UART1,UART2 2 2、每個、每個UARTUART都可以運行于中斷模式或都可

59、以運行于中斷模式或DMADMA模式,發(fā)出模式,發(fā)出中斷請求和中斷請求和DMADMA請求實現(xiàn)在請求實現(xiàn)在UART,CPUUART,CPU間的數(shù)據(jù)傳遞間的數(shù)據(jù)傳遞 3、每個、每個UART由波特率發(fā)生器、發(fā)送器、接收器以及由波特率發(fā)生器、發(fā)送器、接收器以及控制單元組成??刂茊卧M成。 UART數(shù)據(jù)傳輸過程:數(shù)據(jù)傳輸過程: s2410 UART的每個通道都有的每個通道都有16字節(jié)的發(fā)字節(jié)的發(fā)送送FIFO和和16字節(jié)的接收字節(jié)的接收FIFO。 發(fā)送數(shù)據(jù)時,發(fā)送數(shù)據(jù)時,CPU先將數(shù)據(jù)寫入發(fā)送先將數(shù)據(jù)寫入發(fā)送FIFO中,然后中,然后UART會自動將會自動將FIFO中的數(shù)據(jù)復制到中的數(shù)據(jù)復制到“發(fā)送移位器發(fā)送

60、移位器”中,發(fā)送移位器將數(shù)據(jù)一位一中,發(fā)送移位器將數(shù)據(jù)一位一位地發(fā)送到位地發(fā)送到TXDn上。接收數(shù)據(jù)時,上。接收數(shù)據(jù)時,“接收移接收移位器位器”將將RXDn上的數(shù)據(jù)一位一位接收過來,上的數(shù)據(jù)一位一位接收過來,然后復制到接收然后復制到接收FIFO中,中,CPU即可從中讀取即可從中讀取數(shù)據(jù)數(shù)據(jù)。二、二、UART相關操作和模式相關操作和模式 包括數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、中斷產(chǎn)生、波特率產(chǎn)生、回送包括數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、中斷產(chǎn)生、波特率產(chǎn)生、回送模式、紅外模式和自動流控制模式、紅外模式和自動流控制1、數(shù)據(jù)發(fā)送、數(shù)據(jù)發(fā)送 數(shù)據(jù)的格式設置由數(shù)據(jù)的格式設置由ULCONn寄存器指定寄存器指定2、數(shù)據(jù)接收、數(shù)據(jù)接收 數(shù)據(jù)的格式設置由數(shù)據(jù)的格式設置由ULCONn寄存器

溫馨提示

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

評論

0/150

提交評論