940 likes | 1.21k Views
第 4 章 S3C44B0X 硬件结构及功能. 本章主要介绍了 S3C44B0X 的体系结构及各种功能接口,主要包括以下内容: 1. 存储器管理 2. 系统总线及时钟 3. 中断管理 4.DMA 、 I/O 口、定时器、 A/D 、 I2C 、 SPI 等接口结构. 4.3 时钟和功耗管理. 4.3.1 概述
E N D
第4章 S3C44B0X硬件结构及功能 本章主要介绍了S3C44B0X的体系结构及各种功能接口,主要包括以下内容: 1.存储器管理 2.系统总线及时钟 3.中断管理 4.DMA、I/O口、定时器、A/D、I2C、 SPI等接口结构
4.3 时钟和功耗管理 4.3.1 概述 S3C44B0X 的时钟产生器可以为 CPU 产生要求的时钟信号,同样也为外设提供了时钟信号。时钟产生器可以通过软件来控制是否为每个外部设备模块提供时钟信号,或者切断与外部设备的联系,以减少功耗。 同样在软件的控制下,S3C44B0X 提供各种功耗管理办法来为各种应用提供最优化的功耗方案。
S3C44B0X的时钟源可以用外部晶体来产生,也可以直接输入外部时钟,这由OM[3:2]的状态决定。M[3:2]的状态在nRESET的上升沿由OM3 和OM2脚的电平决定。M[3:2]=00 Crystal clock M[3:2]=01 外部时钟。其它测试模式在复位后PLL启动,但在用S/W指令设置PLLCON为有效的值之前,PLL OUTPUT (FOUT)不能使用,这时FOUT直接输出Crystal clock或外部时钟。 如果S3C44B0X的PLL的时钟源使用晶体,这时EXTCLK能作为Timer 5的时钟源TCLK。
S3C44B0X 中的功耗管理提供5种模式: 1.正常模式 正常模式下,时钟发生器提供时钟给 CPU,并同时提供给 S3C44B0X 的外设。在这种情况下,当所有的外设都开启工作时,处理器所消耗的功耗最大。 用户可以通过软件来控制外事的操作模式。例如,如果定时器和 DMA 不需要时钟,则用户可以断开定时器和 DMA 的时钟供给以降低功耗。
2. 慢速模式 慢速模式是一种非倍频模式。与正常模式下不同,慢速模式直接采用外部时钟作为S3C44B0X 的主工作时钟,而不使用内部倍频器。在这种情况下,功耗的大小仅依据于外部时钟的频率的大小。PLL 部件所消耗的功耗不用计算在内了。 3. 空闲模式 空闲模式下仅断开对 CPU 内核的时钟供给,而保留所有对于外部设备的时钟供给。在空闲模式下,CPU 内核的功耗可以减去。任何中断请求都会使 CPU 从空闲模式中醒来。
4. 停止模式 停止模式通过禁止 PLL 来冻结所有 CPU 内核、外设的时钟。这时的功耗大小仅由 S3C44B0X 内部的漏电流大小决定,这个电流一般小于 10uA。要使 CPU 从停止模式中醒来,可以通过外部中断实现。 5. LCD 的SL 空闲模式 SL 空闲模式的进入将导致 LCD 控制器开始工作。在这种情况下,除了 LCD 控制器以外 CPU 内核和其它外设的时钟都停止了。因此,SL 空闲模式下的功耗比空闲模式的功耗小。
4.3.2 寄存器定义 1. PLL控制寄存器 该寄存器设置PLL参数. PLL输出频率计算公式如下: Fpllo = (m * Fin)/(p * 2s) 其中m = (MDIV + 8),p = (PDIV + 2),s = SDIV ,Fpllo必须大于20MHZ且少于66MHZ,Fpllo * 2s必须少于170MHZ,Fin/p推荐为1MHZ 或大于,但小于2MHZ,其中MDIV、PDIV、SDIV定义如表4-12所示。
2. 时钟控制寄存器 时钟控制寄存器如表4-13所示。
4.4 CPU Wrapper和总线特性 4.4.1 概述 处理器 wrapper 包括一个cache、写入缓冲器和CPU内核。总线仲裁逻辑决定每个总线占用者的优先权。 处理器 wrapper 有一个8k直接的内部存储器。内部存储器可以以3种方式采用。 第一是 8k 字节的存储空间作为 8k 字节的统一(指令或数据)cache(高速缓冲存储器)。 第二,内部存储器可以用作一个 4k 字节的统一 cache 和一个 4k 字节的内部 SRAM。 第三,内部存储器可以整个地用作 8k字节的内部 SRAM。
内部统一(指令或数据)cache 采用 4 种方式与某个 4 个字(16 个字节)的行建立链接结构。它采用一种写穿式(write-through)的原则保持数据的一致性。当在 cache 中找不到相应的内容(称为 cache miss),4 个字的存储内容从外部存储器连续地取得。它采用一种 LRU(最近使用最少)算法来提升命中的比率。统一 cache 通过有区别的方式来处理指令和数据。
内部 SRAM 主要用来减少 ISR 的执行时间。由于内部 SRAM 具有最短的操作时间,因此能够减少 ISR 的执行时间。当然 ISR 在 SRAM 运行也是非常有效率的因为大多数的 ISR 代码都会引起cache miss。 总线仲裁逻辑可以决定总线占用者的优先级。总线仲裁逻辑支持一种 round-robin 优先级模式和一种固定的优先级模式。同样 LCD_DMA, BDMA, ZDMA, nBREQ(外部总线控制器)之间的优先级可以通过软件来修改。
4.4.2内部SRAM S3C44B0X 具有一个最小 8KB 的 4 组相连 cache 或内部 SRAM。如果内部 SRAM 为 4KB,另外 4KB 内部存储器可以用来作为 2 组相连 cache。内部 SRAM 的存储器操作周期为 1MCLK。 在每一个组的存储空间内,地址是连续增加的,在 TAG/LRU中的地址按照 16 字节增加。不要对内部地址空间:0x10003004~0x1000300f 进行操作。 SYSCFG配置寄存器如表4-16所示。
4.4.3总线优先级 在 S3C44B0X 中,有 7 种总线 master,LCD_DMA, BDMA0, BDMA1, ZDMA0, ZDMA1, Nbreq(外部总线 master)和 CPU wrapper。复位之后,这些总线 master 的优先级排列如下:
LCD_DMA, ZDMA, BDMA之间的总线优先级是可编程的,可以通过 SBUSCON 寄存器来设置。 如果不考虑 SBUSCON 的设置 CPUwrapper 始终具有最低的优先级。 Round-robin 优先级模式或固定优先级模式是可以选择的。在 round-robin 优先级模式中,已经被服务过依次的总线占有者将具有最低的优先级。通过这种方式,使得所有的 master 都具有相同的优先级。 在固定优先级模式下,每个总线 master 的优先级都写在 SBUSCON 中,SBUSCON 寄存器决定第1到第4个优先级的总线master。
4.4.4写缓冲区操作 写缓冲区操作,S3C44B0X 有 4 个写缓冲区寄存器来提高存储器的写性能。当写缓冲器模式使能,CPU 不再将数据直接写入外部存储器而是将数据写入写缓存区。即便是外部总线已经有其它 master占用,例如 DMA操作的情况下,也如此。 写缓冲区模块在系统总线没有被别的更高优先级的 master 占用时,将数据写入外部存储器。这样,CPU 的性能就提高了,因为 CPU 不需要一直等到写操作结束。 写缓冲区具有 4 个寄存器。每个寄存器包括一个 32 位数据区域,28 位的地址区域和 2 位的状态区域,如图4-4所示。
4.4.5特殊寄存器 1.SYSCFG寄存器 SYSCFG 寄存器控制了系统的总体操作,如表4-17所示。 2. SBUSCON寄存器 SBUSCON寄存器是系统总线优先级控制寄存器,如表4-18所示。
4.5 DMA控制器 4.5.1 简述 1. DMA控制器结构 S3C44B0X有4路DMA控制器,其中两路称为ZDMA(General DMA)被连到SSB(Samsung System Bus)总线上,另外两路称为BDMA(Bridge DMA)是SSB和SPB(Samsung Peripheral Bus)之间的接口层,相当于一个桥,因此称为桥DMA。 ZDMA和BDMA都可以由指令启动,也可以有内部外设和外部请求引脚来请求启动。ZDMA、BDMA结构如图4-5和图4-6所示。
ZDMA用来在存储器到存储器、存储器到I/O存储器、I/O装置到存储器之间传输数据。BDMA控制器只能在连到SPB上的I/O外设(如UART, IIS和SIO)与存储器之间传输数据。 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请求/应答协议: (1) 握手模式(Handshake Mode) 一个单独的应答对应一个单独的DMA请求,在该模式,DMA操作期间的读写周期不可分割,因此在一个DMA操作完成前,不能把总线让给其它总线控制器使用。一次nXDREQ请求引起一次DMA传输(可以是一个字节,一个半字或一个字)。
(2) 单步模式(Single Step Mode) 单步模式意味着一次DMA传输有两个DMA应答周期(产生两个应答信号nXDACK)指示DMA读和写周期,主要用与测试和调试模式,在读写周期之间,总线控制权可以让给其它总线控制器。 (3) 连续模式(Whole Service Mode) 在该模式,一次DMA请求将产生连续的DMA传输,直到规定的DMA传输数传输完,在DMA传输期间,nXDACK一直有效,DMA请求信号被释放。并且在每次传输一个数据单元后,释放一次总线控制权,以便其它总线控制器有机会可以占用总线。
(4) 手动模式(Demand Mode) 在该模式,只要DMA请求信号一直有效,DMA传输就持续进行,并且一直占用总线控制权,因此应该预防传输周期超过规定的最大时间。 3. DMA传输模式 DMA有三种传输模式: . 单位传输模式 . 块传输模式 . On_the_fly块传模式。
(1) Unit传输模式。1个单位读,然后1个单位写。 (2) Block传输模式。4个字突发读, 然后4个字突发写,因此传输的数据个数应当是16字节的倍数。 (3) On-the-fly 传输模式。1个单位读或1个单位写,读写同时进行。
4.5.2 DMA寄存器 1.ZDMA控制寄存器 ZDCON0/1 是ZDMA 0/1 控制寄存器 2. ZDMA其他寄存器 ZDISRC0/1是ZDMA0/1初始源地址寄存器 ZDIDES0/1是ZDMA0/1初始目标地址寄存器 ZDICNT0/1是ZDMA0/1初始计数寄存器 ZDCSRC0/1是ZDMA0/1当前源地址寄存器 ZDCDES0/1是ZDMA0/1当前目标地址寄存器 ZDCCNT0/1是ZDMA0/1当前计数寄存器
3. BDMA控制寄存器 BDCON0/1是BDMA0/1控制寄存器 4. BDMA其他寄存器 BDISRC0/1是BDMA0/1初始源地址寄存器 BDIDES0/1是BDMA0/1初始目标地址寄存器 BDICNT0/1是BDMA0/1初始计数寄存器 BDCSRC0/1是BDMA0/1当前源地址寄存器 BDCDES0/1是BDMA0/1当前目标地址寄存器 BDCCNT0/1是BDMA0/1 当前计数寄存器
4.6 I/O端口 4.6.1 概述 S3C44B0X 具有71个多功能输入/输出脚。它们包含在 7 组端口中: 2 个 9 位输入/输出端口(端口 E和F) 2 个 8 位输入/输出端口(端口 D和 G) 1 个 16 位输入/输出端口(端口 C) 1 个 10 位输出端口(端口 A) 1 个 11 位输出端口(端口 B)
每组端口都可以通过软件配置寄存器来满足不同系统和设计的需要,在运行程序之前必须先对每一个用到的引脚的功能进行设置,如果某些引脚的复用功能没有使用,那么可以将该引脚设置成I/O口。每组端口都可以通过软件配置寄存器来满足不同系统和设计的需要,在运行程序之前必须先对每一个用到的引脚的功能进行设置,如果某些引脚的复用功能没有使用,那么可以将该引脚设置成I/O口。 如表 4-27~表 4-33列出了7个端口的引脚定义。
4.6.2 端口控制寄存器 1. 端口配置寄存器(PCONA-G) 由于多数端口都是多功能口,因此,需要用“端口配置寄存器 PCONn”来设置每个引脚工作在哪一个功能模式下如表 4-34 所示,表中的功能1到功能4如表4-27~表4-33所示。
2. 端口数据寄存器(PDATA-G) 当端口被设置为输出脚时,输出数据的方法就是将数据写入到PDATn的相应位中;当端口被设置位输入脚时,读入数据的方法就是将PDATn中的相应位读出。 3. 端口上拉设置寄存器(PUPC-G) 端口上拉寄存器用来设定PC-PG这几组端口是否具有内部上拉。当PUPn的对应位为0时,该引脚上的上拉使能,当为1时,该引脚上的上拉禁能。
4. 外部中断控制寄存器 该寄存器是为 PG 的第 3 功能——外部中断输入口功能设置的,该寄存器可用来设置 EXINT(外部中断)请求输入的模式:低电平触发、高电平触发、下降沿触发、上升沿触发或是边沿触发。 下面我们以 PF 口的相关寄存器为例进行介绍,PF 的寄存器有 3个:PCONF,PDATF,PUPF。如表 4-35~表4-37所示PF 端口的相关寄存器信息
4.7 PWM定时器和看门狗定时器 4.7.1 概述 S3C44B0X具有6个16位定时器,每个定时器可以按照中断模式或DMA模式工作。定时器0,1,2,3和4具有PWM功能(脉宽调制)。定时器5是一个内部定时器不具有对外输出口线。定时器0具有死区发生器,通常用于大电流设备应用。 S3C44B0X的看门狗定时器用来在由于错误如干扰和系统错误造成的程序运行打乱时,恢复正常操作它也能使用一个正常的16位定时器来请求中断服务。看门狗定时器产生复位信号(128个系统时钟周期)。
特性 ◆ 6个16 位定时器可以工作在中断模式或 DMA模式; ◆ 3个8 位预分频器和2个5位分割器和1个4位分割器; ◆ 输出波形的占空比可编程控制(PWM) ◆ 自动加载模式或单触发脉冲模式; ◆ 死区产生器; ◆ 支持外部中断源; ◆ 看门狗定时器溢出产生复位信号。
4.7.2 PWM 定时器操作 1. 预分频器和分割器 如图4-8所示,定时器0和定时器1分享同一个8位的预分频器,定时器2和3分享一个8位预分频器,定时器4和5分享一个8位预分频器。 除了定时器4和5,其它每个定时器还拥有一个具有5个不同的分频信号输出(1/2, 1/4, 1/8, 1/16, 1/32)的时钟分割器。 定时器4和5 则具有4个分频信号输出(1/2, 1/4, 1/8,1/16)的时钟分割器和一个输入信号线 TCLK/EXTCLK。
每个定时器从时钟分割器的输出得到它们自己的时钟源,时钟分割器则从对应的8位预分频器得到时钟源。8位预分频器是可编程的,它的频率通过MCLK除以保存在TCFG0和 TCFG1寄存器中除数的结果设定。 8位预分频器和一个独立的4位分割器组合起来可以产生如表4-38所示的频率定时器时钟源输出。
2. 基本定时器操作 每个定时器具有一个倒计时器,实际上是一个通过定时器时钟源驱动的16位倒计时寄存器TCNTn。 当倒计时数到0,定时器中断请求就产生了,这个中断通知CPU定时器定时已经完成。 当定时器倒计时数到达0,寄存器TCNTBn的对应值就会自动地载入到倒计时器从而继续下一次操作。
但是,如果定时器停止,例如,在定时器运行模式下,清除了寄存器TCONn中的定时器使能位,那么TCNTBn的值就不会被重新载入到倒计时器中。但是,如果定时器停止,例如,在定时器运行模式下,清除了寄存器TCONn中的定时器使能位,那么TCNTBn的值就不会被重新载入到倒计时器中。
定时器使能后,定时计数缓冲区寄存器(TCNTBn)具有一个初始值,用来载入到倒计时器计数器TCNTn。定时器的比较缓冲区寄存器(TCMPBn)具有一个初始值,用来载入到比较寄存器TCMPn与倒计时值相比较。TCNTBn和TCMPBn这两个缓冲区的应用使定时器能够使定时器在频率和占空比变化时,仍然产生一个稳定的输出。定时器使能后,定时计数缓冲区寄存器(TCNTBn)具有一个初始值,用来载入到倒计时器计数器TCNTn。定时器的比较缓冲区寄存器(TCMPBn)具有一个初始值,用来载入到比较寄存器TCMPn与倒计时值相比较。TCNTBn和TCMPBn这两个缓冲区的应用使定时器能够使定时器在频率和占空比变化时,仍然产生一个稳定的输出。
定时器(除了定时器5)都具有TCNTBn,TCNTn,TCMPBn和TCMPn。TCNTBn和TCMPBn的值在定时器值达到0时分别载入TCNTn和TCMPn。当TCNTn达到0时,如果中断使能,中断请求将会产生。(TCNTn和TCMPn是内部寄存器,TCNTn寄存器的值可以通过TCNTOn寄存器读出)。如图4-8所示。定时器(除了定时器5)都具有TCNTBn,TCNTn,TCMPBn和TCMPn。TCNTBn和TCMPBn的值在定时器值达到0时分别载入TCNTn和TCMPn。当TCNTn达到0时,如果中断使能,中断请求将会产生。(TCNTn和TCMPn是内部寄存器,TCNTn寄存器的值可以通过TCNTOn寄存器读出)。如图4-8所示。
4.7.3 PWM 定时器控制寄存器 1. 定时器配置寄存器0(TCFG0) TCFG0主要是配置3个8位预分频器值和死区长度值。 定时器输入时钟频率=MCLK/{预分频值+1}/{分 割值} 其中预分频值为0~255,分割值为2,4,8,16,32。如表4-39所示。
2.定时器配置寄存器 1(TCFG1) TCFG1主要是配置6-MUX 和DMA模式。如表4-40所示。
4. 定时器n计数缓冲区寄存器和比较缓冲区寄存器(TCNTBn,TCMPBn) TCMPBn是16位定时器Timer0~Timer4比较缓冲器寄存器,TCNTBn是16位定时器Timer0~Timer5计数缓冲寄存器,TCNTOn 是16位定时器Timer0~Timer5观察寄存器。他们初值都为0。 在以上的寄存器中,定时器n计数/比较缓冲寄存器可读写寄存器,定时器n计数观察寄存器为只读寄存器。
4.7.4 看门狗定时器 1. 概述 S3C44B0X的看门狗定时器用来在由于错误如干扰和系统错误造成的程序运行打乱时恢复正常操作,它也能使用一个正常的16位定时器来请求中断服务。 看门狗定时器产生复位信号128个系统时钟周期。
当S3C44B0X使用Embedded ICE工作在调试模式时,看门狗定时器必须不工作。看门狗定时器能通过CPU核心信号(DBGACK信号)确定当前的模式是否在调试模式,一旦DBGACK信号有效,看门狗定时器的复位输出当定时器过期时不激活。 结构如图4-14所示。
2. 看门狗定时器时钟频率 看门狗时钟频率计算公式如下: t_watchdog = 1/( MCLK/ (Prescaler value + 1)/ Division_factor ) 3. 看门狗定时器寄存器包括以下种类寄存器: (1)看门狗定时器控制寄存器 看门狗定时器控制寄存器定义如表4-42所示。
(2) 看门狗定时器数据寄存器 WTDAT是一个16位寄存器,规定看门狗定时器超时周期。WTDAT的内容在初始操作时,不能自动加载进定时器计数寄存器。可是定时器计数寄存器在使用初始值0X8000第一次超时出现以后,WTDAT的值将自动加载进WTCNT。 (3) 看门狗定时器计数寄存器 WTCNT是16位看门狗定时器计数寄存器,在第一次使用时,必须设置到初始值。
4.8 日历时钟 4.8.1 概述 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。 RTC具有计时准确、耗电低和体积小等特点特别适用于在各种嵌入式系统中记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化工业控制等自动化程度较高领域的无人值守环境。随着集成电路技术的不断发展,RTC器件的新品也不断推出。
这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC器件与微控制器之间大都采用连线简单的串行接口,诸如I2C、SPI、MICROWIRE和CAN等串行总线接口。这些串口由2~3根线,分为同步和异步。