43
6.3 S3C44B0X I/O 端端端端端端端端端 6.3.1 端端端端 6.3.2 端端端端端端 6.3.3 端端端端端端端端 6.3.4 端端端端端端端端端端

6.3 S3C44B0X I/O 端口功能及应用开发

  • Upload
    oded

  • View
    102

  • Download
    0

Embed Size (px)

DESCRIPTION

6.3 S3C44B0X I/O 端口功能及应用开发. 6.3.1 功能概述 6.3.2 端口功能配置 6.3.3 端口功能控制描述 6.3.4 端口的特殊功能寄存器. 6.3.1 S3C444B0X I/O 功能概述. S3C44B0X 有 7 个输入输出端口 共计 71 个输入输出引脚 全部为可编程端口 两个 9 位输入输出端口( PortE 和 PortF ); 两个 8 位输入输出端口( PortD 和 PortG ); 一个 16 位输入输出端口( PortC ); 一个 10 位输出端口( PortA ); - PowerPoint PPT Presentation

Citation preview

Page 1: 6.3 S3C44B0X I/O 端口功能及应用开发

6.3 S3C44B0X I/O 端口功能及应用开发

• 6.3.1 功能概述• 6.3.2 端口功能配置• 6.3.3 端口功能控制描述• 6.3.4 端口的特殊功能寄存器

Page 2: 6.3 S3C44B0X I/O 端口功能及应用开发

6.3.1 S3C444B0X I/O 功能概述• S3C44B0X 有 7 个输入输出端口• 共计 71 个输入输出引脚• 全部为可编程端口

– 两个 9 位输入输出端口( PortE 和 PortF );– 两个 8 位输入输出端口( PortD 和 PortG );– 一个 16 位输入输出端口( PortC );– 一个 10 位输出端口( PortA );– 一个 11 位的输出端口( PortB )。

大多数端口(引脚)都是复用的

Page 3: 6.3 S3C44B0X I/O 端口功能及应用开发

6.3.2 S3C444B0X 端口功能配置

大部分端口可以用以是: 输入、输出、控制总线、数据总线、地址总线 通过软件设置来决定每个端口的功能 通常都要在主程序开始前被定义 如果一个引脚的多功能没有使用(定义) 这个引脚将被设置为 I/O 端口 引脚配置以前,需要对引脚的初始化状态进行

设定

Page 4: 6.3 S3C44B0X I/O 端口功能及应用开发

6.2.3 S3C44B0X 存储控制器功能描述

• 主要是通过下列各种寄存器对端口进行设置 端口配置寄存器( PCON ) PCONa ~ PCONg 决定了每一个引脚的功能 端口数据寄存器( PDAT ) 输入、输出数据就是通过 PDATa ~ PDATg 被传送的 端口上拉寄存器( PUP ) 当 PUPc ~ PUPg 相应的位被设为 0 时,引脚接上拉电

阻; 当 PUPc ~ PUPg 相应的位为 1 时,引脚不接上拉电阻。

Page 5: 6.3 S3C44B0X I/O 端口功能及应用开发

特殊的上拉电阻控制寄存器( SPUPCR ) SPUPCR 可使数据线的引脚上接拉电阻 一方面,有些工作模式需要高阻状态,有些模式需要低功耗 外部中断控制寄存器 决定 8 个外部中断的触发方法: 低电平触发、高电平触发、下降沿触发、上升沿触发、双沿触发 外部中断挂起寄存器( EXTINTPND )

外部中断请求( 4/5/6/7 )具有特殊性:它们“或”的关系 即: EINT4 ~ EINT7 共享中断控制器里同一个中断请求队列 如果外部中断请求的 4 位中的任何一位被激活的话, 那么 EXTINPNDn 将会被设置为 1 。 外部挂起条件清除以后,中断服务程序必须清除中断挂起状态。

通过 EXTINPND 对应位写 1 来清除挂起条件。

Page 6: 6.3 S3C44B0X I/O 端口功能及应用开发

6.3.4 S3C444B0X I/O 端口的特殊功能寄存器

Page 7: 6.3 S3C44B0X I/O 端口功能及应用开发

6.3.5 S3C444B0X I/O 端口应用编程

Page 8: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 9: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 10: 6.3 S3C44B0X I/O 端口功能及应用开发

关于中断( 1)中断的概念特点 1: ①对现行程序(主程序)的暂时终止,②转而执行其它程序(中断服务程序),结束后③又回到原来的程序继续执行

特点 2:随机性、突发性(有别于函数调用一)特点 3:中断服务程序一般不会以调用的形式出现在主程序中(有别于函数调用二)

Page 11: 6.3 S3C44B0X I/O 端口功能及应用开发

关于中断( 2)

与中断有关的名词中断管理器中断源中断请求、中断响应中断服务程序、中断服务程序入口(地址)中断矢量中断优先级中断屏蔽字中断返回、中断现场保护

Page 12: 6.3 S3C44B0X I/O 端口功能及应用开发

关于中断( 3)

中断的执行机制开放中断屏蔽位(包括屏蔽某些位)设置中断请求触发方式设置中断服务程序入口地址编写中断程序服务

Page 13: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 1 )

S3C44B0X 中断基本概况 S3C44B0X CPU 有 26 个中断源输入端 可以管理(接) 30 个中断源 外部 8 个( EINT0 , EINT1 , EINT2… , EINT7

内部 22 个( S3C44B0X ) 问题! 30=8+22 ,但 26≠30

外部 4 、 5 、 6 、 7 共用一个 内部 UART 错误 0 、 1 共用一个

Page 14: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 2 )

S3C44B0X 的中断管理层次三级管理模式: CPU → 中断管理器→端口管理

CPU : 状态寄存器 CPSR ( P67 页) I ( IRQ )标志、 F ( FIQ )标志 ( 0 :允许、 1 :禁止)中断管理器: 中断控制寄存器 INTCON──4 位( P342 页)

保留位、 V (向量)、 I 、 F ( 0 :允许、 1 :禁止)

Page 15: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 3 )

端口管理

☆ 中断模式寄存器 INTMOD ( P343 页)

26 位:每位对应一个端口 ( 1 : FIQ 模式, 0 : IRQ 模式)

☆ 中断屏蔽寄存器 INTMSK ( P344 页)

27 位:全局屏蔽 Global 和单个端口屏蔽 ( 0 :开放、 1 :屏蔽)

Page 16: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 4 )

端口管理

☆ 中断挂起寄存器 INTPND─ 自动!! 26 位:每位对应一个端口 某个端口上有中断请求时自动置“ 1”

☆ 中断挂起清零寄存器 I_ISPC ( P347 页)程控!! 26 位:清除对应中断挂起位 0— 不变, 1— 清除(含未响应))

Page 17: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 5 )

端口管理 ☆ 外部中断控制寄存器 EXTINT ( P315 页) 32 位: XXXX 格式( 4 位对应一个端口)

触发方式:低(高)电平、上升(下降)沿

☆ 外部中断挂起寄存器 EXTINTPND ( P315 页)

4 位:(仅对外部中断 4567 有效) 1 )反映外部 EINT4567 的具体状态 2 )清除挂起状态 1— 激活( INTPND 同时激活)

Page 18: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 6 )

优先级管理 ☆ 主群优先级与从群优先级( P345 页) 模块逻辑图,见 P340 图 6-8

☆ 当前主群优先级与从群优先级( P346 页)

其它 ☆ 中断服务服务挂起寄存器 I_ISPR─ 状态寄存器

☆ 关于端口 G 的配置( P314 页)

Page 19: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 7 )

中断编程思路与步骤 初始化部分 ⑴ 中断允许设置 INTCON 、 INTMSK 、 CPSR 、 I_ISPCI_ISPC 、、 EXTINTPNDEXTINTPND ?????? ⑵ 中断方式、触发方式设置 INTMOD 、( EXTINT 仅外部中断时需要!) ⑶ 设置中断服务程序入口地址 pISR_TIME01 、 pISR_EINT01 、 pISR_EINT4567 、…… ⑷ 设置端口 G 的功能(仅外部中断时需要!) PCONG 、 PUP ( P314 页)

Page 20: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 的中断应用( 8 )

中断服务程序 ⑴ 编写具体应用程序 视具体任务而定 ⑵ 结束(返回)前必须设定的寄存器 I_ISPC(、 EXTINTPND) EXTINTPND 与 INTPND 的区别 ? ? EXTINTPND在自动与程控时的区别 ? ?

外部外部 EINT4567EINT4567 同时发出请求时如何响应?同时发出请求时如何响应? 一个处理未完成时,另一个发出请求如何处理?一个处理未完成时,另一个发出请求如何处理? 一个先请求,但还没有响应,另一个又请求,如何处理?一个先请求,但还没有响应,另一个又请求,如何处理?

Page 21: 6.3 S3C44B0X I/O 端口功能及应用开发

6.4 S3C44B0X DMA 功能及应用开发

• 6.4.1 S3C444B0X DMA 概述• 6.4.2 S3C444B0X ZDMA/BDMA操作 6.4.3 S3C444B0X DMA 特殊功能寄存器• 6.4.4 S3C444B0X DMA 应用编程

Page 22: 6.3 S3C44B0X I/O 端口功能及应用开发

6.4.1 S3C444B0X DMA 概述 DMA 的概念 S3C44B0X 有一个 4 通道的 DMA 控制器 ZDMA (普通 DMA )—— 2 通道 连接于 SSB 上,主要用于 RAM 与 RAM之间, RAM 与 I/O之间的数据传送

BDMA (桥梁 DMA )—— 2 通道 连接于总线桥内,主要用于 RAM 与 I/O之间的数据传送

SSB 总线——三星系统总线

SPB 总线——三星外围总线

桥是 SSB 和 SPB之间的接口层

Page 23: 6.3 S3C44B0X I/O 端口功能及应用开发

6.4.2 S3C444B0X ZDMA/BDMA操作 外部 DMA 请求 / 应答协议 握手模式—— 一次 DMA操作不可被中止

单步模式—— 一次 DMA操作可被高优先级的请求剥夺,因此速度低于握手模式

完整服务模式—— 一次 DMA 请求将产生连续的 DMA 传输 总线控制权的处理方法

需求模式—— 此方式下,其它设备无法再获得总线控制权

Page 24: 6.3 S3C44B0X I/O 端口功能及应用开发

DMA 传送方式 单元传送方式—— 每个请求对应一次读写操作

块传送方式—— 传输的字是 16 的倍数( 1 个块为 4 个字) on-the-fiy 传送方式—— 读写同时进行 DMA 请求源的选择 自动重装模式 特殊功能寄存器

Page 25: 6.3 S3C44B0X I/O 端口功能及应用开发

6.4.3 S3C444B0X DMA 特殊功能寄存器

• 1. ZDMA 控制寄存器( ZDCONn )• 2. ZDMA0/1 初始源 /目的地址和计数寄存器和 Z

DMA0/1 当前源 /目的地址和计数寄存器• 3. ZDMAn 初始源 /目标地址寄存器( ZDISRC ,

ZDCSRC )• 4. ZDMAn 初始 / 当前目的地址寄存器( ZDIDES,

, ZDCDE )

Page 26: 6.3 S3C44B0X I/O 端口功能及应用开发

6.4.4 S3C444B0X DMA 应用编程

Page 27: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 28: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 29: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 30: 6.3 S3C44B0X I/O 端口功能及应用开发

6.5 S3C44B0X UART 接口功能及应用开发

• 6.5.1 S3C444B0X UART 概述• 6.5.2 S3C444B0X UART 的操作• 6.5.3 S3C444B0X UART 的特殊功能寄存器• 6.5.4 S3C444B0X UART 应用编程

Page 31: 6.3 S3C44B0X I/O 端口功能及应用开发

6.5.1 S3C444B0X UART 概述

• S3C44B0X 的 UART 单元提供两个独立的异步串行 I/O 口 ( ( Asynchronous Serial I/O , SIO ) ) ,每个通信口均可工作于中断和或 DMA 模式。也即 UART 能产生内部中断请求或 DMA 请求,在 CPU 和串行 I/O 口之间传送数据。它支持高达 115.2K bps 的传输速率,每一个 UART 通道包含了两个 16位的分别用于接收和发送信号的 FIFO (先进先出)通道。

• S3C44B0X 的 UART 单元特性包括:• 波特率可编程基于 DMA 或中断操作的 RxD0 、

RxD1 、 TxD0 、 TxD1 ;• UART 通道 0支持红外发送与接收;• UART 通道 1支持红外发送与接收;• 支持握手方式传输与发送。

Page 32: 6.3 S3C44B0X I/O 端口功能及应用开发

6.5.2 S3C444B0X UART 的操作

壹数据传输贰数据接收叁 三 自动流控制 AFC ( Auto Flow Control )肆非自动流控制( nRTS 和 nCTS由 S/W所控制)伍中断 /DMA 请求的产生陆UART 错误状态 FIFO柒波特率的产生捌回环( Loop-back )模式玖红外模式

Page 33: 6.3 S3C44B0X I/O 端口功能及应用开发

6.5.3 S3C444B0X UART 的特殊功能寄存器

• 在 UART操作中,主要是通过对 UART 特殊寄存器进行设置来对 UART操作进行控制。 UART 的特殊功能寄存器包括 UART的控制寄存器、状态寄存器、保持寄存器、波特率分频寄存器等等。

Page 34: 6.3 S3C44B0X I/O 端口功能及应用开发

6.5.4 S3C444B0X UART 应用编程

Page 35: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 36: 6.3 S3C44B0X I/O 端口功能及应用开发
Page 37: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6 S3C44B0X 中断控制器功能及应用开发

• 6.6.1 S3C444B0X 中断概述• 6.6.2 S3C444B0X 中断控制器的操作• 6.6.3 S3C444B0X 中断源• 6.6.4 S3C444B0X 矢量中断模式(仅针对 I

RQ )• 6.6.5 S3C444B0X 矢量中断模式的程序举例• 6.6.6 S3C444B0X 中断控制器的特殊功能寄

存器• 6.6.7 S3C444B0X 中断控制器应用编程

Page 38: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6.1 S3C444B0X 中断概述• S3C44B0X 的中断控制器可以接受接收来自 30 个中断源的中断请

求。这些中断源来自 DMA 、 UART 、 SIO等这样的芯片内部外围或接口芯片的外部引脚。在这些中断源中,有 4 个外部中断( EINT4/5/6/7 )是逻辑或的关系,它们共用一条中断请求线。 UART0 和UART1 的错误中断也是逻辑或的关系。

• 中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中一个中断通过 FIQ 或 IRQ 向 ARM7TDMI 内核发出 FIQ 或 IRQ 中断请求。

• 实际上最初 ARM7TDMI 内核只有 FIQ (快速中断请求)和 IRQ(通用中断请求)两种中断,其它中断都是各个芯片厂家在设计芯片时定义的,这些中断根据中断的优先级高低来进行处理。例如,如果你定义所有的中断源为 IRQ 中断(通过中断模式设置),当同时有 10 个中断发出请求时,可以通过读中断优先级寄存器来确定哪一个中断将被优先执行。一般的中断模式在进入所需的服务程序前需要很长的中断反应时间,为了解决这个问题, S3C44B0X提供了一种新的中断模式叫做矢量中断模式,它具有 CISC 结构微控制器的特征,能够减少中断反应时间。换句话说 S3C44B0X 的中断控制器硬件本身直接提供了对矢量中断服务的支持。

Page 39: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6.2 S3C444B0X 中断控制器的操作程序状态寄存器的 F 位和 I 位

– 如果 CPSR 程序状态寄存器的 F 位被设置为 1 ,那么CPU 将不接受接收来自中断控制器的 FIQ (快速中断请求);如果 CPSR 程序状态寄存器的 I 位被设置为 1 ,那么 CPU 将不接受接收来自中断控制器的 IRQ (中断请求)。因此,为了使能 FIQ 和 IRQ ,必须先将 CPSR 程序状态寄存器的 F 位和 I 位清零,并且中断屏蔽寄存器 INTMSK 中相应的位也要清零。

– 中断模式( INTMOD )– ARM7TDMI提供了 2种中断模式: FIQ 模式和 IRQ 模

式。所有的中断源在中断请求时都要确定使用哪一种中断模式。

Page 40: 6.3 S3C44B0X I/O 端口功能及应用开发

– 中断挂起寄存器( INTPND )– 用于指示对应的中断是否被激活。当中断挂起位

被设置时,只要相应的标志 I 或标志 F 被清零,相应的中断服务程序都将会被执行。中断挂起寄存器是只读寄存器,所以在中断服务程序中必须加入对 I_ISPC 和 F_ISPC 写 1 的操作来清除挂起条件。

– 中断屏蔽寄存器( INTMSK )– 当 INTMSK 寄存器的屏蔽位为 1 时,对应的中断

被禁止;当 INTMSK 寄存器的屏蔽位为 0 时,则对应的中断正常执行。如果一个中断的屏蔽位为1 ,在该中断发出请求时挂起位还是会被设置为 1 。如果中断屏蔽寄存器的全局屏蔽位( global bit )设置为 1 ,那么在中断发出请求时相应的中断挂起位会被设置,但所有的中断请求都不被执行。

Page 41: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6.3 S3C444B0X 中断源• 在 30 个中断源中,对于中断控

制器来说有 26 个中断源是单独的, 4个外部中断( EINT4/5/6/7 )是逻辑或的关系,它们共用同一个中断源,另外两个 UART 错误中断( UERROR0/1 )也是共用同一个中断控制器。

Page 42: 6.3 S3C44B0X I/O 端口功能及应用开发

6.6.4 S3C444B0X 矢量中断模式(仅针对 IRQ )

• S3C44B0X支持矢量中断模式,可以减少中断的反应时间。通常情况下 ARM7TDMI 内核收到来自中断控制器的 IRQ 中断请求, ARM7TDMI 会在 0x00000018 地址处执行一条指令。但是在矢量中断模式下,当 ARM7TDMI 从 0x00000018 地址处取指令的时候,中断控制器会在数据总线上加载分支指令,这些分支指令使程序计数器能够对应到每一个中断源的向量地址。这些跳转到每一个中断源向量地址的分支指令可以由中断控制器产生。例如,假设 EINT0 是 IRQ 中断,如表 4-15所示, EINT0 的向量地址为 0x20 ,所以中断控制器必须产生从 0x18到 0x20 的分支指令。因此,中断控制器产生的机器码为 0xea000000 。在各个中断源对应的中断向量地址中,存放着跳转到相应中断服务程序的程序代码,在相应向量地址处分支指令的机器代码是这样计算的:

Page 43: 6.3 S3C44B0X I/O 端口功能及应用开发

• 矢量中断模式的指令机器代码 =0xea000000 + ((<目标地址 > - < 向量地址 > - 0x8)>>2)

• 例如,如果 Timer 0 中断采用矢量中断模式,则跳转到对应中断服务程序的分支指令应该存放在向量地址 0x00000060处。中断服务程序的起始地址在 0x10000 ,下面就是计算出来放在 0x60处的机器代码:

• 机器代码@0x00000060 : 0xea000000+((0x10000-0x60-0x8)>>2)= 0xea000000+0x3fe6= 0xea003fe6

• 通常机器代码都是反汇编后自动产生的,因此不必真正象上面这样去计算。