s3c2410中断控制器工作原理和编程
- 格式:ppt
- 大小:1014.50 KB
- 文档页数:23
第十四章中断控制器概述S3C2410中断控制器接收56个中断源的中断请求。
中断源由如DMA控制器、UART、IIC等内部外设提供。
这些中断源中,UARTn和EINTn中断是以或逻辑输入到中断控制器的。
当从内部外设和外部中断请求引脚接收到多个中断请求时,经过中断仲裁后,中断控制器向ARM920T请求FIQ或者IRQ中断。
仲裁过程与硬件优先级有关,仲裁结果写入中断请求寄存器。
中断请求寄存器帮助用户确定哪个中断产生。
中断控制器操作程序状态寄存器PSR中的F位和I位如果PSR中的F位被置1,CPU不接收FIQ快速中断,同样如果I位PSR被置1,CPU不接收IRQ中断,因此中断控制器能够通过将PSR的F和I位和相应的INTMSK中的位清零来接收中断。
中断模式ARM920T有两种中断模式:FIQ和IRQ。
在中断请求时所有的中断源决定使用哪个模式。
中断请求寄存器S3C2410有两种中断请求寄存器:源请求寄存器(SRCPND)和中断请求寄存器(INTPND)。
这些请求寄存器揭示了一个中断是否正在请求。
当中断源请求中断服务时SRCPND寄存器中的相应位肯定被置1,然而,中断仲裁之后则只有INTPND寄存器的某1位被自动置1。
即使该中断被屏蔽,SRCPND寄存器中的相应位也会被置1,但是INTPND寄存器将不会改变。
当INTPND寄存器的某位被置1,且I位或者F位清零时中断服务即开始。
SRCPND和INTPND寄存器能够被读和写,因此服务函数必须通过向SRCPND和INTPND中相应位写入“1”来清除中断请求条件。
中断屏蔽寄存器INTMSK通过中断屏蔽寄存器的哪个屏蔽位被置1可以知道哪个中断被禁止。
如果INTMSK的某个屏蔽位为0,此中断将会被正常服务。
如果中断源产生了一个请求,SRCPND中的源请求位被置位,即使相应屏蔽位为1。
中断源下表列出了中断控制器支持的56个中断源中断优先级产生模块其中32个中断请求的优先级逻辑有由个rotation based仲裁位组成:6个一级仲裁位和一个二级位,如图14-2所示。
第4章基于S3C2410的硬件结构与接口编程1234.7.3 S3C2410X UART工作原理1.UART的工作机制下面介绍UART的一些工作机制,包括数据发送、数据接收、中断产生、波特率发生等、回环(loop-back)模式、红外模式、自动流控制等。
(1)数据发送发送数据的帧结构是可编程的,它由1个起始位、5~8个数据位、1个可选的奇偶位和1~2个停止位组成,这些可以在线控制寄存器ULCONn中设定。
接收器可以产生一个断点条件—使串行输出保持1帧发送时间的逻辑0状态。
当前发送字被完全发送出去后,这个断点信号随后发送。
断点信号发送之后,继续发送数据到Tx FIFO(如果没有FIFO则发送到Tx保持寄存器)。
(2)数据接收与数据发送一样,接收数据的帧格式也是可编程的。
它由1个起始位、5~8个数据位、1个可选的奇偶位和1~2个停止位组成,这些可以在行控制寄存器ULCONn中设定。
接收器可以探测到溢出错误和帧错误。
溢出错误:在旧数据被读出来之前新的数据覆盖了旧的数据。
帧错误:接收数据没有有效的停止位。
当在3个字时间(与字长度位的设置有关)内没有接收到任何数据并且Rx FIFO非空时,将会产生一个接收超时条件。
(3)自动流控制(AFC)S3C2410X的UART0和UART1通过n RTS and n CTS信号支持自动流控制,如连接到外部UART时。
如果用户希望将UART连接到一个MODEM,可以在UMCON n寄存器中禁止自动流控制,并且通过软件控制nRTS信号。
在AFC时,n RTS由接收器的状态决定,而n CTS信号控制发送器的操作。
只有当n CTS信号有效的时候(在AFC时,n CTS意味着其他UART的FIFO准备接收数据)UART发送器才会发送FIFO中的数据。
在UART接收数据之前,当它的接收FIFO多于2字节的剩余空间时n RTS必须有效,当它的接收FIFO少于1字节的剩余空间时n RTS必须无效(n RTS意味着它自己的接收FIFO开始准备接收数据)。
S3C2410触摸屏驱动程序原理图本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。
具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。
设计完成的触摸屏驱动程序在博创公司教学实验设备UP-NETARM2410-S平台上运行效果良好。
引言随着信息家电和通讯设备的普及,作为与用户交互的终端媒介,触摸屏在生活中得到广泛的应用。
如何在系统中集成触摸屏模块以及在嵌入式操作系统中实现其驱动程序,都成为嵌入式系统设计者需要考虑的问题。
本文主要介绍在三星S3C2410X微处理器的硬件平台上进行基于嵌入式Linux的触摸屏驱动程序设计。
硬件实现方案SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏接口的ARM920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏控制器。
本文采用SPI接口的触摸屏控制器ADS7843外接四线电阻式触摸屏,这种方式最显著的特点是响应速度更快、灵敏度更高,微处理器与触摸屏控制器间的通讯时间大大减少,提高了微处理器的效率。
ADS7843与S3C2410的硬件连接如图1所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式。
图1触摸屏输入系统示意图嵌入式Linux系统下的驱动程序设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互。
Linux 的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件。
应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文件一样简便。
为开发便利、提高效率,本设计采用可安装模块方式开发调试触摸屏驱动程序。
s3c2440工作原理
S3C2440是一款ARM11核心的微处理器,其工作原理可以概括为以下几
个方面:
1. 地址空间管理:S3C2440的存储器控制器具有大小端模式选择、可编程
的访问位宽、8个存储器banks等特点。
每个bank有128M 的字节(总
共1G字节/8个banks)。
其中,前6个存储器bank(bank0-bank5)可以是ROM、SRAM等类型的存储器,而后两个存储器bank(bank6-
bank7)则可以作为ROM、SRAM、SDRAM等类型的存储器。
2. 数据传输方式:S3C2440提供了三个UART端口,每个UART端口都可以通过查询、中断和DMA方式传输数据。
当发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到“发送移位器”中,发送移位器将数据一位一位地发送到TXDn数据线上。
接收数据时,“接收移位器”将RXDn数据线上的数据一位一位地接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。
3. 寄存器配置:S3C2440的UART有3个独立通道,每个通道支持的停止位有1位、2位,数据位有5、6、7、8位,支持校验功能,另外还有红外发送/接收功能。
这些功能通过相应的寄存器进行配置。
以上信息仅供参考,如需了解更多信息,建议查阅S3C2440的硬件手册或相关技术文档。
S3C2410 中断程序的实现
在此要注意的是区别中断向量表和异常向量表。
中断发生后总是从IRQ 或者FIQ 异常入口处进入,然后跳转到相应的异常处理程序处执行,这个异常处理程序一般都是进行查找中断向量表的操作,然后调用中断处理程序。
以下是在应用中中断处理实现的过程:从中不难体会到中断的处理过程。
定义中断向量表的物理地址:
代码
将中断处理程序入口地址放入中断向量表:
代码
定义中断处理程序:
代码
定义异常向量表:
代码
定义异常处理函数:
代码
异常处理宏HANDLER的定义:代码
定义IRQ 中断处理宏IRQHandle:
代码
申明IRQ 异常的服务程序为:IsrIRQ,即,发生IRQ 异常时,执行“b HandlerIRQ”即是
运行IsrIRQ代码:
代码
IRQ 异常处理程序:
代码
由上可以知道,当一个IRQ 中断发生时,CPU将从0X18(IRQ 异常入口地址)取指执行,在这一步PC 的跳转是有硬件实现的。
在入口0x18 地址处放的是一条跳转指令,这条指令将跳到IRQ 异常处理程序运行,IRQ 异常处理程序主要是根据中断源查找中断向量表。
获得中断入口地址后,接着CPU 跳转中断处理程序运行。
在嵌入式系统中异常向量表和中断向量表都是存于FLASH起始的一段空间中。
而异常处理和中断处理程序都是运行在RAM中的。
实验6 S3C2410 PWM定时器中断实验一、实验目的掌握S3C2410 PWM定时器的工作原理和定时时间的计算方法,掌握和PWM定时器有关寄存器的使用方法,会用C语言对PWM定时器进行初始化编程,理解PWM定时器中断的触发过程,熟练掌握和中断相关寄存器的使用以及中断服务函数的编程方法。
二、实验内容UP-NETARM2410实验箱上两个LED数码管的控制地址为0x08000110和0x08000112。
借助于PWM定时计数器可实现简单的计数秒表。
由于只有两位数码管,秒表计到99秒后,从0开始重新计数。
同时三个发光二极管每隔一秒闪烁点亮。
三、PWM定时器相关知识S3C2410A具有5个16位的定时器,其中定时器0~3具有PWM波发生功能,即可以输出PWM波,定时器4没有外部输出。
定时器工作频率为PCLK/(预分频值+1)/分频值,在下面的工程中,将使用定时器1,并设置其工作频率为20 kHz,即为:48MHz/(149+1)/16 = 20 kHz所以定时时间为:0x4E20* 20 kHz=1S定时器1的初始化方法如下:首先,设置TCFG0(定时器配置寄存器0,地址为0x51000000)的值为0x95,即定时器1的预分频值为0x95,十进制数为149。
注意:定时器0和1共用同一个预分频值。
然后,设置TCFG1(定时器配置寄存器1,地址为0x51000004)的值为0x30,即定时器1的分频值为16。
其次,设置TCNTB1(定时器1计数寄存器,地址为0x51000018)和TCMPB1(定时器1比较寄存器,地址为0x5100001C)的值为0x4E20和0x4000。
这里没有用到TCMPB1,当TCNTB1减计数到0后,将触发定时器1中断再次,设置TCON(定时器控制寄存器,地址为0x51000008)的值为0xA00,即刷新TCNB1和TCMPB1的值。
最后,设置TCON的值为0x900,启动定时器1。