《第4章LPC2000系列ARM硬件结构64复习课程》由会员分享,可在线阅读,更多相关《第4章LPC2000系列ARM硬件结构64复习课程(46页珍藏版)》请在金锄头文库上搜索。
1、第4章 LPC2000系列ARM硬件结构,目录,9.向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12.SPI接口 13.I2C接口 14.UART(0、1) 15.A/D转换器 16.看门狗 17.脉宽调制器(PWM) 18.实时时钟,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8.GPIO,LPC2000系列微控制器基于ARM7TDMI-S CPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制
2、、医疗系统、访问控制和POS机等场合。,简介,4.1 LPC2000系列简介,关于LPC2000其它器件的介绍请登录 “LPC2000系列ARM”专栏,LPC2000系列简介,器件信息,芯片内部结构,LPC2000系列微控制器包含4大部分:,LPC2000系列简介,4.14 UART(0、1),1 特性,LPC2000系列微控制器具有两个功能强大的UART 0和UART1 ,其特性如下: 16字节接收FIFO和16字节发送FIFO; 寄存器位置符合16C550工业标准; 接收FIFO触发点可设置为1、4、8或14字节; 内置波特率发生器; UART1含有标准调制解调器接口信号 。,UART(0
3、、1),2 应用示例,只有UART1才有Modem,UART(0、1),3 UART结构,UART内部结构方框图,UART(0、1),(1) UART发送单元,1. UART发送单元,UART0、UART1各含有1个16字节的发送FIFO缓冲区。 UnTHR是UARTn发送FIFO的最高字节。 UART的发送FIFO是一直使能的。,UART发送FIFO缓冲区,UART(0、1),UART(0、1),(2) UART接收模块,UART0、UART1各含有1个16字节的接收FIFO缓冲区。 软件设置接收FIFO缓冲区的触发字节。,UART接收FIFO缓冲区,UART(0、1),UART线状态寄存器
4、UnLSR,线状态寄存器(UnLSR)为只读寄存器,它提供UARTn发送和接收模块的状态信息 。,UART(0、1),4 寄存器描述,UART波特率发生器,UART0和UART1各含有一个单独的波特率发生器,两者的功能相同,且相互独立。,这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的16倍。波特率计算公式如下: BaudRate = FPCLK / (U0DLM,U0DLL16),UART(0、1),Modem控制寄存器U1MCR,该寄存器使能Modem的回写模式,并控制Modem的输出信号。,UART(0、1),回写模式,在Modem回写模式下,发送器输出的串行数据在内部连接到
5、接收器的串行输入端。输入脚RxD1对回写模式无影响,输出脚TxD1保持总为1的状态。4个Modem输入(CTS, DSR, RI和DCD)与外部断开。此时,U1MSR的高4位分别由U1MCR的低4位驱动。,UART(0、1),Modem状态寄存器,该寄存器为只读,它反映Modem输入信号的状态信息。需要注意的是,Mdoem信号对UART1的操作没有直接影响,Modem信号的操作是通过软件来实现的。,UART(0、1),中断接口,UART0和UART1的中断接口包含中断使能寄存器(UnIER)和中断标识寄存器(UnIIR)。,UART(0、1),中断使能寄存器,UnIER可以控制UARTn的4个
6、中断源。其中RBR中断使能包括两个中断,一个是接收数据可用(RDA)中断,一个是接收超时中断(CTI)。稍后将对各中断源作详细介绍。,UART(0、1),中断标识寄存器,UnIIR提供状态代码用于指示一个挂起中断的中断源和优先级。在访问UnIIR过程中,中断被冻结。如果在访问UnIIR时产生了中断,该中断将被记录,在下次访问UnIIR时可以读出,避免了中断的丢失。,UART(0、1),VIC 中断控制器,ARM7TDMI 内核,Modem中断(UnIIR3:1=001),UnIER,bit2,bit1,bit0,bit3,RLS中断(UnIIR3:1=011),RDA中断(UnIIR3:1=0
7、10),CTI中断(UnIIR3:1=110),THRE中断(UnIIR3:1=001),注意:只有UART1才有Modem中断。,UART中断示意图,UART(0、1),优先级,最高,第二,第二,第三,RLS中断,RDA中断,CTI中断,THRE中断,VIC 中断控制器,ARM7TDMI 内核,Modem中断,第四,UnIER,bit2,bit1,bit0,bit3,注意:只有UART1才有Modem中断。,UART中断优先级,UART(0、1),RLS中断:该中断为最高优先级。它在UARTn发生下面的错误时产生中断: 1、溢出错误(OE) 2、奇偶错误(PE) 3、帧错误(FE) 4、间隔
8、中断(BI) 通过查看UnLSR4:1可以了解到产生该中断的错误条件。读取UnLSR时清除该中断;,UART(0、1),中断源说明,RDA中断:该中断与CTI中断并列为第二优先级。当接收的有效数据到达接收FIFO设置寄存器(UnFCR)中设置的触发点时,RDA被激活。当接收FIFO中的有效数据少于触发点时,RDA复位;,1.移位寄存器(UnRSR)从RxDn引脚接收串行数据后,送入接收FIFO中;,2.当接收FIFO中的有效数据数量到达预定的触发点时,置位RDA中断;,3.从UnRBR寄存器中读取FIFO中最早到达的数据,当FIFO中的有效数据小于预定触发点时,清零RDA中断;,DATA,UA
9、RT(0、1),CTI中断:当接收FIFO中的有效数据少于预定的触发点数量(至少有一个字节)时,如果在一定时间内仍然没有接收到新的数据,那将触发该中断。这个时间为:3.54.5个字节所需要的时间。注:对接收FIFO的任何操作都会清零该中断标志。,接收FIFO,触发点设置=8,UnRBR,1.移位寄存器(UnRSR)从RxDn引脚接收串行数据后,送入接收FIFO中;,2.当接收FIFO中的有效数据少于触发个数,但至少有一个时,如果长时间没有数据到达,将触发CTI中断;,3.从UnRBR中读取接收FIFO中的数据,或者有新的数据送入接收FIFO,都将清零CTI中断;,UnRSR,DATA,RxDn
10、,UART(0、1),接收FIFO,触发点设置=8,UnRBR,说明:“3.54.5个字节的时间”,其意思是在串口当前的波特率下,发送3.54.5个字节所需要的时间;,UnRSR,DATA,RxDn,注意:当接收FIFO中存在多个数据,从UnRBR读取数据,但是没有读完所有数据,那么在经过3.54.5个字节的时间后将触发CTI中断;,CTI中断:当接收FIFO中的有效数据少于预定的触发点数量(至少有一个字节)时,如果在一定时间内仍然没有接收到新的数据,那将触发该中断。这个时间为:3.54.5个字节所需要的时间。注:对接收FIFO的任何操作都会清零该中断标志。,UART(0、1),THRE中断:
11、该中断为第三优先级。当发送FIFO为空并且满足一定的条件时,该中断将被触发。这些条件是:,发送FIFO,1.系统启动时,虽然发送FIFO为空,但不会产生THRE中断。,DATA,UnTSR,2.在上一次发生THRE中断后,向发送FIFO中写入1个字节数据,将在延时一个字节加上一个停止位后发生THRE中断。,这是因为:如果发送移位寄存器为空,那么写入发送FIFO的数据将直接进入发送移位寄存器;,此时发送FIFO仍然为空,如果立即产生THRE中断,就会影响紧接着要写入发送FIFO的数据;,所以在发送完该字节以及一个停止位后,才产生THRE中断;,3.如果在发送FIFO中有过两个字节以上的数据,但是
12、现在发送FIFO为空时,将立即触发THRE中断。,当THRE中断为当前有效的最高优先级中断时,往UnTHR写数据,或者对UnIIR的读操作,将使THRE中断复位。,UART(0、1),使用UART前需要设置的寄存器如图所示。,UART(0、1),UART设置,使用UART前需要设置的寄存器的功能如下表所示。,UART(0、1),UART特殊寄存器,位置相同的寄存器,UART(0、1),操作流程,UART(0、1),5 UART应用示例,UART应用示例初始化代码,UART0初始化代码:,#define UART_BPS 115200 Void UART0_Ini(void) uint16 Fd
13、iv; PINSEL0 = 0 x00000005; U0LCR = 0 x83; Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0 x03; ,UART(0、1),UART应用示例初始化代码,UART0初始化代码:,#define UART_BPS 115200 Void UART0_Ini(void) uint16 Fdiv; PINSEL0 = 0 x00000005; U0LCR = 0 x83; Fdiv = (Fpclk / 16) / UART_BPS; U0DLM
14、= Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0 x03; ,UART(0、1),UART应用示例收发数据,void UART0_SendByte(uint8 data) U0THR = data; while(U0LSR ,uint8 UART0_RcvByte(void) uint8 rcv_data; while(U0LSR ,查询方式发送一字节数据:,查询方式接收一字节数据:,UART(0、1),UART中断,UART与VIC的关系,UART0、UART1分别位于VIC的通道6和通道7。中断使能寄存器VICIntEnable的Bit6和Bit7分别
15、用来控制通道6和通道7的使能。,UART0与VIC的关系,当VICIntEnable6 = 0时,通道6中断禁止;,UART中断,UART0与VIC的关系,当VICIntEnable6 = 0时,通道6中断禁止;,当VICIntEnable6 = 1时,通道6中断使能。,UART中断,UART中断,LPC2000系列ARM UART中断分为 四类:,接收中断 发送中断(THRE) 接收状态中断(RLS) Modem中断 (Modem),接收超时中断(CTI) 接收数据可用中断(RDA),UART中断,UART中断示意图,注意:只有UART1具有Modem中断。,UART中断,UART中断示意图
16、,注意:只有UART1具有Modem中断。,中断使能位为1时,对应的中断使能,UART中断,UART中断总结,接收中断数据可用中断(RDA),LPC2000系列ARM UART接口具有16字节的接收FIFO,接收触发点可以设置为1、4、8、14字节,当接收到的字节数达到接收触发点时,便会触发中断。,触发RDA中断,接收中断接收超时中断(CTI),当接收FIFO中的有效数据个数少于触发个数时(注:接收FIFO中至少有一个字节),如果在3.5到4.5个字符的时间内,没有收到其它数据,将触发CTI中断。,触发CTI中断,UART中断总结,发送中断,LPC2000系列ARM UART接口具有16字节的发送FIFO,当发送FIFO由非空变为空时,便会触发“发送中断”。,触发发送中断,注意:前面对“发送中断”做了详细的描述