S3C44B0 寄存器描述

admin @ 2014-03-25 , reply:0

1產品預覽
介紹
三星的S3C44B0X 16/32位RISC處理器被設計來為手持設備等提供一個低成本高性能的方案。
S3C44B0X 提供以下配置:2.5V ARM7TDMI 內核帶有8Kcache ;可選的internal SRAM;LCD Controller(最大支持256色STN,使用LCD專用DMA);2-ch UART with handshake(IrDA1.0, 16-byte FIFO) / 1-ch SIO; 2-ch general DMAs / 2-ch peripheral DMAs with external request pins; External memory controller (chip select logic, FP/ EDO/SDRAM controller); 5-ch PWM timers & 1-ch internal timer;Watch Dog Timer;71 general purpose I/O ports / 8-ch external interrupt source; RTC with calendar function; 8-ch 10-bit ADC; 1-ch multi-master IIC-BUS controller; 1-ch IIS-BUS controller; Sync. SIO interface and On-chip clock generator with PLL.。
S3C44B0X採用一種新的三星ARM CPU嵌入匯流排結構-SAMBA2,最大達66MHZ。
電源管理支持:Normal, Slow, Idle, and Stop mode。
系統管理功能:
1 Little/Big endian support.
2 Address space: 32Mbytes per each bank. (Total 256Mbyte)
3 Supports programmable 8/16/32-bit data bus width for each bank.
4 Fixed bank start address and programmable bank size for 7 banks.
5 . 8 memory banks.
- 6 memory banks for ROM, SRAM etc.
- 2 memory banks for ROM/SRAM/DRAM(Fast Page, EDO, and Synchronous DRAM)
6. Fully Programmable access cycles for all memory banks.
7 Supports external wait signal to expend the bus cycle.
8. Supports self-refresh mode in DRAM/SDRAM for power-down.
9. Supports asymmetric/symmetric address of DRAM.
Cache 和內部存儲器功能:
• 4-way set associative ID(Unified)-cache with 8Kbyte.
• The 0/4/8 Kbytes internal SRAM using unused cache memory.
• Pseudo LRU(Least Recently Used) Replace Algorithm.
• Write through policy to maintain the coherence between main memory and cache content.
• Write buffer with four depth.
• Request data first fill technique when cache miss occurs.
時鐘和電源管理
• Low power
• The on-chip PLL makes the clock for operating MCU at maximum 66MHz.
• Clock can be fed selectively to each function block by software.
• Power mode: Normal, Slow, Idle and Stop mode.
Normal mode: Normal operating mode.
Slow mode: Low frequency clock without PLL
Idle mode: Stop the clock for only CPU
Stop mode: All clocks are stopped
• Wake up by EINT[7:0] or RTC alarm interrupt from
idle mode.
中斷控制器
• 30 Interrupt sources( Watch-dog timer, 6 Timer, 6 UART, 8 External interrupts, 4 DMA , 2 RTC, 1 ADC, 1 IIC, 1 SIO )
• Vectored IRQ interrupt mode to reduce interrupt latency.
• Level/edge mode on the external interrupt sources
• Programmable polarity of edge and level
• Supports FIQ (Fast Interrupt request) for very urgent interrupt request
定時器功能
• 5-ch 16-bit Timer with PWM / 1-ch 16-bit internal timer with DMA-based or interrupt-based
operation
• Programmable duty cycle, frequency, and polarity
• Dead-zone generation.
• Supports external clock source.
RTC 功能:
• Full clock feature: msec, sec, min, hour, day,week, month, year.
• 32.768 KHz operation.
• Alarm interrupt for CPU wake-up.
• Time tick interrupt
通用輸入輸出口功能:
• 8 external interrupt ports
• 71 multiplexed input/output ports
UART 功能:
• 2-channel UART with DMA-based or interrupt-based operation
• Supports 5-bit, 6-bit, 7-bit, or 8-bit serial data transmit/receive
• Supports H/W handshaking during transmit/receive
• Programmable baud rate
• Supports IrDA 1.0 (115.2kbps)
• Loop back mode for testing
• Each channel have two internal 32-byte FIFO for Rx and Tx.
DMA控制器功能:
• 2 channel general purpose Direct Memory Access controller without CPU intervention.
• 2 channel Bridge DMA (peripheral DMA) controller.
• Support IO to memory, memory to IO, IO to IO with the Bridge DMA which has 6 type's DMA requestor: Software, 4 internal function blocks (UART, SIO, Timer, IIS), and External pins.
• Programmable priority order between DMAs (fixed or round-robin mode)
• Burst transfer mode to enhance the transfer rate on the FPDRAM, EDODRAM and SDRAM.
• Supports fly-by mode on the memory to external device and external device to memory t ransfer mode
A/D 轉換器:
• 8-ch multiplexed ADC.
• Max. 100KSPS/10-bit.
LCD控制器:
• Supports color/monochrome/gray LCD panel
• Supports single scan and dual scan displays
• Supports virtual screen function
• System memory is used as display memory
• Dedicated DMA for fetching image data from system memory
• Programmable screen size
• Gray level: 16 gray levels
• 256 Color levels
看門狗定時器:
• 16-bit Watchdog Timer
• Interrupt request or system reset at time-out
IIC-BUS 介面
• 1-ch Multi-Master IIC-Bus with interrupt-based operation.
• Serial, 8-bit oriented, bi-directional data transfers can be made at up to 100 Kbit/s in the standard mode or up to 400 Kbit/s in the fast mode.
IIS-BUS介面
• 1-ch IIS-bus for audio interface with DMA-based operation.
• Serial, 8/16bit per channel data transfers
• Supports MSB-justified data format
SIO (同步串口):
• 1-ch SIO with DMA-based or interrupt –based operation.
• Programmable baud rates.
• Supports serial data transmit/receive operations 8-bit in SIO.
操作電壓範圍:
• 核電壓: 2.5V I/O電壓: 3.0 V to 3.6 V
工作頻率:
• Up to 66 MHz
封裝:
• 160 LQFP / 160 FBGA
2 管腳描述
om[1:0]: 輸入om[1:0]設置S3C44B0X在測試模式和確定nGCS0的匯流排寬度,邏輯電平在複位期間由這些管腳的上拉下拉電阻確定.
00:8-bit 01:16-bit 10:32-bit 11:Test mode
ADDR[24:0] 輸出: 地址匯流排輸出相應段的存儲器地址.
DATA[31:0] 輸入輸出:數據匯流排,匯流排寬度可編程為8/16/32 位
nGCS[7:0] 輸出:晶元選擇,當存儲器地址在相應段的地址區域時被激活.存取周期和段尺寸可編程.
nWE 輸出:寫允許信號,指示當前的匯流排周期為寫周期.
nWBE[3:0] 輸出: 寫位元組允許信號
nBE[3:0] 輸出:在使用SRAM情況下位元組允許信號.
nOE輸出:讀允許信號,指示當前的匯流排周期為讀周期.
nXBREQ 輸入: nXBREQ 匯流排控制請求信號,允許另一個匯流排控制器請求控制本地匯流排,nXBACK信號激活指示已經得到匯流排控制權。
nXBACK 輸出:匯流排應答信號。
nWAIT 輸入:nWAIT請求延長當前的匯流排周期,只要nWAIT為低,當前的匯流排周期不能完成。
ENDIAN 輸入:它確定數據類型是little endian還是big endian,邏輯電平在複位期間由該管腳的上拉下拉電阻確定.
0:little endian 1:big endian
nRAS[1:0] 輸出:行地址選通信號。
nCAS[3:0] 輸出: 列地址選通信號。
nSRAS輸出:SDRAM行地址選通信號。
nSCAS輸出:SDRAM列地址選通信號。
nSCS[1:0] 輸出:SDRAM晶元選擇信號。
DQM[3:0] 輸出:SDRAM數據屏蔽信號。
SCLK輸出:SDRAM時鐘信號。
SCKE輸出:SDRAM時鐘允許信號。
VD[7:0]輸出:LCD數據線,在驅動4位雙掃描的LCD時,VD[3:0]為上部顯示區數據,VD[7:4]為下部顯示區數據。
VFRAME輸出:LCD場信號,指示一幀的開始,在開始的第一行有效。
VM輸出:VM極性變換信號,變化LCD行場掃描電壓的極性,可以每幀或可編程多少個VLINE信號打開。
VLINE輸出:LCD行信號,在一行數據左移進LCD驅動器後有效。
VCLK輸出:LCD點時鐘信號,數據在VCLK的上升沿發送,在下降沿被LCD驅動器採樣。
TOUT[4:0]輸出:定時器輸出信號。
TCLK輸入:外部時鐘信號輸入。
EINT[7:0]輸入:外部中斷請求信號。
nXDREQ[1:0]輸入:外部DMA請求信號。
nXDACK[1:0]輸出:外部DMA應答信號。
RxD[1:0]輸入:UART接收數據輸入線。
TxD[1:0]輸出:UART發送數據線。
nCTS[1:0]輸入:UART清除發送輸入信號。
nRTS[1:0]輸出:UART請求發送輸出信號。
IICSDA輸入輸出:IIC匯流排數據線。
IICSCL輸入輸出:IIC匯流排時鐘線。
IISLRCK輸入輸出:IIS匯流排通道時鐘選擇信號線。
IISDO輸出:IIS匯流排串列數據輸出信號。
IISDI輸入:IIS匯流排串列數據輸入信號。
IISCLK輸入輸出:IIS匯流排串列時鐘。
CODECLK輸出:CODEC系統時鐘。
SIORXD輸入:SIO接收數據輸入線。
SIOTXD輸出:SIO發送數據線。
SIOCK輸入輸出:SIO時鐘信號。
SIORDY輸入輸出:當SIO的DMA完成SIO操作時的握手信號。
AIN[7:0] : ADC模擬信號輸入
AREFT輸入:ADC頂參考電壓輸入。
AREFB輸入:ADC底參考電壓輸入。
AVCOM輸入:ADC公共參考電壓輸入。
P[70:0]輸入輸出:通用I/O口(一些口只有輸出模式)。
nRESET:複位信號,nRESET掛起程序,放S3C44B0X進複位狀態。在電源打開已經穩定時,nRESET必須保持低電平至少4個MCLK周期。
OM[3:2]輸入:OM[3:2]確定時鐘模式。
00 = Crystal(XTAL0,EXTAL0), PLL on 01 = EXTCLK, PLL on
10, 11 = Chip test mode.
EXTCLK輸入:當OM[3:2]選擇外部時鐘時的外部時鐘輸入信號線,不用時必須接高(3.3V).
XTAL0模擬輸入:系統時鐘內部振蕩線路的晶體輸入腳。不用時必須接高(3.3V).
EXTAL0模擬輸出:系統時鐘內部振蕩線路的晶體輸出腳,它是XTAL0的反轉輸出信號。不用時必須懸空。
PLLCAP模擬輸入:接系統時鐘的環路濾波電容(700PF)。
XTAL1模擬輸入:RTC時鐘的晶體輸入腳。
EXTAL1模擬輸出:RTC時鐘的晶體輸出腳。它是XTAL1的反轉輸出信號。
CLKout輸出:時鐘輸出信號
nTRST輸入:TAP控制器複位信號,nTRST在TAP啟動時複位TAP控制器。若使用debugger,必須連接一個10K上拉電阻,否則nTRST必須為低電平。
TMS輸入:TAP控制器模式選擇信號,控制TAP控制器的狀態次序,必須連接一個10K上拉電阻。
TCK輸入:TAP控制器時鐘信號,提供JTAG邏輯的時鐘信號源,必須連接一個10K上拉電阻。
TDI輸入:TAP控制器數據輸入信號,是測試指令和數據的串列輸入腳,必須連接一個10K上拉電阻。
TDO輸出:TAP控制器數據輸出信號,是測試指令和數據的串列輸出腳。
VDD :S3C44B0X內核邏輯電壓(2.5V)
VSS: S3C44B0X內核邏輯地.
VDDIO: S3C44B0X I/O口電源(3.3V).
VSSIO: S3C44B0X I/O地.
RTCVDD:RTC電壓(2.5V或3V,不支持3.3V).
VDDADC:ADC電壓(2.5V).
VSSADC:ADC地.
3 指令集
4 存儲管理
1 BWSCON 0x01C80000 R/W 匯流排寬度與等待狀態控制寄存器初始值為0
位名稱BIT 功能
ST7 31 該位確定BANK7上的SRAM 是否使用UB/LB
0- 不使用(PIN[14:11] 作為nWBE[3:0])
1- 使用(PIN[14:11] 作為nBE[3:0])
WS7 30 該位確定BANK7上的SRAM存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW7 [29:28] 該兩位確定BANK7的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST6 27 該位確定BANK6上的SRAM 是否使用UB/LB
2- 不使用(PIN[14:11] 作為nWBE[3:0])
3- 使用(PIN[14:11] 作為nBE[3:0])
WS6 26 該位確定BANK6上的SRAM存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW6 [25:24] 該兩位確定BANK6的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST5 23 該位確定BANK5上的SRAM 是否使用UB/LB
4- 不使用(PIN[14:11] 作為nWBE[3:0])
5- 使用(PIN[14:11] 作為nBE[3:0])
WS5 22 該位確定BANK5上的存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW5 [21:20] 該兩位確定BANK5的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST4 19 該位確定BANK4上的SRAM 是否使用UB/LB
6- 不使用(PIN[14:11] 作為nWBE[3:0])
7- 使用(PIN[14:11] 作為nBE[3:0])
WS4 18 該位確定BANK4上的存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW4 [17:16] 該兩位確定BANK4的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST3 15 該位確定BANK3上的SRAM 是否使用UB/LB
8- 不使用(PIN[14:11] 作為nWBE[3:0])
9- 使用(PIN[14:11] 作為nBE[3:0])
WS3 14 該位確定BANK3上的存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW3 [13:12] 該兩位確定BANK3的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST2 11 該位確定BANK2上的SRAM 是否使用UB/LB
10- 不使用(PIN[14:11] 作為nWBE[3:0])
11- 使用(PIN[14:11] 作為nBE[3:0])
WS2 10 該位確定BANK2上的存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW2 [9:8] 該兩位確定BANK2的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ST1 7 該位確定BANK1上的SRAM 是否使用UB/LB
12- 不使用(PIN[14:11] 作為nWBE[3:0])
13- 使用(PIN[14:11] 作為nBE[3:0])
WS1 6 該位確定BANK1上的存儲器的等待狀態
0- WAIT disable 1 = WAIT enable
DW1 [5:4] 該兩位確定BANK1的數據總縣寬度
00 = 8-bit 01 = 16-bit, 10 = 32-bit
DW0 [2:1] 該兩位指示BANK0的數據總縣寬度(ONLY READ,由OM[1:0] 腳確定)
00 = 8-bit 01 = 16-bit, 10 = 32-bit
ENDIAN 0 該位指示endian mode (read only 狀態由ENDIAN pins確定)
0 = Little endian 1 = Big endian
2
BANKCON0 0x01C80004 R/W Bank 0 control register 0x0700
BANKCON1 0x01C80008 R/W Bank 1 control register 0x0700
BANKCON2 0x01C8000C R/W Bank 2 control register 0x0700
BANKCON3 0x01C80010 R/W Bank 3 control register 0x0700
BANKCON4 0x01C80014 R/W Bank 4 control register 0x0700
BANKCON5 0x01C80018 R/W Bank 5 control register 0x0700
位名稱BIT 功能
Tacs [14:13] 在nGCSn 有效之前地址建立時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tcos [12:11] 在nOE上晶元選擇建立時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tacc [10:8] 存取周期
000 = 1 clock 001 = 2 clocks
010 = 3 clocks 011 = 4 clocks
100 = 6 clocks 101 = 8 clocks
110 = 10 clocks 111 = 14 clocks
Toch [7:6] 在nOE上晶元選擇保持時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tcah [5:4] 在nGCSn有效地址保持時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tpac [3:2] 頁模式存取周期
00 = 2 clocks 01 = 3 clocks
10 = 4 clocks 11 = 6 clocks
PMC [1:0] 頁模式配置
00 = normal (1 data) 01 = 4 data
10 = 8 data 11 = 16 data
寄存器名稱地址描述初始值
BANKCON6 0x01C8001C R/W Bank 6 control register 0x18008
BANKCON7 0x01C80020 R/W Bank 7 control register 0x18008
位名稱BIT 功能
MT [16:15] 這兩位確定bank6 和bank7存儲器類型
00 = ROM or SRAM 01 = FP DRAM
10 = EDO DRAM 11 = Sync. DRAM
對於ROM和SRAM類型
Tacs [14:13] 在nGCSn 有效之前地址建立時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tcos [12:11] 在nOE上晶元選擇建立時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tacc [10:8] 存取周期
000 = 1 clock 001 = 2 clocks
010 = 3 clocks 011 = 4 clocks
100 = 6 clocks 101 = 8 clocks
110 = 10 clocks 111 = 14 clocks
Toch [7:6] 在nOE上晶元選擇保持時間
00 = 0 clock 01 = 1 clock
10 = 2 clocks 11 = 4 clocks
Tcah [5:4] 在nGCSn有效時地址保持時間
00 = 0 clock 01 = 1clock
10 = 2 clocks 11 = 4 clocks
Tpac [3:2] 頁模式存取周期
00 = 2 clocks 01 = 3 clocks
10 = 4 clocks 11 = 6 clocks
PMC [1:0] 頁模式配置
00 = normal (1 data) 01 = 4 consecutive accesses
10 = 8 consecutive accesses 11 = 16 consecutive accesses
對於FP DRAM和EDO DRAM類型
Trcd [5:4] RAS 到CAS 延時y
00 = 1 clock 01 = 2 clocks
10 = 3 clocks 11 = 4 clocks
Tcas [3] CAS 脈衝寬度
0 = 1 clock 1 = 2 clocks
Tcp [2] CAS 預充電周期
0 = 1 clock 1 = 2 clocks
CAN [1:0] 列地址數目
00 = 8-bit 01 = 9-bit
10 = 10-bit 11 = 11-bit
對於SDRAM類型
Trcd [3:2] RAS 到CAS 延時
00 = 2 clocks 01 = 3 clocks 10 = 4 clocks
SCAN [1:0] 列地址數目
00 = 8-bit 01 = 9-bit 10= 10-bit
BANK7 BANK6 支持的存儲器類型組合
SROM DRAM
SDRAM SROM
SROM SDRAM
DRAM SROM
不支持的組合
SDRAM DRAM
DRAM SDRAM
3
REFRESH 0x01C80024 R/W DRAM/SDRAM刷新控制寄存器初始值0xac0000
位名稱BIT 功能
REFEN [23] DRAM/SDRAM刷新允許
0 = Disable 1 = Enable (self or CBR/auto refresh)
TREFMD [22] DRAM/SDRAM刷新模式
0 = CBR/Auto Refresh 1 = Self Refresh
在self-refresh 時, DRAM/SDRAM 控制信號被適當電平驅動
Trp [21:20] DRAM/SDRAM RAS 預充電時間
DRAM :
00 = 1.5 clocks 01 = 2.5 clocks 10 = 3.5 clocks 11 = 4.5 clocks
SDRAM :
00 = 2 clocks 01 = 3 clocks 10 = 4 clocks 11 = Not support
Trc [19:18] SDRAM RAS 和CAS 最小時間
00 = 4 clocks 01 = 5 clocks 10 = 6 clocks 11 = 7 clocks
Tchr [17:16] DRAM的CAS保持時間
00 = 1 clock 01 = 2 clocks 10 = 3 clocks 11 = 4 clocks
Reserved [15:11] Not use
Refresh Counter [10:0] DRAM/SDRAM刷新計數值
刷新周期計算公式:
Refresh period = (2^ 11 -refresh_count+1)/MCLK
如果刷新周期是15.6 us和MCLK 是60 MHz,
refresh count如下計算
refresh count = 2 ^11 + 1 - 60x15.6 = 1113
4
BANKSIZE 0x01C80028 R/W 段尺寸寄存器初始值為0x0
位名稱BIT 功能
SCLKEN [4] 設置為1,則SCLK僅在SDRAM存取周期產生,這個特徵將
使功耗減少,推薦設置為1。
0 = normal SCLK =1
Reserved [3] 保留為0
BK76MAP [ 2:0] BANK6/7存儲器映射
000 = 32M/32M 100 = 2M/2M 101 = 4M/4M
110 = 8M/8M 111 = 16M/16M
4 SDRAM模式設置寄存器
MRSRB6 0x01C8002C R/W bank6模式設置寄存器初始值xxx
MRSRB7 0x01C80030 R/W bank7模式設置寄存器初始值xxx
位名稱BIT 功能
WBL [9] 寫突發脈衝長度
0是推薦值
TM [8:7] 測試模式
00: 測試模式
01, 10, 11: 保留
CL [6:4] CAS 突發響應時間
000 = 1 clock, 010 = 2 clocks, 011=3 clocks
其它= 保留
BT [3] 突發類型
0: 連續(推薦)
1: N/A
BL [2:0] 突髮長度
000: 1
其它: N/A
註:1 當程序在SDRAM運行時該寄存器不必重新配置。
2 所有的存儲控制寄存器必須使用STMIA指令設置
3 在停止和SL_IDLE DRAM/SDRAM必須進入自刷新模式
5 時鐘和電源管理模式
S3C44B0X的電源管理有5種模式:
1 Normal mode,
在正常模式CPU和所有的外設都正常工作,這時功耗最大,但用戶能使用S/W指令停止每個外設的時鐘供應。
2 Slow mode
Slow mode為非PLL模式,PLL不工作,使用外部時鐘作為主時鐘。在該模式,電源消耗依賴於外部時鐘的頻率。
3 Idle mode
Idle mode停止CPU CORE的時鐘供應,僅對所有外設提供時鐘,因此可以減少電源消耗。一個對CPU的中斷請求能使S3C44B0X從該模式喚醒。
4 Stop mode
Stop mode 凍結所有的時鐘供應,PLL也停止。這時的電源消耗最少,電流消耗僅是S3C44B0X的漏電流,少於10UA。外部中斷能使CPU從該模式喚醒。
5 SL Idle mode
SL Idle mode 除了LCD控制器凍結所有的時鐘。
S3C44B0X的時鐘源可以用外部晶體來產生,也可以直接輸入外部時鐘,這有OM[3:2]的狀態決定. M[3:2]的狀態在nRESET的上升沿由OM3 和OM2腳的電平決定.
M[3:2]=00 Crystal clock M[3:2]=01 Ext. Clock 其它測試模式
注:在複位后PLL啟動,但在用S/W指令設置PLLCON為有效的值之前,PLL OUTPUT (FOUT)不能使用,這時FOUT直接輸出Crystal clock或外部時鐘.
如果S3C44B0X的PLL的時鐘源使用晶體,這時EXTCLK能作為Timer 5的時鐘源TCLK.
1 PLL控制寄存器
PLLCON 0x01D80000 R/W PLL控制寄存器複位值0x38080
該寄存器設置PLL參數.
PLL輸出頻率計算公式如下:
Fpllo = (m * Fin) / (p * 2s)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
Fpllo必須大於20MHZ 和少於66MHZ.
Fpllo * 2 s 必須少於170MHZ
Fin / pT推薦為1MHZ 或大於但小於2MHZ.
位名稱BIT 描述默認值
MDIV [19:12] MDIV值0x38
PDIV [9:4] PDIV值0x08
SDIV [1:0] SDIV值0x0
2 時鐘控制寄存器
CLKCON 0x01D80004 R/W 時鐘控制寄存器初始值0x7ff8
位名稱BIT 描述
IIS [14] 控制IIS block的鐘控
0 = Disable, 1 = Enable
IIC [13] 控制IIC block的鐘控
0 = Disable, 1 = Enable
ADC [12] 控制ADC block的鐘控
0 = Disable, 1 = Enable
RTC [11] 控制RTC block的鐘控,即使該位為0,. RTC定時器仍工作
0 = Disable, 1 = Enable
GPIO [10] 控制GPIO block的鐘控,設置為1,允許使用EINT[4:7]的中斷.
0 = Disable, 1 = Enable
UART1 [9] 控制UART1 block的鐘控
0 = Disable, 1 = Enable
UART0 [8] 控制UART0 block的鐘控
0 = Disable, 1 = Enable
BDMA0,1 [7] 控制BDMA block的鐘控,如果BDMA關斷,在外設匯流排上的外設不能存取
0 = Disable, 1 = Enable
LCDC [6] 控制LCDC block的鐘控
0 = Disable, 1 = Enable
SIO [5] 控制SIO block的鐘控
0 = Disable, 1 = Enable
ZDMA0,1 [4] 控制ZDMA block的鐘控
0 = Disable, 1 = Enable
PWMTIMER [3] 控制PWMTIMER block的鐘控
0 = Disable, 1 = Enable
IDLE [2] 進入IDLE mode.該位不能自動清除
0 = Disable, 1 =進入IDLE mode
SL_IDLE [1] 進入SL_IDLE mode option. 該位不能自動清除.
為了進入SL_IDLE mode, CLKCON 寄存器必須等於0x46.
0 = Disable, 1 = SL_IDLE mode.
STOP [0] 進入STOP mode. 該位不能自動清除.
0 = Disable 1 =進入STOP mode
3 慢時鐘控制寄存器
CLKSLOW 0x01D80008 R/W 慢時鐘控制寄存器初始值0x9
位名稱BIT 描述
PLL_OFF [5]
0 : PLL 打開,. PLL 僅能在SLOW_BIT=1時打開,在PLL穩定后(150US),
SLOW_BIT位可以清除
1 : PLL 關掉, PLL 僅能在SLOW_BIT=1時關掉
SLOW_BIT [4]
0 : Fout = Fpllo (PLL output)
1: Fout = Fin / (2 x SLOW_VAL), (SLOW_VAL > 0) Fout = Fin, (SLOW_VAL =0)
SLOW_VAL [3:0] 這四位是在SLOW_BIT 位打開時slow clock的分頻值
4 鎖定時間計數值寄存器
LOCKTIME 0x01D8000C R/W 鎖定時間計數值寄存器初始值0xfff
6 CPU WRAPPER & BUS PRIORITIES
CPU WRAPPER 包括一個8KBYTEcache, write buffer,和CPU 核.
8KBYTEcache可以以三種方式使用:
1. 全部8K作為指令/數據cache,
2. 4K做為內部SRAM,另外4K做為cache
3 全部8K作為內部存儲器使用.
Cache使用最近最少使用演算法來提高命中率,使用write-through策落保持數據一直性.
內部SRAM主要用來減少中斷線程執行時間.
cache set 和LRU的存儲映射地址
cache 和LRU 存儲映射地址尺寸
cache set 0 0x10000000 - 0x100007ff 2KB
cache set 1 0x10000800 - 0x10000fff 2KB
cache set 2 0x10001000 - 0x100017ff 2KB
cache set 3 0x10001800 - 0x10001fff 2KB
cache tag 0 0x10002000 - 0x100027f0 512bytes
cache tag 1 0x10002800 - 0x10002ff0 512bytes
cache tag 2 0x10003000 - 0x100037f0 512bytes
cache tag 3 0x10003800 - 0x10003ff0 512bytes
LRU 0x10004000 - 0x100047f0 512bytes
在cache set的地址連續增加,在cache tag和LRU中的地址以16BYTE來增加,每次讀寫一個字, 地址的bit[3:0]必須是0.
S3C44B0X有四個寫緩衝區寄存器,每個寫緩衝區寄存器包括一個32BIT數據域,一個28BIT的地址域,指示寫數據的地址,2BIT 的狀態域MAS.
狀態域MAS確定數據模式
00 = 8-bit data mode
01 = 16-bit data mode
10 = 32-bit data mode
11 = Not used
在S3C44B0X,有七個匯流排控制塊: LCD_DMA, BDMA0, BDMA1, ZDMA0, ZDMA1,
nBREQ (外部匯流排控制塊),和CPU wrapper.
在複位后優先順序從高到低如下:
1. DRAM refresh controller
2. LCD_DMA
3. ZDMA0,1
4. BDMA0,1
5. External bus master
6. Write buffer
7. Cache & CPU
LCD_DMA, ZDMA, BDMA, and an external bus master的優先順序可以通過SBUSCON寄存器編程改變,但CPU wrapper總是最低的優先順序,不能改變
可以選擇循環隊列優先順序模式和固定優先順序模式,在循環隊列優先順序模式,所有的匯流排控制塊都有相同的優先順序,
寄存器定義.
1 系統配置寄存器
SYSCFG 0x01C00000 R/W 系統配置寄存器默認值0x01
位名稱位描述
Reserved [7] 保留
Reserved [6] 保留
DA(reserved) [5] 數據異常控制,推薦值為0.
0: 允許數據異常1: 不允許數據異常
RSE(reserved) [4] 允許讀停止選項. 推薦值為0.
讀停止選項在cache & CPU core讀數據時插入一個間歇等待周期
0: 不允許讀停止1: 允許讀停止
WE [3] 該位確定寫緩衝的允許/不允許. 一些外部裝置需要最小的寫周期時間,如果允許寫緩衝,在由於連續的寫之間的周期將使之工作不正常.
0 =不允許寫緩衝操作1 = 允許寫緩衝操作
CM [2:1] 這兩位確定cache 模式
00 = Disable cache (8KB internal SRAM)
01 = Half cache enable (4KB cache, 4KB internal SRAM)
10 = Reserved
11 = Full Cache enable (8KB cache)
SE [0] 允許停止選項. 推薦值為0.
停止選項在使用Cache,產生非連續地址時,插入一個間歇等待周期
0: 不允許停止選項1: 允許停止選項
2 NON-CACHEABLE區域控制寄存器
NCACHBE0 0x01C00004 R/W non-cacheable0區域的開始結束地址0x00000000
NCACHBE1 0x01C00008 R/W non-cacheable1區域的開始結束地址1 0x00000000
位名稱位描述
SE0 [31:16] non-cacheable0的結束地址,因為on-cacheable的最小尺寸為4Kbyte。因此SE0計算如下.
SE0 = (End address + 1)/4K
SA0 [15:0] non-cacheable0的開始地址,因為on-cacheable的最小尺寸為4Kbyte。因此SA0計算如下.
SA0 = Start address/4K
SE1 [31:16] non-cacheable1的結束地址,因為on-cacheable的最小尺寸為4Kbyte。因此SE1計算如下.
SE1 = (End address + 1)/4K
SA1 [15:0] non-cacheable1的開始地址,因為on-cacheable的最小尺寸為
4Kbyte。因此SA0計算如下.
SA1 = Start address/4K
3 系統匯流排優先順序控制寄存器
SBUSCON 0x01C40000 R/W 匯流排優先順序控制寄存器初始值0x80001B1B
位名稱位描述
FIX [31] 優先順序模式
0: round-robin priorities
1: fixed priorities
S_LCD_DMA [15:14] 指示LCD_DMA 的匯流排優先順序(只讀)
00: 1st 01: 2nd 10: 3rd 11: 4th
S_ZDMA [13:12] 指示ZDMA的匯流排優先順序(只讀)
00: 1st 01: 2nd 10: 3rd 11: 4th
S_BDMA [11:10] 指示BDMA的優先順序(只讀)
00: 1st 01: 2nd 10: 3rd 11: 4th
S_nBREQ [9:8] 指示nBREQ的優先順序(只讀)
00: 1st 01: 2nd 10: 3rd 11: 4th
LCD_DMA [7:6] 確定LCD_DMA匯流排優先順序
00: 1st 01: 2nd 10: 3rd 11: 4th
ZDMA [5:4] 確定ZDMA 匯流排優先順序
00: 1st 01: 2nd 10: 3rd 11: 4th
BDMA [3:2] 確定BDMA 匯流排優先順序
00: 1st 01: 2nd 10: 3rd 11: 4th
nBREQ [1:0] 確定nBREQ匯流排優先順序
00: 1st 01: 2nd 10: 3rd 11: 4th
7 DMA
S3C44B0X 有4路DMA控制器,其中兩路稱為ZDMA(General DMA)被連到SSB(Samsung System Bus)匯流排上,另外兩路稱為BDMA (Bridge DMA)是SSB和SPB(Samsung Peripheral Bus)之間的介面層,相當於一個橋,因此稱為橋DMA。ZDMA和BDMA都可以由指令啟動,也可以有內部外設和外部請求引腳來請求啟動。
ZDMA用來在存儲器到存儲器、存儲器到IO存儲器、IO裝置到存儲器之間傳輸數據。BDMA控制器只能在連到SPB上的IO裝置(外設)與存儲器之間傳輸數據
ZDMA最大的特性是on-the-fly模式,on-the-fly模式有不可分割的讀寫周期,在這點上ZDMA與普通的DMA不同,從而可以減少在外部存儲器和外部可定址的外設之間DMA操作的周期數。
對於ZDMA,S3C44B0X有一個4字的FIFO緩衝來支持4字突發DMA傳輸,而BDMA不支持突發DMA傳輸,因此存儲器之間的傳輸數據最好用ZDMA傳輸,來提供高的傳輸速度。
2 外部DMA REQ/ACK 協議
對於ZDMA ,有四種類型的外部DMA請求/應答協議。
握手模式
一個單獨的應答對應一個單獨的DMA請求,在該模式,DMA操作期間的讀寫周期不可分割,因此在一個DMA操作完成前,不能把匯流排讓給其它匯流排控制器使用。一次nXDREQ請求引起一次DMA傳輸(可以是一個位元組,一個半字或一個字)。
單步模式
單步模式意味著一次DMA傳輸有兩個DMA應答周期(產生兩個應答信號nXDACK)指示DMA讀和寫周期,主要用與測試和調試模式,在讀寫周期之間,匯流排控制權可以讓給其它匯流排控制器。
Whole Service Mode
在該模式,一次DMA請求將產生連續的DMA傳輸,直到規定的DMA傳輸數傳輸完,在DMA傳輸期間,nXDACK一直有效,DMA請求信號被釋放。並且在每次傳輸一個數據單元后,釋放一次匯流排控制權,以便其它匯流排控制器有機會可以佔用匯流排。
Demand Mode
在該模式,只要DMA請求信號一直有效,DMA傳輸就持續進行,並且一直佔用匯流排控制權,因此應該預防傳輸周期超過規定的最大時間。
有三種DMA傳輸模式(單位傳輸模式,塊傳輸模式,On the fly塊傳輸模式)。
Unit 傳輸模式1 個單位讀, 然後1個單位寫
Block傳輸模式4 個字突發讀, 然後4 個字突發寫,因此傳輸的數據個數應當是16位元組的倍數。
On-the-fly 傳輸模式1個單位讀或1個單位寫,讀寫同時進行。
DMA寄存器
1 ZDMA控制寄存器
ZDCON0 0x01E80000 R/W ZDMA 0 控制寄存器初始值0x00
ZDCON1 0x01E80020 R/W ZDMA 1 控制寄存器初始值0x00
位名稱BIT 描述
INT [7:6] 保留00
STE [5:4] DMA通道的狀態(只讀)
在DMA的傳輸計數開始之前,STE呆在準備好狀態
00 = Ready 01 = Not TC yet
10 = Terminal Count 11 = N/A
QDS [3:2] 忽落/允許外部DMA 請求(nXDREQ)
00 = Enable other = Disable
CMD [1:0] 軟體命令
00: 沒有命令.在寫01,10,11后, CMD 位被自動清除, nXDREQ允許
01: 由S/W啟動DMA操作S/W啟動功能能用在whole mode.
10: 停止DMA操作. 但nXDREQ仍允許
11: 取消DMA 操作
2 ZDMA0 初始源/目標地址和計數寄存器
ZDISRC0 0x01E80004 R/W ZDMA 0初始源地址寄存器初始值0x00000000
ZDIDES0 0x01E80008 R/W ZDMA 0初始目標地址寄存器初始值0x00000000
ZDICNT0 0x01E8000C R/W ZDMA 0初始計數寄存器初始值0x00000000
3 ZDMA0 當前源/目標地址和計數寄存器
ZDCSRC0 0x01E80010 R ZDMA 0當前源地址寄存器初始值0x00000000
ZDCDES0 0x01E80014 R ZDMA 0當前目標地址寄存器初始值0x00000000
ZDCCNT0 0x01E80018 R ZDMA 0 當前計數寄存器初始值0x00000000
4 ZDMA1 初始源/目標地址和計數寄存器
ZDISRC1 0x01E80024 R/W ZDMA 1初始源地址寄存器初始值0x00000000
ZDIDES1 0x01E80028 R/W ZDMA 1初始目標地址寄存器初始值0x00000000
ZDICNT1 0x01E8002C R/W ZDMA 1初始計數寄存器初始值0x00000000
5 ZDMA1 當前/目標源地址和計數寄存器
ZDCSRC1 0x01E80030 R ZDMA 1當前源地址寄存器初始值0x00000000
ZDCDES1 0x01E80034 R ZDMA 1當前目標地址寄存器初始值0x00000000
ZDCCNT1 0x01E80038 R ZDMA 1 當前計數寄存器初始值0x00000000
ZDMAn的初始當前源地址寄存器位定義
位名稱BIT 描述
DST [31:30] 傳輸的數據類型,在塊傳輸模式,DST必須是10
00 = Byte, 01 = Half word
10 = Word, 11 = Not used
DAL [29:28] 載入地址變動方向
00 = N/A, 01 = Increment
10 = Decrement, 11 = Fixed
ISADDR/CSADDR [27:0] ZDMAn的初始/當前源地址
ZDMAn的初始當前目標地址寄存器位定義
位名稱BIT 描述
OPT [31:30] DMA內部選項推薦值OPT = 10
bit 31: 指示在單步模式nXDREQ 如何採樣
bit 30: 如果DST是半字或字和DMA 模式不是塊傳輸模式,該位起作用
1: DMA做字或半字交換
傳輸前: B0,B1,B2,B3,B4,B5,B6,B7...
字交換后: B3,B2,B1,B0,B7,B6,B5,B4,...
半字交換后: B1,B0,B3,B2,B5,B4,B7,B6,...
0: 正常
DAS [29:28] 地址方向
00 = N/A 01 = Increment
10 = Decrement 11 = Fixed
IDADDR/CDADDR [27:0] ZDMAn的初始/當前目標地址
ZAMA計數寄存器位定義
位名稱BIT 描述
QSC [31:30] 選擇DMA 請求源
00 = nXDREQ[0] 01 = nXDREQ[1]
10 = N/A 11 = N/A
QTY [29:28] DREQ 協議類型
00 = Handshake 01 = Single step
10 = Whole Service 11 = Demand
TMD [27:26] 傳輸模式
00 = Not used 01 = Unit transfer mode
10 = Block(4-word) transfer mode 11 = On the fly
OTF [25:24] On the fly mode 有效
00 = N/A 01 = N/A
10 = Read time on the fly 11 = Write time on the fly
INTS [23:22] 中斷模式設置
00 = 查詢模式01 = N/A
10 =無論什麼時候傳輸都產生中斷
11 =當中斷計數時產生中斷
AR [21] 在DMA計數到0時自動載入和自動開始
0 = Disable
1 = Enable.
EN [20] DMA H/W允許/不允許
0 = Disable DMA
1 = Enable DMA.
如果S/W 命令取消, DMA 操作也將被取消和EN位被清除
在中斷計數時,EN位也被清除。
注:不要同時設置ZDICNTD的EN位和其它位用戶必須在設置其它位後設置EN位,步驟如下:
1. Set ZDICNT register with disabled En bit.
2. Set EN bit enable.
ICNT/CCNT [19:0] ZDMAn的初始/當前傳輸計數值.,必須正確設置
如果傳輸單位為位元組,ICNT每次減小1
如果傳輸單位為半字,ICNT每次減小2
如果傳輸單位為字,ICNT每次減小4
6 BDMA控制寄存器
BDCON0 0x01F80000 R/W BDMA 0 控制寄存器初始值0x00
BDCON1 0x01F80020 R/W BDMA 1 控制寄存器初始值0x00
位名稱BIT 描述
INT [7:6] 保留00
STE [5:4] DMA通道的狀態(只讀)
在DMA的傳輸計數開始之前,STE呆在準備好狀態
00 = Ready 01 = Not TC yet
10 = Terminal Count 11 = N/A
QDS [3:2] 忽落/允許外部DMA 請求(nXDREQ)
00 = Enable other = Disable
CMD [1:0] 軟體命令
00: 沒有命令.在寫01,10,11后, CMD 位被自動清除。,
01: 保留
10: 保留
11: 取消DMA 操作
7 BDMA0 初始源/目標地址和計數寄存器
BDISRC0 0x01F80004 R/W BDMA 0初始源地址寄存器初始值0x00000000
BDIDES0 0x01F80008 R/W BDMA 0初始目標地址寄存器初始值0x00000000
BDICNT0 0x01F8000C R/W BDMA 0初始計數寄存器初始值0x00000000
8 BDMA0 當前源/目標地址和計數寄存器
BDCSRC0 0x01F80010 R BDMA 0當前源地址寄存器初始值0x00000000
BDCDES0 0x01F80014 R BDMA 0當前目標地址寄存器初始值0x00000000
BDCCNT0 0x01F80018 R BDMA 0 當前計數寄存器初始值0x00000000
9 BDMA1 初始源/目標地址和計數寄存器
BDISRC1 0x01F80024 R/W BDMA 1初始源地址寄存器初始值0x00000000
BDIDES1 0x01F80028 R/W BDMA 1初始目標地址寄存器初始值0x00000000
BDICNT1 0x01F8002C R/W BDMA 1初始計數寄存器初始值0x00000000
10 BDMA1 當前/目標源地址和計數寄存器
BDCSRC1 0x01F80030 R BDMA 1當前源地址寄存器初始值0x00000000
BDCDES1 0x01F80034 R BDMA 1當前目標地址寄存器初始值0x00000000
BDCCNT1 0x01F80038 R BDMA 1 當前計數寄存器初始值0x00000000
BDMAn的初始當前源地址寄存器位定義
位名稱BIT 描述
DST [31:30] 傳輸的數據類型
00 = Byte, 01 = Half word
10 = Word, 11 = Not used
DAL [29:28] 載入地址變動方向
00 = N/A, 01 = Increment
10 = Decrement, 11 = Fixed
ISADDR/CSADDR [27:0] BDMAn的初始/當前源地址
BDMAn的初始當前目標地址寄存器位定義
位名稱BIT 描述
TDM [31:30] 傳輸方向模式
00 = 保留
01 = M2IO (從外部存儲器到內部外設)
10 = IO2M (從內部外設到外部存儲器)
11= IO2IO (從內部外設到內部外設)
註:即使不使用BAMA通道,你也必須改變該值。
DAS [29:28] 地址方向
00 = N/A 01 = Increment
10 = Decrement 11 = Fixed
IDADDR/CDADDR [27:0] BDMAn的初始/當前目標地址
BAMA計數寄存器位定義
位名稱BIT 描述
QSC [31:30] 選擇DMA 請求源
00 = N/A 01 = IIS
10 = UART0 11 = SIO
Reserved [29:28]
00 = Handshake
Reserved [27:26] 傳輸模式
01 = Unit transfer mode
Reserved [25:24] 00 = N/A
INTS [23:22] 中斷模式設置
00 = 查詢模式01 = N/A
10 =無論什麼時候傳輸都產生中斷
11 =當中斷計數時產生中斷
AR [21] 在DMA計數到0時自動載入和自動開始
0 = Disable
1 = Enable.
EN [20] DMA H/W允許/不允許
0 = Disable DMA
1 = Enable DMA.
如果S/W 命令取消, DMA 操作也將被取消和EN位被清除
在中斷計數時,EN位也被清除。
注:不要同時設置BDICNTD的EN位和其它位用戶必須在設置其它位後設置EN位,步驟如下:
1. Set BDICNT register with disabled En bit.
2. Set EN bit enable.
ICNT/CCNT [19:0] BDMAn的初始/當前傳輸計數值.
如果傳輸單位為位元組,ICNT每次減小1
如果傳輸單位為半字,ICNT每次減小2
如果傳輸單位為字,ICNT每次減小4
8 I/O PORTS
S3C44B0X有71個複合功能的I/O口引腳,分成7個埠
埠E和F(9位I/O口)
埠D和G(8位I/O口)
埠C(16位I/O口)
埠A(10位I/O口)
埠B(11位I/O口)
在主程序開始前,必須定義每個I/O管腳的功能。在特殊功能不用時,作為I/O腳使用
Port A
Function 1 Function 2 Function 3 Function 4
PA9 output ADDR24
PA8 output ADDR23
PA7 output ADDR22
PA6 output ADDR21
PA5 output ADDR20
PA4 output ADDR19
PA3 output ADDR18
PA2 output ADDR17
PA1 output ADDR16
PA0 output ADDR0
PB10 output nGCS5
PB9 output nGCS4
PB8 output nGCS3
PB7 output nGCS2
PB6 output nGCS1
PB5 output nWBE3:nBE3:DQM3
PB4 output nWBE2:nBE2:DQM2
PB3 output nSRAS:nCAS3
PB2 output nSCAS:nCAS2
PB1 output SCLK
PB0 output SCKE
PC15 Input/output DATA31 nCTS0
PC14 Input/output DATA30 nRTS0
PC13 Input/output DATA29 RxD1
PC12 Input/output DATA28 TxD1
PC11 Input/output DATA27 nCTS1
PC10 Input/output DATA26 nRTS1
PC9 Input/output DATA25 nXDREQ1
PC8 Input/output DATA24 nXDACK1
PC7 Input/output DATA23 VD4
PC6 Input/output DATA22 VD5
PC5 Input/output DATA21 VD6
PC4 Input/output DATA20 VD7
PC3 Input/output DATA19 IISCLK
PC2 Input/output DATA18 IISDI
PC1 Input/output DATA17 IISDO
PC0 Input/output DATA16 IISLRCK
PD7 Input/output VFRAME
PD6 Input/output VM
PD5 Input/output VLINE
PD4 Input/output VCLK
PD3 Input/output VD3
PD2 Input/output VD2
PD1 Input/output VD1
PD0 Input/output VD0
PE8 ENDIAN CODECLK input/output
PE7 Input/output TOUT4 VD7
PE6 Input/output TOUT3 VD6
PE5 Input/output TOUT2 TCLK
PE4 Input/output TOUT1 TCLK
PE3 Input/output TOUT0
PE2 Input/output RxD0
PE1 Input/output TxD0
PE0 Input/output Fpllo Fout
PF8 input/output nCTS1 SIOCK IISCLK
PF7 input/output RxD1 SIORxD IISDI
PF6 input/output TxD1 SIORDY IISDO
PF5 input/output nRTS1 SIOTxD IISLRCK
PF4 input/output nXBREQ nXDREQ0 –
PF3 input/output nXBACK nXDACK0 –
PF2 input/output nWAIT – –
PF1 input/output IICSDA – –
PF0 input/output IICSCL
PG7 input/output IISLRCK EINT7
PG6 input/output IISDO EINT6
PG5 input/output IISDI EINT5
PG4 input/output IISCLK EINT4
PG3 input/output nRTS0 EINT3
PG2 input/output nCTS0 EINT2
PG1 input/output VD5 EINT1
PG0 input/output VD4 EINT0
I/O埠控制寄存器
1 PORT A 控制寄存器
PCONA 0x01D20000 R/W port A的配置初始值0x3ff
PDATA 0x01D20004 R/W port A的數據寄存器初始值Undef.
位名稱BIT 描述
PA9 [9] 0 = Output 1 = ADDR24
PA8 [8] 0 = Output 1 = ADDR23
PA7 [7] 0 = Output 1 = ADDR22
PA6 [6] 0 = Output 1 = ADDR21
PA5 [5] 0 = Output 1 = ADDR20
PA4 [4] 0 = Output 1 = ADDR19
PA3 [3] 0 = Output 1 = ADDR18
PA2 [2] 0 = Output 1 = ADDR17
PA1 [1] 0 = Output 1 = ADDR16
PA0 [0] 0 = Output 1 = ADDR0
數據寄存器位描述
PA[9:0] [9:0] 當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
2 PORT B 控制寄存器
PCONB 0x01D20008 R/W port B的配置初始值0x7ff
PDATB 0x01D2000C R/W port B的數據寄存器初始值Undef.
位名稱BIT 描述
PB10 [10] 0 = Output 1 = nGCS5
PB9 [9] 0 = Output 1 = nGCS4
PB8 [8] 0 = Output 1 = nGCS3
PB7 [7] 0 = Output 1 = nGCS2
PB6 [6] 0 = Output 1 = nGCS1
PB5 [5] 0 = Output 1 = nWBE3/nBE3/DQM3
PB4 [4] 0 = Output 1 = nWBE2/nBE2/DQM2
PB3 [3] 0 = Output 1 = nSRAS/nCAS3
PB2 [2] 0 = Output 1 = nSCAS/nCAS2
PB1 [1] 0 = Output 1 = SCLK
PB0 [0] 0 = Output 1 = SCKE
數據寄存器位描述
PB[10:0] [10:0] 當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
3 PORT C 控制寄存器
PCONC 0x01D20010 R/W port C的配置初始值0xaaaaaaaa
PDATC 0x01D20014 R/W port C的數據寄存器初始值Undef.
PUPC 0x01D20018 R/W port C的上拉電阻配置寄存器初始值0x0
位名稱BIT 描述
PC15 [31:30] 00 = Input 01 = Output
10 = DATA31 11 = nCTS0
PC14 [29:28] 00 = Input 01 = Output
10 = DATA30 11 = nRTS0
PC13 [27:26] 00 = Input 01 = Output
10 = DATA29 11 = RxD1
PC12 [25:24] 00 = Input 01 = Output
10 = DATA28 11 = TxD1
PC11 [23:22] 00 = Input 01 = Output
10 = DATA27 11 = nCTS1
PC10 [21:20] 00 = Input 01 = Output
10 = DATA26 11 = nRTS1
PC9 [19:18] 00 = Input 01 = Output
10 = DATA25 11 = nXDREQ1
PC8 [17:16] 00 = Input 01 = Output
10 = DATA24 11 = nXDACK1
PC7 [15:14] 00 = Input 01 = Output
10 = DATA23 11 = VD4
PC6 [13:12] 00 = Input 01 = Output
10 = DATA22 11 = VD5
PC5 [11:10] 00 = Input 01 = Output
10 = DATA21 11 = VD6
PC4 [9:8] 00 = Input 01 = Output
10 = DATA20 11 = VD7
PC3 [7:6] 00 = Input 01 = Output
10 = DATA19 11 = IISCLK
PC2 [5:4] 00 = Input 01 = Output
10 = DATA18 11 = IISDI
PC1 [3:2] 00 = Input 01 = Output
10 = DATA17 11 = IISDO
PC0 [1:0] 00 = Input 01 = Output
10= DATA16 11 = IISLRCK
數據寄存器位描述
PC[15:0] [15:0] 當埠配置為輸入口時,該位的值是對應腳的狀態
當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
上拉電阻配置寄存器位描述
PC[15:0] [15:0] 0: 允許上拉電阻連接到對應腳
1: 不允許.
4 PORT D 控制寄存器
PCOND 0x01D2001C R/W port D的配置初始值0x0000
PDATD 0x01D20020 R/W port D的數據寄存器初始值Undef.
PUPD 0x01D20024 R/W port D的上拉電阻配置寄存器初始值0x0
位名稱BIT 描述
PD7 [15:14] 00 = Input 01 = Output
10 = VFRAME 11 = Reserved
PD6 [13:12] 00 = Input 01 = Output
10 = VM 11 = Reserved
PD5 [11:10] 00 = Input 01 = Output
10 = VLINE 11 = Reserved
PD4 [9:8] 00 = Input 01 = Output
10 = VCLK 11 = Reserved
PD3 [7:6] 00 = Input 01 = Output
10 = VD3 11 = Reserved
PD2 [5:4] 00 = Input 01 = Output
10 = VD2 11 = Reserved
PD1 [3:2] 00 = Input 01 = Output
10 = VD1 11 = Reserved
PD0 [1:0] 00 = Input 01 = Output
10= VD0 11 = Reserved
數據寄存器位描述
PD[15:0] [15:0] 當埠配置為輸入口時,該位的值是對應腳的狀態
當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
上拉電阻配置寄存器位描述
PD[15:0] [15:0] 0: 允許上拉電阻連接到對應腳
1: 不允許.
5 PORT E 控制寄存器
PCONE 0x01D20028 R/W port E的配置初始值0x00
PDATE 0x01D2002C R/W port E的數據寄存器初始值Undef.
PUPE 0x01D20030 R/W port E的上拉電阻配置寄存器初始值0x00
位名稱BIT 描述
PE8 [17:16] 00 = Reserved(ENDIAN) 01 = Output
10 = CODECLK 11 = Reserved
PE7 [15:14] 00 = Input 01 = Output
10 = TOUT4 11 = VD7
PE6 [13:12] 00 = Input 01 = Output
10 = TOUT3 11 = VD6
PE5 [11:10] 00 = Input 01 = Output
10 = TOUT2 11 = TCLK in
PE4 [9:8] 00 = Input 01 = Output
10 = TOUT1 11 = TCLK in
PE3 [7:6] 00 = Input 01 = Output
10 = TOUT0 11 = Reserved
PE2 [5:4] 00 = Input 01 = Output
10 = RxD0 11 = Reserved
PE1 [3:2] 00 = Input 01 = Output
10 = TxD0 11 = Reserved
PE0 [1:0] 00 = Input 01 = Output
10= Fpllo out 11 = Fout out
數據寄存器位描述
PE[8:0] [8:0] 當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
上拉電阻配置寄存器位描述
PE[7:0] [7:0] 0: 允許上拉電阻連接到對應腳
1: 不允許.
PE8沒有可編程的上拉電阻
6 PORT F 控制寄存器
PCONF 0x01D20034 R/W port F的配置初始值0x0000
PDATF 0x01D20038 R/W port F的數據寄存器初始值Undef.
PUPF 0x01D2003C R/W port F的上拉電阻配置寄存器初始值0x000
位名稱BIT 描述
PF8 [21:19] 000 = Input 001 = Output 010 = nCTS1
011 = SIOCLK 100 = IISCLK Others = Reserved
PF7 [18:16] 000 = Input 001 = Output 010 = RxD1
011 = SIORxD 100 = IISDI Others = Reserved
PF6 [15:13] 000 = Input 001 = Output 010 = TxD1
011 = SIORDY 100 = IISDO Others = Reserved
PF5 [12:10] 000 = Input 001 = Output 010 = nRTS1
011 = SIOTxD 100 = IISLRCK Others = Reserved
PF4 [9:8] 00 = Input 01 = Output
10 = nXBREQ 11 = nXDREQ0
PF3 [7:6] 00 = Input 01 = Output
10 = nXBACK 11 = nXDACK0
PF2 [5:4] 00 = Input 01 = Output
10 = nWAIT 11 = Reserved
PF1 [3:2] 00 = Input 01 = Output
10 = IICSDA 11 = Reserved
PF0 [1:0] 00 = Input 01 = Output
10= IICSCL 11 =Reserved
數據寄存器位描述
PF[8:0] [8:0] 當埠配置為輸入口時,該位的值是對應腳的狀態
當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
上拉電阻配置寄存器位描述
PF[8:0] [8:0] 0: 允許上拉電阻連接到對應腳
1: 不允許.
7 PORT G 控制寄存器
PCONG 0x01D20040 R/W port G的配置初始值0x0
PDATG 0x01D20044 R/W port G的數據寄存器初始值Undef.
PUPG 0x01D20048 R/W port G的上拉電阻配置寄存器初始值0x0
位名稱BIT 描述
PG7 [15:14] 00 = Input 01 = Output
10 =IISLRCK 11 = EINT7
PG6 [13:12] 00 = Input 01 = Output
10 = IISDO 11 = EINT6
PG5 [11:10] 00 = Input 01 = Output
10 = IISDI 11 = EINT5
PG4 [9:8] 00 = Input 01 = Output
10 = IISCLK 11 = EINT4
PG3 [7:6] 00 = Input 01 = Output
10 = nRTS0 11 = EINT3
PG2 [5:4] 00 = Input 01 = Output
10 = nCTS0 11 = EINT2
PG1 [3:2] 00 = Input 01 = Output
10 = VD5 11 = EINT1
PG0 [1:0] 00 = Input 01 = Output
10 = VD4 11 = EINT0
數據寄存器位描述
PG[7:0] [7:0] 當埠配置為輸入口時,該位的值是對應腳的狀態
當埠配置為輸出口時,對應腳的狀態和該位的值相同
當埠配置作為功能腳時,如果讀該位的值,將是一個不確定的值
上拉電阻配置寄存器位描述
PG[7:0] [7:0] 0: 允許上拉電阻連接到對應腳
1: 不允許.
8 上拉電阻控制寄存器控制D[15:0]腳的上拉電阻。
SPUCR 0x01D2004C R/W 上拉電阻控制寄存器初始值0x4
位名稱BIT 描述
HZ@STOP [2] 0 =在停止模式存儲器的控制信號保持先前的狀態
1 = 控制信號保持高阻狀態
SPUCR1 [1] 0 = DATA[15:8] 上拉電阻允許
1 = DATA[15:8] 上拉電阻不允許
SPUCR0 [0 0 = DATA[7:0] 上拉電阻允許
1 = DATA[7:0] 上拉電阻不允許
8 外部中斷控制寄存器
EXTINT 0x01D20050 R/W 外部中斷控制寄存器初始值0x000000
位名稱BIT 描述
EINT7 [30:28] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT6 [26:24]. 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT5 [22:20] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT4 [18:16] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT3 [14:12] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT2 [10:8] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT1 [6:4] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
EINT0 [2:0] 000 = 低電平觸發001 =高電平中斷
01x = 下降沿觸發10x = 上升沿觸發
11x =雙邊沿觸發
9 外部中斷掛起寄存器
外部中斷請求4、5、6、7通過或邏輯公用一個中斷請求線。
EXTINTPND 0x01D20054 R/W 外部中斷掛起寄存器初始值0x00
位名稱BIT 描述
EXTINTPND3 [3] 如果EINT7激活, EXINTPND3設置為1, INTPND[21] 也設置為1
EXTINTPND2 [2] 如果EINT6激活, EXINTPND2設置為1, INTPND[21]也設置1 EXTINTPND1 [1] 如果EINT5激活, EXINTPND1設置為1, INTPND[21]也設置1 EXTINTPND0 [0] 如果EINT4激活, EXINTPND0設置為1, INTPND[21]也設置為1
中斷服務線程必須在清除外部掛起條件EXTINTPND后清除中斷掛起條件(INTPND),EXTINTPND通過寫入1來清除。
9 PWM TIMER
S3C44B0X有六個16位定時器,每個可以以中斷模式或DMA模式來工作。定時器0、1、2、3、4有PWM功能,定時器5是一個內部定時器沒有輸出腳。定時器0有一個DEAD ZONE 產生器
定時器0、1共享一個8位預定標器,定時器2、3共享另一個8位預定標器,定時器4、5也共享一個8位預定標器。定時器0、1、2、3有一個時鐘除法器 (1/2, 1/4, 1/8, 1/16, 1/32). 定時器4、5有一個時鐘除法器(1/2, 1/4, 1/8, 1/16)和一個輸入時鐘TCLK/EXTCLK.
每個定時器從時鐘除法器接收時鐘輸入,而時鐘除法器的輸入時鐘為相應的預定標器
每個定時器有一個計數緩衝寄存器,保持定時器的計數初始值,當定時器允許和它的向下計數器計到0時,該初始值重新載入到定時器的向下計數器,併產生中斷請求。每個定時器還有一個比較緩衝寄存器,初始值載入到定時器的比較寄存器,當比較寄存器的值與定時器的向下計數器值相同時,定時器控制邏輯改變TOUT的輸出電平。
由於雙緩衝特徵。TCMPn和TCNTBn可以隨時載入,在下一個定時周期起作用。
8位預定標器和4位時鐘除法器可以形成下列除出頻率
4-bit divider settings (prescaler = 1) (prescaler = 255) (TCNTBn = 65535)
1/2 ( MCLK = 66 MHz ) 0.030 us (33.0 MHz ) 7.75 us (58.6 KHz ) 0.50 sec
1/4 ( MCLK = 66 MHz ) 0.060 us (16.5 MHz ) 15.5 us (58.6 KHz ) 1.02 sec
1/8 ( MCLK = 66 MHz ) 0.121 us (8.25 MHz ) 31.0 us (29.3 KHz ) 2.03 sec
1/16 ( MCLK = 66 MHz) 0.242 us (4.13 MHz) 62.1 us (14.6 KHz ) 4.07 sec
1/32 ( MCLK = 66 MHz) 0.485 us (2.06 MHz) 125 us (7.32 KHz ) 8.13 sec
無論何時和定時器是否運行,TOUT 反轉器的on/off 位變化,TOUT邏輯都變化。
DEAD ZONE 產生器
DEAD ZONE 產生器使TOUT0 和nTOUT0(TOUT0的反轉信號)輸出不能同時打開,而是之間有一個小的間隙。
DMA 請求模式
PWM定時器能在規定時間產生一個DMA請求,定時器在收到ACK信號之前一直保持DMA請求信號為低。通過設置TCFG1寄存器,6個定時器之一能產生一個DMA請求,不在產生中斷請求。
DMA mode DMA request 配置
DMA mode DMA request
0000 No select
0001 Timer0
0010 Timer1
0011 Timer2
0100 Timer3
0101 Timer4
0110 Timer5
0111 No select
定時器控制寄存器
1 定時器配置寄存器0
TCFG0 0x01D50000 R/W 三個8位預定標器的配置初始值0x00000000
位名稱BIT 描述
Dead zone length [31:24] 這8 位確定dead zone的長度. dead zone的長度的一個時間單位與定時器0的一個時間單位相等.
Prescaler 2 [23:16] 這8位確定定時器4、5的預定標器的值
Prescaler 1 [15:8] 這8位確定定時器2、3的預定標器的值
Prescaler 0 [7:0] 這8位確定定時器0、1的預定標器的值
2 定時器配置寄存器1
TCFG1 0x01D50004 R/W MUX和DMA模式選擇寄存器初始值0x00000000
位名稱BIT 描述
DMA mode [27:24] 選擇DMA請求通道
0000 = No select (all interrupt) 0001 = Timer0
0010 = Timer1 0011 = Timer2
0100 = Timer3 0101 = Timer4
0110 = Timer5 0111 = Reserved
MUX 5 [23:20] 選擇定時器5的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = EXTCLK
MUX 4 [19:16] 選擇定時器4的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = TCLK
MUX 3 [15:12] 選擇定時器3的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = 1/32
MUX 2 [11:8] 選擇定時器2的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = 1/32
MUX 1 [7:4] 選擇定時器1的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = 1/32
MUX 0 [3:0] 選擇定時器0的MUX輸入.
0000 = 1/2 0001 = 1/4 0010 = 1/8
0011 = 1/16 01xx = 1/32
3 定時器控制寄存器
TCON 0x01D50008 R/W 定時器控制寄存器初始值0x00000000
位名稱BIT 描述
Timer 5 auto reload on/off [26] 這位確定定時器5的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 5 manual update [25] 這位確定定時器5的手動更新
0 = No operation 1 = Update TCNTB5
Timer 5 start/stop [24] 這位確定定時器5的啟動/停止.
0 = Stop 1 = Start for Timer 5
Timer 4 auto reload on/off [23] 這位確定定時器4的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 4 outputinverter on/off [22] 這位確定定時器4的輸出反轉器的開/關
0 = Inverter off 1 = Inverter on for TOUT4
Timer 4 manual update [21] 這位確定定時器4的手動更新
0 = No operation 1 = Update TCNTB4,TCMPB4
Timer 4 start/stop [20] 這位確定定時器5的啟動/停止.
0 = Stop 1 = Start for Timer 4
Timer 3 auto reload on/off [19] 這位確定定時器3的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 3 outputinverter on/off [18] 這位確定定時器3的輸出反轉器的開/關
0 = Inverter off 1 = Inverter on for TOUT3
Timer 3 manual update [17] 這位確定定時器3的手動更新
0 = No operation 1 = Update TCNTB3,TCMPB3
Timer 3 start/stop [16] 這位確定定時器3的啟動/停止.
0 = Stop 1 = Start for Timer 3
Timer 2 auto reload on/off [15] 這位確定定時器2的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 2 outputinverter on/off [14] 這位確定定時器2的輸出反轉器的開/關
0 = Inverter off 1 = Inverter on for TOUT2
Timer 2 manual update [13] 這位確定定時器2的手動更新
0 = No operation 1 = Update TCNTB2,TCMPB2
Timer 2 start/stop [12] 這位確定定時器2的啟動/停止.
0 = Stop 1 = Start for Timer 2
Timer 1 auto reload on/off [11] 這位確定定時器1的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 1 outputinverter on/off [10] 這位確定定時器1的輸出反轉器的開/關
0 = Inverter off 1 = Inverter on for TOUT1
Timer 1 manual update [9] 這位確定定時器1的手動更新
0 = No operation 1 = Update TCNTB1,TCMPB1
Timer 1 start/stop [8] 這位確定定時器1的啟動/停止.
0 = Stop 1 = Start for Timer 1
Dead zone enable [4] 這位確定dead zone的操作.
0 = Disable 1 = Enable
Timer 0 auto reload on/off [4] 這位確定定時器0的自動載入的開/關
0 = One-shot 1 = Interval mode (auto reload)
Timer 0 outputinverter on/off [3] 這位確定定時器0的輸出反轉器的開/關
0 = Inverter off 1 = Inverter on for TOUT0
Timer 0 manual update [2] 這位確定定時器0的手動更新
0 = No operation 1 = Update TCNTB0,TCMPB0
Timer 0 start/stop [1] 這位確定定時器0的啟動/停止.
0 = Stop 1 = Start for Timer 0
4 定時器0計數/比較緩衝寄存器
TCNTB0 0x01D5000C R/W 定時器0計數緩衝寄存器初始值0x00000000
TCMPB0 0x01D50010 R/W 定時器0比較緩衝寄存器初始值0x00000000
5 定時器0計數觀察寄存器
TCNTO0 0x01D50014 R 定時器0計數觀察寄存器初始值0x00000000
6定時器1計數/比較緩衝寄存器
TCNTB1 0x01D50018 R/W 定時器1計數緩衝寄存器初始值0x00000000
TCMPB1 0x01D5001C R/W 定時器1比較緩衝寄存器初始值0x00000000
7 定時器1計數觀察寄存器
TCNTO1 0x01D50020 R 定時器1計數觀察寄存器初始值0x00000000
8 定時器2計數/比較緩衝寄存器
TCNTB2 0x01D50024 R/W 定時器2計數緩衝寄存器初始值0x00000000
TCMPB2 0x01D50028 R/W 定時器2比較緩衝寄存器初始值0x00000000
9 定時器2計數觀察寄存器
TCNTO2 0x01D5002C R 定時器2計數觀察寄存器初始值0x00000000
10 時器3計數/比較緩衝寄存器
TCNTB3 0x01D50030 R/W 定時器3計數緩衝寄存器初始值0x00000000
TCMPB3 0x01D50034 R/W 定時器3比較緩衝寄存器初始值0x00000000
11 定時器3計數觀察寄存器
TCNTO3 0x01D50038 R 定時器3計數觀察寄存器初始值0x00000000
12定時器4計數/比較緩衝寄存器
TCNTB4 0x01D5003C R/W 定時器4計數緩衝寄存器初始值0x00000000
TCMPB4 0x01D50040 R/W 定時器4比較緩衝寄存器初始值0x00000000
13 定時器4計數觀察寄存器
TCNTO4 0x01D50044 R 定時器4計數觀察寄存器初始值0x00000000
14 定時器5計數/比較緩衝寄存器
TCNTB5 0x01D50048 R/W 定時器5計數緩衝寄存器初始值0x00000000
15 定時器5計數觀察寄存器
TCNTO5 0x01D5004C R 定時器5計數觀察寄存器初始值0x00000000
10 UART
S3C44B0X UART單元提供了兩個非同步串口(SIO),每個SIO可以操作在中斷模式或DMA模式,支持波特率最大大115.2kbps, 每個SIO通道包含都有一個16位元組的接收與發送FIFO緩衝區.
UART 發送接收單元提供可編程的波特率,紅外發送/接收(IrDA 1.0), 一個開始位,一個或兩個停止位,5、6、7、8位數據位和奇偶校驗功能,波特率產生器可以有MCLK鍾控。
發送器也可以產生暫停條件,暫停條件強制串口輸出保持在邏輯0狀態比一場長的時間。
接收器可以檢測溢出錯誤,奇偶錯誤,frame 錯誤和暫停條件。其中每一個設置一個錯誤標誌。溢出錯誤在老的數據還沒有讀取新的數據到達,frame 錯誤是接收數據沒有有效的停止位,暫停條件指示RxDn輸入保持邏輯0狀態比一場長的時間。
當在FIFO模式接收緩衝區FIFO不為空時,在可以接收3個字的時間期間沒有接收到數據時接收超時。
自動流控制(AFC)
S3C44B0X的UART在UART連接UART時支持用nRTS 和nCTS信號進行自動流控制,在UART連接MODEM時不支持自動流控制,這時由軟體控制nRTS和nCTS信號。
在自動流控制時,nRTS由接收條件控制,發送運行由nCTS信號控制,發送時當nCTS信號有效時(意味著對方的UART準備好接收數據),發送器傳輸數據到FIFO中。在接收數據時,當FIFO有多於兩個位元組的空間時,nRTS激活(指示接收FIFO準備好接收數據),FIFO剩餘空間在一個位元組以下時 nRTS無效。
在非自動流控制操作時:
接收操作:1 選擇接收模式(中斷或BDMA)
2 檢查在UFSTATn寄存器中的Rx FIFO計數值,如果值小於15,用戶必須設置UMCONn[0]為1(激活nRTS),否則設置UMCONn[0]為0(不激活nRTS)。
3 重複步驟2
發送操作: 1 選擇發送模式(中斷或BDMA)
2 檢查UMSTATn[0]的值,如果值為1(nCTS激活),用戶可以發送數據到發送緩衝區或發送FIFO寄存器。
每個UART有七個狀態:溢出錯誤,奇偶錯誤,frame 錯誤和暫停條件,接收FIFO/緩衝準備好,發送FIFO/緩衝為空,發送移位寄存器為空。這些狀態由UART狀態寄存器指示。
溢出錯誤,奇偶錯誤,frame 錯誤和暫停條件作為接收錯誤狀態可以引起接收錯誤中斷請求。
如果在中斷模式,當接收器傳送接收移位寄存器的數據到接收FIFO時,激活FIFO滿狀態引起接收中斷。當發送器從發送FIFO傳送數據到發送移位寄存器后,發送FIFO空狀態激活引起發送中斷。
接收FIFO滿狀態和發送FIFO空狀態信號在DMA模式用來產生DMA請求。
中斷產生條件總結如下
類型FIFO模式非FIFO模式
Rx中斷1 FIFO滿狀態產生上時接收移位寄存器的數據滿時
2 接收超時時
Tx 中斷髮送FIFO空狀態激活每次發送數據完成時
Error中斷1 檢測到奇偶錯誤,frame 錯誤和暫停條件所有的錯誤立即產生一個中斷,如果
2當接收FIFO到達頂端時(溢出錯誤) 錯誤同時出現,只產生一個中斷
UART還有一個錯誤狀態FIFO,錯誤狀態FIFO指示在FIFO寄存器中的數據接收到一個錯誤。錯誤中斷僅在具有錯誤的數據準備讀出時產生。
波特率產生
時鐘源通過一個16分頻器和一個16位分頻器產生波特率時鐘。16位分頻器的值由UART 波特率分頻寄存器(UBRDIVn)規定,值從1到(2 16 -1).公式如下:
UBRDIVn = (round_off)(MCLK/(bps x 16) ) -1.
Loop-back 模式
在該模式,發送的數據立即被接收,主要用來測試。
IR (Infrared) 模式
S3C44B0X UART支持紅外發送和接收。
在紅外發送時,數據0的發送脈衝是位寬度的3/16。接收時,採樣脈衝是位時間的1/16,因此RX脈衝寬度必須大於採樣脈衝寬度。
UART 寄存器
1 UART線控制寄存器
ULCON0 0x01D00000 R/W UART0的線控制寄存器初始值0x00
ULCON1 0x01D04000 R/W UART1的線控制寄存器初始值0x00
位名稱BIT 描述
Reserved [7]
Infra-Red Mode [6] 該位確定是否使用紅外模式
0 = Normal mode operation
1 = Infra-Red Tx/Rx mode
Parity Mode [5:3] 該位確定奇偶如何產生和校驗
0xx = No parity 100 = Odd parity
101 = Even parity 110 = Parity forced/checked as 1
111 = Parity forced/checked as 0
stop bit [2] 該位確定停止位的個數
0 = One stop bit per frame
1 = Two stop bit per frame
Word length [1:0] 該位確定數據位的個數
00 = 5-bits 01 = 6-bits
11 = 7-bits 11 = 8-bits
2 UART控制寄存器
UCON0 0x01D00004 R/W UART0控制寄存器初始值0x00
UCON1 0x01D04004 R/W UART1控制寄存器初始值0x00
位名稱BIT 描述
Tx interrupt type [9] 發送中斷請求類型
0 = Pulse
1 = Level
Rx interrupt type [8] 接收中斷請求類型
0 = Pulse
1 = Level
Rx time out enable [7] 允許/不允許Rx超時中斷
0 = Disable 1 = Enable
Rx error status
interrupt enable [6] 允許/不允許UART錯誤中斷
0 = Do not generate receive error status interrupt
1 = Generate receive error status interrupt
Loop-back Mode [5] 該位為1使UART進入loop back 模式
0 = Normal operation
1 = Loop-back mode
Send Break Signal [4] 該位為1使UART發送一個暫停條件,該位在發送一個暫停信號后自動清除
0 = Normal transmit
1 = Send break signal
Transmit Mode [3:2] 這兩位確定哪個模式可以寫TX數據到UART發送保持寄存器
00 = Disable 01 = Interrupt request or polling mode
10 = BDMA0 request (Only for UART0)
11 = BDMA1 request (Only for UART1)
Receive Mode [1:0] 這兩位確定哪個模式可以從UART接收緩衝寄存器讀數據
00 = Disable, 01 = Interrupt request or polling mode
10 = BDMA0 request (Only for UART0)
11 = BDMA1 request (Only for UART1)
3 UART FIFO 控制寄存器
UFCON0 0x01D00008 R/W UART0 FIFO控制寄存器初始值0x00
UFCON1 0x01D04008 R/W UART1 FIFO控制寄存器初始值0x00
位名稱BIT 描述
Tx FIFO Trigger Level [7:6] 這兩位確定發送FIFO的觸發條件
00 = Empty 01 = 4-byte
10 = 8-byte 11 = 12-byte
Rx FIFO TriggerLevel [5:4] 這兩位確定接收FIFO的觸發條件
00 = 4-byte 01 = 8-byte
10 = 12-byte 11 = 16-byte
Reserved [3]
Tx FIFO Reset [2] TX FIFO複位位,該位在FIFO複位后自動清除
0 = Normal
1= Tx FIFO reset
Rx FIFO Reset [1] Rx FIFO複位位,該位在FIFO複位后自動清除
0 = Normal
1= Rx FIFO reset
FIFO Enable [0] 0 = FIFO disable
1 = FIFO mode
4 UART MODEM 控制寄存器
UMCON0 0x01D0000C R/W UART0 MODEM控制寄存器初始值0x00
UMCON1 0x01D0400C R/W UART1 MODEM控制寄存器初始值0x00
位名稱BIT 描述
Reserved [7:5] 這兩位必須為0
AFC(Auto Flow
Control) [4] AFC是否允許
0 = Disable 1 = Enable 0
Reserved [3:1] 這兩位必須為0
Request to Send [0] 如果AFC允許,該位忽略
0 = 'H' level(Inactivate nRTS)
1 = 'L' level(Activate nRTS)
5 UART TX/RX狀態寄存器
UTRSTAT0 0x01D00010 R UART0 TX/RX狀態寄存器初始值0x6
UTRSTAT1 0x01D04010 R UART1 TX/RX狀態寄存器初始值0x6
位名稱BIT 描述
Transmit shifter
Empty [2] 該位在發送移位寄存器沒有有效的數據或發送移位寄存器為空時為1
0 = Not empty
1 = Transmit holding & shifter register empty
Transmit buffer
Empty [1] 該位在發送緩衝寄存器沒有包含有效的數據為1
如果UART使用FIFO, 用戶應當檢查UFSTAT寄存器的Tx FIFO計數位和Tx FIFO滿標誌位代替檢查該位。
0 =The buffer register is not empty
1 = Empty
Receive buffer
data ready [0] 無論何時接收緩衝寄存器包含有效數據,該位為1
如果UART使用FIFO, 用戶應當檢查UFSTAT寄存器的Rx FIFO計數位代替檢查該位。
0 = Completely empty
1 = The buffer register has a received data
6 UART 錯誤狀態寄存器
UERSTAT0 0x01D00014 R UART0 錯誤狀態寄存器初始值0x6
UERSTAT1 0x01D04014 R UART1 錯誤狀態寄存器初始值0x6
位名稱BIT 描述
Break Detect [3] 該位為1指示一個暫停信號已經接收到
0 = No break receive
1 = Break receive
Frame Error [2] 該位為1指示一個frame 錯誤發生
0 = No frame error during receive
1 = Frame error
Parity Error [1] 該位為1指示在接收時一個奇偶錯誤發生
0 = No parity error during receive
1 = Parity error
Overrun Error [0] 該位為1指示一個溢出錯誤發生
0 = No overrun error during receive
1 = Overrun error
註:當UART錯誤狀態寄存器時,UERSATn[3:0]自動清除。
7 UART FIFO狀態寄存器
UFSTAT0 0x01D00018 R UART0 FIFO狀態寄存器初始值0x6
UFSTAT1 0x01D04018 R UART1 FIFO狀態寄存器初始值0x6
位名稱BIT 描述
Reserved [15:10]
Tx FIFO Full [9] 當發送FIFO滿時該位為1
0 = 0-byte ≤ Tx FIFO data ≤ 15-byte
1 = Full
Rx FIFO Full [8] 當發送FIFO滿時該位為1
0 = 0-byte ≤ Rx FIFO data ≤ 15-byte
1 = Full
Tx FIFO Count [7:4] Tx FIFO里的數據數量
Rx FIFO Count [3:0] Rx FIFO里的數據數量
8 UART MODEM狀態寄存器
UMSTAT0 0x01D0001C R UART0 MODEM狀態寄存器初始值0x6
UMSTAT1 0x01D0401C R UART1 MODEM狀態寄存器初始值0x6
位名稱BIT 描述
Delta CTS [4] 該位指示輸入到S3C44B0X的nCTS信號自從上次讀後已經改變狀態
0 = Has not changed
1 = Has changed
Reserved [3:1] Reserved
Clear to Send [0] 0 = CTS signal is not activated(nCTS pin is high)
1 = CTS signal is activated(nCTS pin is low)
9 UART 發送緩衝寄存器和FIFO寄存器
UTXH0 0x01D00020(Little endian) W(byte) UART0發送緩衝寄存器初始值-
0x01D00023(Big endian)
UTXH1 0x01D04020(Little endian) W(byte) UART1發送緩衝寄存器初始值-
0x01D04023(Big endian)
10 UART 接收緩衝寄存器和FIFO寄存器
URXH0 0x01D00024(Little endian) R(byte) UART0接收緩衝寄存器初始值-
0x01D00027(Big endian)
URXH1 0x01D04024(Little endian) R(byte) UART1接收緩衝寄存器初始值-
0x01D04027(Big endian)
注:當溢出錯誤出現時, URXHn,否則,即使USTATn的溢出位已經清除,下一個接收的數據也將使溢出錯誤出現.
11 UART 波特率分頻寄存器
UBRDIV0 0x01D00028 R/W UART0波特率分頻寄存器初始值-
UBRDIV1 0x01D04028 R/W UART1波特率分頻寄存器初始值-
11 INTERRUPT CONTROLLER
S3C44B0X的中斷控制器有30個中斷源。
S3C44B0X 支持新的中斷處理模式稱為(vectored interrupt mode),在多個中段請求發生時,由硬體優先順序邏輯確定應該有哪個中斷得到服務,同時硬體邏輯使中斷相量表的跳轉指令載入到(0X18或0X1C)位置,在該位置執行跳轉指令使程序跳到相應的中斷服務線程,因此相對與傳統的ARM的軟體方法能夠大大減少中斷進入延時。
分支指令機器代碼= 0xea000000 +((<destination address> - <vector address> - 0x8)>>2)
destination address為中斷服務線程ISR 的開始地址
vector address 為中斷源在中斷相量表中的地址,即分支指令所在地址。
分支指令機器代碼有硬體自動產生。
中斷源在中斷相量表中的位置如下
中斷源向量地址
EINT0 0x00000020
EINT1 0x00000024
EINT2 0x00000028
EINT3 0x0000002c
EINT4/5/6/7 0x00000030
INT_TICK 0x00000034
INT_ZDMA0 0x00000040
INT_ZDMA1 0x00000044
INT_BDMA0 0x00000048
INT_BDMA1 0x0000004c
INT_WDT 0x00000050
INT_UERR0/1 0x00000054
INT_TIMER0 0x00000060
INT_TIMER1 0x00000064
INT_TIMER2 0x00000068
INT_TIMER3 0x0000006c
INT_TIMER4 0x00000070
INT_TIMER5 0x00000074
INT_URXD0 0x00000080
INT_URXD1 0x00000084
INT_IIC 0x00000088
INT_SIO 0x0000008c
INT_UTXD0 0x00000090
INT_UTXD1 0x00000094
INT_RTC 0x000000a0
INT_ADC 0x000000c0
有兩種類型的中斷模式,FIQ (快速中斷)和IRQ.所有的中斷源在中斷請求時應該確定使用的中斷模式。
中斷源描述Master Group Slave ID
EINT0 外部中斷0 mGA sGA
EINT1 外部中斷1 mGA sGB
EINT2 外部中斷2 mGA sGC
EINT3 外部中斷3 mGA sGD
EINT4/5/6/7 外部中斷4/5/6/7 mGA sGKA
TICK RTC 定時器滴答中斷mGA sGKB
INT_ZDMA0 DMA0 中斷mGB sGA
INT_ZDMA1 DMA1 中斷mGB sGB
INT_BDMA0 橋DMA0 中斷mGB sGC
INT_BDMA1 橋DMA1 中斷mGB sGD
INT_WDT 看門狗定時器中斷mGB sGKA
INT_UERR0/1 UART0/1錯誤中斷mGB sGKB
INT_TIMER0 定時器0中斷mGC sGA
INT_TIMER1 定時器1中斷mGC sGB
INT_TIMER2 定時器2中斷mGC sGC
INT_TIMER3 定時器3中斷mGC sGD
INT_TIMER4 定時器4中斷mGC sGKA
INT_TIMER5 定時器5中斷mGC sGKB
INT_URXD0 UART0接收中斷mGD sGA
INT_URXD1 UART1接收中斷mGD sGB
INT_IIC IIC 中斷mGD sGC
INT_SIO SIO 中斷mGD sGD
INT_UTXD0 UART0發送中斷mGD sGKA
INT_UTXD1 UART1發送中斷mGD sGKB
INT_RTC RTC 警告中斷mGKA –
INT_ADC ADC 結束中斷mGKB –
中斷優先順序產生模塊
對於IRQ中斷請求有一個中斷優先順序產生模塊,如果中斷向量模式使用和一個中斷源被配置為ISQ中斷,中斷將被中斷優先順序產生模塊處理。中斷優先順序產生模塊處理包括五個單元:1個master單元,4個slave單元,每個slave單元管理6個中斷源,包括4個可編程的優先順序源(sGn)和2個固定優先順序源(sGKn,其優先順序在6個優先順序源中最低,其中sGKA的優先順序高於sGKB的優先順序).。一個master單元管理4個slave單元mGn和2個中斷源mGKn,用來確定4個slave單元,和2個中斷源的優先順序mGKn,其中4個slave單元的優先順序次序可編程,其中的2個中斷源 INT_RTC 和INT_ADC中斷源在26個中斷源中優先順序最低,並且INT_RTC的優先順序高於INT_ADC的優先順序。
中斷寄存器
1 中斷控制寄存器
INTCON 0x01E00000 R/W 中斷控制寄存器0x7
位名稱BIT 名稱
Reserved [3]
V [2] 該位允許IRQ使用向量模式
0 = Vectored interrupt mode
1 = Non-vectored interrupt mode
I [1] 該位允許IRQ中斷
0 = IRQ interrupt enable
1 = Reserved
注:在使用IRQ中斷之前該位必須清除
F [0] 該位允許FIQ中斷
0 = FIQ interrupt enable (FIQ中斷不支持向量中斷模式)
1 = Reserved
注: 在使用FIQ中斷之前該位必須清除
1 中斷掛起寄存器
INTPND 0x01E00004 R/W 指示中斷請求狀態0x0000000
位名稱BIT 名稱
EINT0

1 中斷掛起寄存器
INTPND 0x01E00004 R/W 指示中斷請求狀態0x0000000
位名稱BIT 名稱
EINT0 [25] 0 = Not requested, 1 = Requested
EINT1 [24] 0 = Not requested, 1 = Requested
EINT2 [23] 0 = Not requested, 1 = Requested
EINT3 [22] 0 = Not requested, 1 = Requested
EINT4/5/6/7 [21] 0 = Not requested, 1 = Requested
INT_TICK [20] 0 = Not requested, 1 = Requested
INT_ZDMA0 [19] 0 = Not requested, 1 = Requested
INT_ZDMA1 [18] 0 = Not requested, 1 = Requested
INT_BDMA0 [17] 0 = Not requested, 1 = Requested
INT_BDMA1 [16] 0 = Not requested, 1 = Requested
INT_WDT [15] 0 = Not requested, 1 = Requested
INT_UERR0/1 [14] 0 = Not requested, 1 = Requested

INT_TIMER0 [13] 0 = Not requested, 1 = Requested

INT_TIMER1 [12] 0 = Not requested, 1 = Requested

INT_TIMER2 [11] 0 = Not requested, 1 = Requested

INT_TIMER3 [10] 0 = Not requested, 1 = Requested

INT_TIMER4 [9] 0 = Not requested, 1 = Requested

INT_TIMER5 [8] 0 = Not requested, 1 = Requested

INT_URXD0 [7] 0 = Not requested, 1 = Requested

INT_URXD1 [6] 0 = Not requested, 1 = Requested

INT_IIC [5] 0 = Not requested, 1 = Requested

INT_SIO [4] 0 = Not requested, 1 = Requested

INT_UTXD0 [3] 0 = Not requested, 1 = Requested

INT_UTXD1 [2] 0 = Not requested, 1 = Requested

INT_RTC [1] 0 = Not requested, 1 = Requested

INT_ADC [0] 0 = Not requested, 1 = Requested

3 中斷模式寄存器

INTMOD 0x01E00008 R/W 中斷模式寄存器0x0000000

位名稱BIT 名稱

EINT0 [25] 0 = IRQ mode 1 = FIQ mode

EINT1 [24] 0 = IRQ mode 1 = FIQ mode

EINT2 [23] 0 = IRQ mode 1 = FIQ mode

EINT3 [22] 0 = IRQ mode 1 = FIQ mode

EINT4/5/6/7 [21] 0 = IRQ mode 1 = FIQ mode

INT_TICK [20] 0 = IRQ mode 1 = FIQ mode

INT_ZDMA0 [19] 0 = IRQ mode 1 = FIQ mode

 

INT_ZDMA1 [18] 0 = IRQ mode 1 = FIQ mode

INT_BDMA0 [17] 0 = IRQ mode 1 = FIQ mode

INT_BDMA1 [16] 0 = IRQ mode 1 = FIQ mode

INT_WDT [15] 0 = IRQ mode 1 = FIQ mode

INT_UERR0/1 [14] 0 = IRQ mode 1 = FIQ mode

INT_TIMER0 [13] 0 = IRQ mode 1 = FIQ mode

INT_TIMER1 [12] 0 = IRQ mode 1 = FIQ mode

INT_TIMER2 [11] 0 = IRQ mode 1 = FIQ mode

INT_TIMER3 [10] 0 = IRQ mode 1 = FIQ mode

INT_TIMER4 [9] 0 = IRQ mode 1 = FIQ mode

INT_TIMER5 [8] 0 = IRQ mode 1 = FIQ mode

INT_URXD0 [7] 0 = IRQ mode 1 = FIQ mode

INT_URXD1 [6] 0 = IRQ mode 1 = FIQ mode

INT_IIC [5] 0 = IRQ mode 1 = FIQ mode

INT_SIO [4] 0 = IRQ mode 1 = FIQ mode

INT_UTXD0 [3] 0 = IRQ mode 1 = FIQ mode

INT_UTXD1 [2] 0 = IRQ mode 1 = FIQ mode

INT_RTC [1] 0 = IRQ mode 1 = FIQ mode

INT_ADC [0] 0 = IRQ mode 1 = FIQ mode

3 中斷屏蔽寄存器

INTMSK 0x01E0000C R/W 確定哪個中斷源被屏蔽,屏蔽的中斷源將不被服務0x07ffffff

位名稱BIT 描述

Reserved [27]

Global [26] 0 = Service available 1 = Masked

EINT0 [25] 0 = Service available 1 = Masked

EINT1 [24] 0 = Service available 1 = Masked

EINT2 [23] 0 = Service available 1 = Masked

EINT3 [22] 0 = Service available 1 = Masked

EINT4/5/6/7 [21] 0 = Service available 1 = Masked

INT_TICK [20] 0 = Service available 1 = Masked

INT_ZDMA0 [19] 0 = Service available 1 = Masked

INT_ZDMA1 [18] 0 = Service available 1 = Masked

INT_BDMA0 [17] 0 = Service available 1 = Masked

INT_BDMA1 [16] 0 = Service available 1 = Masked

INT_WDT [15] 0 = Service available 1 = Masked

INT_UERR0/1 [14] 0 = Service available 1 = Masked

INT_TIMER0 [13] 0 = Service available 1 = Masked 1

INT_TIMER1 [12] 0 = Service available 1 = Masked

INT_TIMER2 [11] 0 = Service available 1 = Masked

INT_TIMER3 [10] 0 = Service available 1 = Masked

INT_TIMER4 [9] 0 = Service available 1 = Masked

INT_TIMER5 [8] 0 = Service available 1 = Masked

INT_URXD0 [7] 0 = Service available 1 = Masked

INT_URXD1 [6] 0 = Service available 1 = Masked

 

INT_IIC [5] 0 = Service available 1 = Masked

INT_SIO [4] 0 = Service available 1 = Masked

INT_UTXD0 [3] 0 = Service available 1 = Masked

INT_UTXD1 [2] 0 = Service available 1 = Masked

INT_RTC [1] 0 = Service available 1 = Masked

INT_ADC [0] 0 = Service available 1 = Masked

3 IRQ中斷向量模式寄存器

寄存器地址讀/寫描述初始值

I_PSLV 0x01E00010 R/W 確定slave組的IRQ優先順序0x1b1b1b1b

I_PMST 0x01E00014 R/W master寄存器的IRQ優先順序0x00001f1b

I_CSLV 0x01E00018 R 當前slave寄存器的IRQ優先順序0x1b1b1b1b

I_CMST 0x01E0001C R 當前master寄存器的IRQ優先順序0x0000xx1b

I_ISPR 0x01E00020 R IRQ中斷服務掛起寄存器

(同時僅能一個服務位被設置) 0x00000000

I_ISPC 0x01E00024 W IRQ中斷服務清除寄存器Undef.

F_ISPC 0x01E0003C W FIQ 中斷服務清除寄存器Undef.

(對I_ISPC/ F_ISPC寫入1,INTPND 將被自動清除)

在ISR中斷服務線程的結束,INTPND必須清除。

為了清除I_ISPC/F_ISPC,應該遵守如下兩個規則:

1 I_ISPC/F_ISPC寄存器僅能在ISR中斷服務線程中存取。

2 通過寫I_ISPC/F_ISPC寄存器來清除I_ISPR/INTPND寄存器

如果不遵守這兩個規則,在中斷請求發生時,I_ISPR/INTPND寄存器可以為0。

I_PSLV的位描述

位名稱BIT 描述

PSLAVE@mGA [31:24] 確定mGA中的sGA, B, C, D的優先順序

每個sGn必須有不同的優先順序

PSLAVE@mGB [23:16] 確定mGB中的sGA, B, C, D的優先順序

每個sGn必須有不同的優先順序

PSLAVE@mGC [15:8] 確定mGC中的sGA, B, C, D的優先順序

每個sGn必須有不同的優先順序

PSLAVE@mGD [7:0] 確定mGD中的sGA, B, C, D的優先順序

每個sGn必須有不同的優先順序

PSLAVE@mGA BIT 描述初始值

sGA (EINT0) [31:30] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 00

sGB (EINT1) [29:28] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 01

sGC (EINT2) [27:26] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 10

sGD (EINT3) [25:24] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 11

PSLAVE@mGB

sGA (INT_ZDMA0) [23:22] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 00

sGB (INT_ZDMA1) [21:20] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 01

sGC (INT_BDMA0) [19:18] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 10

sGD (INT_BDMA1) [17:16] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 11

PSLAVE@mGC

sGA (TIMER0) [15:14] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 00

sGB (TIMER1) [13:12] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 01

sGC (TIMER2) [11:10] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 10

sGD (TIMER3) [9:8] 00: 1 st 01: 2 nd 10: 3 rd 11: 4 th 11

PSLAVE@mGD

sGA (INT_URXD0) [7:6] 00: 1 st 01: 2 nd 10: 3 rd




[admin via 研發互助社區 ] S3C44B0 寄存器描述已經有1294次圍觀

http://cocdig.com/docs/show-post-42932.html