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