ARM硬件结构课件

上传人:风*** 文档编号:240744198 上传时间:2024-05-04 格式:PPT 页数:130 大小:1.67MB
返回 下载 相关 举报
ARM硬件结构课件_第1页
第1页 / 共130页
ARM硬件结构课件_第2页
第2页 / 共130页
ARM硬件结构课件_第3页
第3页 / 共130页
点击查看更多>>
资源描述
嵌入式技术与应用嵌入式技术与应用 智能电器与智能系统省重点实验室智能电器与智能系统省重点实验室 ARM硬件结构硬件结构5C H A P T E R第第5章章 目录目录q1.简介q2.引脚配置q3.存储器寻址q4.系统控制模块q5.存储器加速模块q6.外部存储器控制器q7.引脚连接模块q8.向量中断控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定时器0/1q15.脉宽调制器(PWM)q16.A/D转换器q17.实时时钟q18.看门狗5.9 GPIO特性特性LPC2000LPC2000系列作为系列作为“微控制器微控制器”,其,其GPIOGPIO特性就显得很重要。特性就显得很重要。它具有如下的特性:它具有如下的特性:可以独立控制每个可以独立控制每个GPIOGPIO口的方向(输入口的方向(输入/输出模式);输出模式);可以独立设置每个可以独立设置每个GPIOGPIO的输出状态(高的输出状态(高/低电平);低电平);所有所有GPIOGPIO口在复位后默认为输入状态。口在复位后默认为输入状态。5.9 GPIO应用应用检测数字输检测数字输入,如键盘入,如键盘或开关信号或开关信号驱动驱动LEDLED或或其它指示器其它指示器控制片外器件控制片外器件5.9 GPIO引脚描述引脚描述LPC2114/2124LPC2114/2124微控制器具有两个端口微控制器具有两个端口P0P0和和P1P1,可,可以作为以作为GPIOGPIO使用的引脚数为使用的引脚数为4646个。个。LPC2210/2212/2214LPC2210/2212/2214微控制器还包含另外两个端口微控制器还包含另外两个端口P2P2和和P3P3,这两个端口与外部存储器总线复用,当它们,这两个端口与外部存储器总线复用,当它们全部作为全部作为GPIOGPIO使用时,使用时,GPIOGPIO引脚数多达引脚数多达112112个。个。5.9 GPIO引脚描述引脚描述GPIOGPIO与控制寄存器的关系与控制寄存器的关系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引脚引脚PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名称通用名称描述描述访问类型访问类型复位值复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出引脚的当前状态都可以从该寄存器中读出只读只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出置位寄存器。该寄存器控制引脚输出高电平输出高电平读读/置位置位0 x0000 0000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出置位寄存器。该寄存器控制引脚输出低电平输出低电平只清零只清零0 x0000 0000IODIRGPIO方向控制寄存器。该寄存器单独控制方向控制寄存器。该寄存器单独控制每个每个IO口的方向口的方向读读/写写0 x0000 0000GPIO相关寄存器描述PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxPINIOxPIN描述描述复位值复位值31:0GPIO引脚值。引脚值。IOxPIN0对应于对应于Px.0 IOxPIN31对对应于应于Px.31引脚引脚未定义未定义该寄存器反映当前引脚的状态。该寄存器反映当前引脚的状态。IOIOx xPINPIN中的中的x x对应于某一个端口,如对应于某一个端口,如P P1 1口对口对应于应于IOIO1 1PINPIN。所以芯片存在多少个端口,就有多少个。所以芯片存在多少个端口,就有多少个IOxPINIOxPIN分别与之对应。分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxDIRIOxDIR描述描述复位值复位值31:0方向控制位。方向控制位。IOxDIR0对应于对应于Px.0 IOxDIR31对对应于应于Px.31引脚引脚未定义未定义当引脚设置为当引脚设置为GPIOGPIO输出模式时,可使用该寄存器控制引脚的方向。向某位输出模式时,可使用该寄存器控制引脚的方向。向某位写入写入1 1使对应引脚作为输出功能,写入使对应引脚作为输出功能,写入0 0时作为输入功能。时作为输入功能。作为输入功能时,引脚处于高阻态。作为输入功能时,引脚处于高阻态。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxSETIOxSET描述描述复位值复位值31:0输出置位。输出置位。IOxSET0对应于对应于Px.0 IOxPIN31对对应于应于Px.31引脚引脚未定义未定义当引脚设置为当引脚设置为GPIOGPIO输出模式时,可使用该寄存器从引脚输出输出模式时,可使用该寄存器从引脚输出高高电平。向某电平。向某位写入位写入1 1使对应引脚输出高电平。写入使对应引脚输出高电平。写入0 0无效。无效。从该寄存器读回的数据为从该寄存器读回的数据为GPIOGPIO输出寄存器的值。该值不反映外部环境对引输出寄存器的值。该值不反映外部环境对引脚的影响。脚的影响。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相关寄存器描述IOxCLRIOxCLR描述描述复位值复位值31:0输出清零。输出清零。IOxCLR0对应于对应于Px.0 IOxCLR31对对应于应于Px.31引脚引脚未定义未定义当引脚设置为当引脚设置为GPIOGPIO输出模式时,可使用该寄存器从引脚输出输出模式时,可使用该寄存器从引脚输出低低电平。向某电平。向某位写入位写入1 1使对应引脚输出低电平。写入使对应引脚输出低电平。写入0 0无效。无效。注意注意:读取该寄存器无效,不能读回输出寄存器的值。:读取该寄存器无效,不能读回输出寄存器的值。5.9 GPIO使用GPIO注意要点引脚设置为输出方式时,输出状态由引脚设置为输出方式时,输出状态由IOxSETIOxSET和和IOxCLRIOxCLR中中最后操作的寄存器决定;最后操作的寄存器决定;大部分大部分GPIOGPIO输出为输出为推挽推挽方式(个别引脚为开漏输出),方式(个别引脚为开漏输出),正常拉出正常拉出/灌入电流均为灌入电流均为4mA4mA(短时间极限值(短时间极限值40mA40mA););复位后默认所有复位后默认所有GPIOGPIO为输入模式。为输入模式。.PINSEL0&=0 xFFFFFFFC;IO0DIR|=0 x00000001;IO0SET =0 x00000001;.C C代码:代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例设置P0.0输出高电平P0.0(1)设置引脚连接模块,设置引脚连接模块,P0.0为为GPIO(2)设置设置P0.0口方向,设置为输出口方向,设置为输出(3)设置设置P0.0口状态,输出高电平口状态,输出高电平1 .uint32 PinStat;PINSEL0&=0 xFFFFFFFC;IO0DIR&=0 xFFFFFFFE;PinStat =IO0PIN;.C C代码:代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO应用示例读取P0.0引脚状态P0.0(1)设置引脚连接模块,设置引脚连接模块,P0.0为为GPIO(2)设置设置P0.0口方向,设置为输入口方向,设置为输入(3)从从IO0PIN读取引脚状态读取引脚状态IO0PIN#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;IO0DIR|=DataBus;IO0CLR =DataBus;IO0SET =Data;.使用使用IOxSETIOxSET和和IOxCLRIOxCLR实现实现:GPIO应用示例输出多位数据至IO口(1)(1)设置引脚连接模块,设置引脚连接模块,P0.0P0.07 7为为GPIOGPIO(2)(2)设置设置P0.0P0.0口方向,设置为输出口方向,设置为输出(3)(3)清零清零8 8位位IOIO口的输出状态口的输出状态在需要将多位数据同时输出到某几个在需要将多位数据同时输出到某几个IOIO口线时,通常使用口线时,通常使用IOxSETIOxSET和和IOxCLRIOxCLR来实现,在某些情况下也可以使用来实现,在某些情况下也可以使用IOxPINIOxPIN寄存器实现。寄存器实现。后者可以在多个后者可以在多个IOIO口上直接输出口上直接输出0 0和和1 1电平。电平。本例将本例将8 8位无符号整数变量位无符号整数变量DataData的值输出到的值输出到P0.0P0.0P0.7P0.7。(4)Data(4)Data变量中为变量中为1 1的位将输出高电平的位将输出高电平0 x?0 x?0 x000 x00DataData数据输出线:数据输出线:#define DataBus 0 xFF#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;PINSEL0&=0 xFFFF0000;IO0DIR|=DataBus;IO0DIR|=DataBus;IO0PIN =(IO0SET&0 xFFFFFF00)|Data;IO0PIN =(IO0SET&0 xFFFFFF00)|Data;.GPIO应用示例应用示例输出多位数据至输出多位数据至IO口口(1)(1)设置引脚连接模块,设置引脚连接模块,P0.0P0.0为为GPIOGPIO(2)(2)设置设置P0.0P0.0口方向,设置为输出口方向,设置为输出(3)(3)写写IO0PINIO0PIN,输出数据,输出数据在需要将多位数据同时输出到某几个在需要将多位数据同时输出到某几个IOIO口线时,通常使用口线时,通常使用IOxSETIOxSET和和IOxCLRIOxCLR来实现,在某些情况下也可以使用来实现,在某些情况下也可以使用IOxPINIOxPIN寄存器实现。寄存器实现。后者可以在多个后者可以在多个IOIO口上直接输出口上直接输出0 0和和1 1电平。电平。本例将本例将8 8位无符号整数变量位无符号整数变量DataData的值输出到的值输出到P0.0P0.0P0.7P0.7。使用使用IOxPINIOxPIN实现:实现:0 x?0 x?DataData数据输出线:数据输出线:0 x?0 x?0 x000 x00DataData与前者对比:与前者对比:第第5章章 目录目录q1.简介q2.引脚配置q3.存储器寻址q4.系统控制模块q5.存储器加速模块q6.外部存储器控制器q7.引脚连接模块q8.向量中断控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定时器0/1q15.脉宽调制器(PWM)q16.A/D转换器q17.实时时钟q18.看门狗5.10 UART0特性特性LPC2000LPC2000系列微控制器具有两个功能强大的系列微控制器具有两个功能强大的UARTUART,其中,其中UART0UART0具有如下的特性:具有如下的特性:1616字节接收字节接收FIFOFIFO和和1616字节发送字节发送FIFOFIFO;寄存器位置符合寄存器位置符合16C55016C550工业标准;工业标准;接收接收FIFOFIFO触发点可设置为触发点可设置为1 1、4 4、8 8或或1414字节;字节;内置波特率发生器。内置波特率发生器。使用使用UART0UART0通信需要两个引脚,分别为:通信需要两个引脚,分别为:引脚名称引脚名称类型类型描述描述RxD0输入输入串行输入,接收数据串行输入,接收数据TxD0输出输出串行输出,发送数据串行输出,发送数据使用使用UART0通信通信LPC2000LPC2000的的I/OI/O电压为电压为3.3V3.3V(可承受(可承受5V5V),),连接时须注意电平的连接时须注意电平的匹配。匹配。与与PCPC机相连时,由于机相连时,由于PCPC机串口是机串口是RS232RS232电平,电平,所以连接时需要使用所以连接时需要使用RS232RS232转换器。转换器。LPC2000LPC2000其它其它通信设备通信设备LPC2000LPC2000PCPC机串口机串口232232电平转换电平转换TxD0TxD0RxD0RxD0TxD0TxD0RxD0RxD0TxD0TxD0RxD0RxD0TxD0TxD0RxD0RxD0U0THRU0THRU0TSRU0TSRTxD0TxD0U0RBRU0RBRU0RSRU0RSRRxD0RxD0U0LCRU0LCRU0LSRU0LSRU0IIRU0IIRU0IERU0IERVPBVPB接口接口U0FCRU0FCR与与CPUCPU内核内核相连相连U0DLMU0DLMU0DLLU0DLL1.1.在使用在使用UARTUART之前需要设置的寄存器之前需要设置的寄存器UART0内部结构示意图U0LCRU0LCRU0IERU0IERU0FCRU0FCRU0DLMU0DLMU0DLLU0DLLFIFOFIFO控制控制中断使能中断使能UART0UART0格式设置格式设置波特率设置波特率设置U0THRU0THRU0TSRU0TSRTxD0TxD0U0RBRU0RBRU0RSRU0RSRRxD0RxD0U0LCRU0LCRU0LSRU0LSRU0IIRU0IIRU0IERU0IERVPBVPB接口接口U0FCRU0FCR与与CPUCPU内核内核相连相连U0DLMU0DLMU0DLLU0DLL2.2.发送数据的通道发送数据的通道UART0内部结构示意图内部结构示意图U0THRU0THRU0TSRU0TSRVPBVPB接口接口CPUCPU内核通过内核通过VPBVPB接口对接口对UART0UART0的寄存器进行读写访问的寄存器进行读写访问发送缓存发送缓存发送移位寄存器发送移位寄存器U0THRU0THRU0TSRU0TSRTxD0TxD0U0RBRU0RBRU0RSRU0RSRRxD0RxD0U0LCRU0LCRU0LSRU0LSRU0IIRU0IIRU0IERU0IERVPBVPB接口接口U0FCRU0FCR与与CPUCPU内核内核相连相连U0DLMU0DLMU0DLLU0DLL3.3.接收数据的通道接收数据的通道UART0内部结构示意图U0RBRU0RBRU0RSRU0RSRVPBVPB接口接口接收缓存接收缓存接收移位寄存器接收移位寄存器U0THRU0THRU0TSRU0TSRTxD0TxD0U0RBRU0RBRU0RSRU0RSRRxD0RxD0U0LCRU0LCRU0LSRU0LSRU0IIRU0IIRU0IERU0IERVPBVPB接口接口U0FCRU0FCR与与CPUCPU内核内核相连相连U0DLMU0DLMU0DLLU0DLL4.4.通信过程中可能影响的标志位通信过程中可能影响的标志位UART0内部结构示意图U0LSRU0LSRU0IIRU0IIR中断标志中断标志UART0UART0当当前状态前状态UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0RBRU0RBR描述描述复位值复位值7:0接收缓存寄存器接收缓存寄存器,它包含了接收,它包含了接收FIFO中最早接收到的字节中最早接收到的字节未定义未定义U0RSRU0RSR移位寄存器从移位寄存器从RxD0RxD0引脚接收的有效数据将被送到接收引脚接收的有效数据将被送到接收FIFOFIFO中。通过读取中。通过读取U0RBRU0RBR寄寄存器将接收存器将接收FIFOFIFO中最早接收到的字节读出,当中最早接收到的字节读出,当FIFOFIFO中不再包含有效数据时,该寄存器中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足反映接收到的最后一个有效字节数据。接收的数据不足8 8位时,高位用位时,高位用0 0填充。填充。注意注意:U0RBR U0RBR只读。访问该寄存器时,只读。访问该寄存器时,U0LCRU0LCR的除数锁存访问位(的除数锁存访问位(DLABDLAB)必须为)必须为0 0。接收缓存寄存器接收缓存寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0THR描述描述复位值复位值7:0发送器保持寄存器发送器保持寄存器,写入该寄存器的值保存到发送,写入该寄存器的值保存到发送FIFO中,当该字节中,当该字节到达到达FIFO底部时,它将被送入发送移位寄存器(底部时,它将被送入发送移位寄存器(U0TSR)进行发送。)进行发送。未定义未定义写入该寄存器的值将是发送写入该寄存器的值将是发送FIFOFIFO中的最高字节。访问该寄存器时,中的最高字节。访问该寄存器时,U0LCRU0LCR的的除数锁存访问位(除数锁存访问位(DLABDLAB)必须为)必须为0 0。注意注意:U0THR U0THR只写。它的地址与只写。它的地址与U0RBRU0RBR相同,通过读相同,通过读/写操作予以区分。写操作予以区分。U0THR发送器保持寄存器发送器保持寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLU0THRU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述名称名称描述描述复位值复位值U0DLL7:0除数锁存寄存器低字节除数锁存寄存器低字节两个寄存器一起构成一个两个寄存器一起构成一个16位的除数,位的除数,决定决定UART0的波特率。的波特率。未定义未定义U0DLM7:0除数锁存寄存器高字节除数锁存寄存器高字节这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的1616倍。倍。波特率计算公式如下:波特率计算公式如下:BaudRate=FBaudRate=FPCLKPCLK/(U0DLM,U0DLL16)/(U0DLM,U0DLL16)除数锁存寄存器除数锁存寄存器U0DLM U0DLL注意注意:由于:由于U0DLL、U0DLM寄存器与其它寄存器的地址重叠,所以在访问寄存器与其它寄存器的地址重叠,所以在访问它们时,它们时,U0LCR的除数锁存访问位(的除数锁存访问位(DLAB)必须为)必须为1。U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述U0IER描述描述复位值复位值0RBR中断使能中断使能。1:使能:使能RDA中断;中断;0:禁止:禁止RDA中断。中断。01THRE中断使能中断使能。1:使能:使能THRE中断;中断;0:禁止:禁止THRE中断。中断。02Rx线状态中断使能。线状态中断使能。1:禁止:禁止Rx线状态中断;线状态中断;0:禁止:禁止Rx线状态中断;线状态中断;该中断状态可从该中断状态可从U0LSR4:1读出。读出。07:3保留,用户软件不要向这些位写入保留,用户软件不要向这些位写入1。未定义未定义中断使能寄存器中断使能寄存器U0IERU0IERU0IER可以控制可以控制UART0UART0的的4 4个中断源。其中个中断源。其中RBRRBR中断使能包括两个中断,一个中断使能包括两个中断,一个是接收数据可用(是接收数据可用(RDARDA)中断,一个是接收超时中断()中断,一个是接收超时中断(CTICTI)。稍后将对各)。稍后将对各中断源作详细介绍。中断源作详细介绍。U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述U0IIR描述描述复位值复位值0中断挂起。中断挂起。1:没有挂起的中断;:没有挂起的中断;0:至少有一个中断被挂起。:至少有一个中断被挂起。03:1中断标识。中断标识。这这3位表示了对应于位表示了对应于UART0 Rx FIFO的中断。未列出的其的中断。未列出的其它组合作为保留值。它组合作为保留值。011:1.接收线状态中断(接收线状态中断(RLS)0010:2a.接收数据可用中断接收数据可用中断(RDA)0110:2b.字符超时指示(字符超时指示(CTI)001:3.发送中断(发送中断(THRE)7:3保留,用户软件不要向这些位写入保留,用户软件不要向这些位写入1。未定义未定义中断标识寄存器中断标识寄存器 U0IIR U0IIR提供状态代码用于指示一个挂起中断的中断源和优先级。在访问提供状态代码用于指示一个挂起中断的中断源和优先级。在访问U0IIRU0IIR过程中,中断被冻结。如果在访问过程中,中断被冻结。如果在访问U0IIRU0IIR时产生了中断,该中断将被时产生了中断,该中断将被记录,在下次访问记录,在下次访问U0IIRU0IIR时可以读出,避免了中断的丢失。时可以读出,避免了中断的丢失。U0IIRU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述中断标识寄存器中断标识寄存器中断源和中断使能的关系中断源和中断使能的关系U0IIRRLSRLS中断中断(U0IIR3:1=011)(U0IIR3:1=011)RDARDA中断中断(U0IIR3:1=010)(U0IIR3:1=010)CTICTI中断中断(U0IIR3:1=110)(U0IIR3:1=110)THRETHRE中断中断(U0IIR3:1=001)(U0IIR3:1=001)VICVIC中断控制器中断控制器ARM7TDMIARM7TDMI内核内核U0IERU0IERbit2bit2bit1bit1bit0bit0优先级优先级最高最高第二第二第二第二第三第三U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLUART0相关寄存器描述中断标识寄存器中断标识寄存器U0IIRRLSRLS中断中断RDARDA中断中断CTICTI中断中断THRETHRE中断中断VICVIC中断控制器中断控制器ARM7TDMIARM7TDMI内核内核U0IERU0IERbit2bit2bit1bit1bit0bit0中断源和中断使能的关系中断源和中断使能的关系UART0相关寄存器描述中断源说明中断源说明l RLSRLS中断中断:该中断为最高优先级。它在:该中断为最高优先级。它在UART0UART0产生了四个错误条产生了四个错误条件(溢出错误件(溢出错误(OE)(OE)、奇偶错误、奇偶错误(PE)(PE)、帧错误、帧错误(FE)(FE)和间隔中断和间隔中断(BI)(BI))中的任意一个时置位。通过查看)中的任意一个时置位。通过查看U0LSR4:1U0LSR4:1可以了解到产可以了解到产生该中断的错误条件。读取生该中断的错误条件。读取U0LSRU0LSR时清除该中断;时清除该中断;UART0相关寄存器描述中断源说明中断源说明lRDARDA中断中断:该中断与:该中断与CTICTI中断并列为第二优先级。当接收的有效中断并列为第二优先级。当接收的有效数据到达接收数据到达接收FIFOFIFO设置寄存器设置寄存器(U0FCR)(U0FCR)中设置的触发点时,中设置的触发点时,RDARDA被被激活。当接收激活。当接收FIFOFIFO中的有效数据少于触发点时,中的有效数据少于触发点时,RDARDA复位;复位;1.1.移位寄存器移位寄存器(U0RSR)(U0RSR)从从RxD0RxD0引脚接收引脚接收串行数据后,送入接收串行数据后,送入接收FIFOFIFO中;中;2.2.当接收当接收FIFOFIFO中的有效数据数量到达中的有效数据数量到达预定的触发点时,置位预定的触发点时,置位RDARDA中断;中断;3.3.从从U0RBRU0RBR寄存器中读取寄存器中读取FIFOFIFO中最早到中最早到达的数据,当达的数据,当FIFOFIFO中的有效数据小于中的有效数据小于预定触发点时,清零预定触发点时,清零RDARDA中断;中断;接收接收FIFOFIFO1 12 23 34 45 56 67 79 910101111121213131414151516168 8触发点设置触发点设置=8=8U0RBRU0RBRU0RSRU0RSRRxD0RxD0U0IIR3:1U0IIR3:1xxxxxxU0IIR0U0IIR01 10100100 0 xxxxxx1 1D DA AT TA AUART0相关寄存器描述中断源说明中断源说明lCTICTI中断中断:该中断为第二优先级。当接收:该中断为第二优先级。当接收FIFOFIFO中的有效数据少于中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收预定的触发点数量,但至少有一个字节时,如果超过接收3.53.54.54.5个字节所需要的时间仍没有接收到数据,那将触发该中断。对接收个字节所需要的时间仍没有接收到数据,那将触发该中断。对接收FIFOFIFO的任何操作都会清零该中断标志;的任何操作都会清零该中断标志;接收接收FIFOFIFO1 12 23 34 45 56 67 79 910101111121213131414151516168 8触发点设置触发点设置=8=8U0RBRU0RBR1.1.移位寄存器移位寄存器(U0RSR)(U0RSR)从从RxD0RxD0引脚接收引脚接收串行数据后,送入接收串行数据后,送入接收FIFOFIFO中;中;2.2.当接收当接收FIFOFIFO中的有效数据少于触发中的有效数据少于触发个数,但至少有一个时,如果长时间个数,但至少有一个时,如果长时间没有数据到达,将触发没有数据到达,将触发CTICTI中断;中断;3.3.从从U0RBRU0RBR中读取接收中读取接收FIFOFIFO中的数据,中的数据,或者有新的数据送入接收或者有新的数据送入接收FIFOFIFO,都将,都将清零清零CTICTI中断;中断;U0RSRU0RSRD DA AT TA ARxD0RxD0U0IIR3:1U0IIR3:1xxxxxxU0IIR0U0IIR01 11101100 0 xxxxxx1 1UART0相关寄存器描述中断源说明中断源说明lCTICTI中断中断:该中断为第二优先级。当接收:该中断为第二优先级。当接收FIFOFIFO中的有效数据少于中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收预定的触发点数量,但至少有一个字节时,如果超过接收3.53.54.54.5个字节个字节所需要的时间仍没有接收到数据,那将触发该中断。所需要的时间仍没有接收到数据,那将触发该中断。对接收对接收FIFOFIFO的任何操作都会清零该中断标志;的任何操作都会清零该中断标志;接收接收FIFOFIFO1 12 23 34 45 56 67 79 910101111121213131414151516168 8触发点设置触发点设置=8=8U0RBRU0RBR说明说明:“3.53.54.54.5个字节的时间个字节的时间”,其意思是在串口当前的波特率下,发其意思是在串口当前的波特率下,发送送3.53.54.54.5个字节所需要的时间;个字节所需要的时间;U0RSRU0RSRD DA AT TA ARxD0RxD0U0IIR3:1U0IIR3:1xxxxxxU0IIR0U0IIR01 11101100 0 xxxxxx1 1注意注意:当接收:当接收FIFOFIFO中存在多个数据,中存在多个数据,从从U0RBRU0RBR读取数据,但是没有读完所有读取数据,但是没有读完所有数据,那么在经过数据,那么在经过3.53.54.54.5个字节的个字节的时间后将触发时间后将触发CTICTI中断;中断;1 12 23 34 45 56 67 79 910101111121213131414151516168 8U0RBRU0RBRU0TSRU0TSRTxD0TxD0U0IIR3:1U0IIR3:1xxxxxxU0IIR0U0IIR01 1UART0相关寄存器描述中断源说明中断源说明lTHRETHRE中断中断:该中断为第三优先级。当发送:该中断为第三优先级。当发送FIFOFIFO为空并且满足一为空并且满足一定的条件时,该中断将被触发。这些条件是:定的条件时,该中断将被触发。这些条件是:发送发送FIFOFIFO1.1.系统启动时,虽然发送系统启动时,虽然发送FIFOFIFO为空,为空,但不会产生但不会产生THRETHRE中断。中断。D DA AT TA A1101100 0U0TSRU0TSR2.2.在上一次发生在上一次发生THRETHRE中断后,向发送中断后,向发送FIFOFIFO中写入中写入1 1个字节数据,将在延时一个字节数据,将在延时一个字节加上一个停止位后发生个字节加上一个停止位后发生THRETHRE中中断。断。这是因为:如果发送移位寄存器为空,这是因为:如果发送移位寄存器为空,那么写入发送那么写入发送FIFOFIFO的数据将直接进入发送移的数据将直接进入发送移位寄存器;位寄存器;此时发送此时发送FIFOFIFO仍然为空,如果立即产生仍然为空,如果立即产生THRETHRE中断,就会影响紧接着要写入发送中断,就会影响紧接着要写入发送FIFOFIFO的数据;的数据;所以在发送完该字节以及一个停止位后,所以在发送完该字节以及一个停止位后,才产生才产生THRETHRE中断;中断;3.3.如果在发送如果在发送FIFOFIFO中有过两个字节以中有过两个字节以上的数据,但是现在发送上的数据,但是现在发送FIFOFIFO为空时,为空时,将立即触发将立即触发THRETHRE中断。中断。当当THRETHRE中断为当前有效的最高优先级中断为当前有效的最高优先级中断时,往中断时,往U0THRU0THR写数据,或者对写数据,或者对U0IIRU0IIR的读操作,将使的读操作,将使THRETHRE中断复位。中断复位。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位765:3210功能功能Rx触发点设置触发点设置复位复位TxFIFO复位复位RxFIFO使能使能FIFOFIFOFIFO控制寄存器控制寄存器U0FCR U0FCR控制控制UART0接收和发送接收和发送FIFO的操作。的操作。EnFIFOEnFIFO:FIFOFIFO使能。该位的任何变化都将清空使能。该位的任何变化都将清空UART0UART0的的FIFOFIFO。1 1:使能使能UART0UART0的接收和发送的接收和发送FIFOFIFO,并且允许访问,并且允许访问U0FCR7:1U0FCR7:1。0 0:禁止接收禁止接收FIFOFIFO,此时接收缓存只有,此时接收缓存只有1 1个字节。而发送个字节。而发送FIFOFIFO不会被关闭。不会被关闭。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位765:3210功能功能Rx触发点设置触发点设置复位复位TxFIFO复位复位RxFIFO使能使能FIFOFIFOFIFO控制寄存器控制寄存器U0FCR复位复位RxFIFORxFIFO:接收:接收FIFOFIFO复位。当该位置位时,复位。当该位置位时,UART0UART0接收接收FIFOFIFO中的所有字节中的所有字节被清零并复位指针逻辑。被清零并复位指针逻辑。注意注意:该位会自动清零。:该位会自动清零。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位765:3210功能功能Rx触发点设置触发点设置复位复位TxFIFO复位复位RxFIFO使能使能FIFOFIFOFIFO控制寄存器控制寄存器U0FCR复位复位TxFIFOTxFIFO:发送:发送FIFOFIFO复位。当该位置位时,复位。当该位置位时,UART0UART0发送发送FIFOFIFO中的所有字节中的所有字节被清零并复位指针逻辑。被清零并复位指针逻辑。注意注意:该位会自动清零。:该位会自动清零。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位765:3210功能功能Rx触发点设置触发点设置复位复位TxFIFO复位复位RxFIFO使能使能FIFOFIFOFIFO控制寄存器控制寄存器U0FCR:这些位保留,用户程序不要向这些位写入:这些位保留,用户程序不要向这些位写入1 1。UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位765:3210功能功能Rx触发点设置触发点设置复位复位TxFIFO复位复位RxFIFO使能使能FIFOFIFOFIFO控制寄存器控制寄存器U0FCRRxRx触发点设置触发点设置:通过设置这两位可以调整接收:通过设置这两位可以调整接收FIFOFIFO中触发中触发RDARDA中断的有效字中断的有效字节数量。节数量。0000:触发点触发点0 0(1 1字节);字节);0101:触发点触发点1 1(4 4字节);字节);1010:触发点触发点2 2(8 8字节);字节);1111:触发点触发点3 3(1414字节);字节);U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口接口U0FCR与与CPU内内核相连核相连U0DLM U0DLLU0THRU0TSRTxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLP11D0D1D2D3D4D5D6D70UART0相关寄存器描述相关寄存器描述线状态控制寄存器线状态控制寄存器U0LCR位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶设置奇偶设置停止位停止位字长字长UARTUART数据帧结构数据帧结构停止位停止位(12位位)数据数据(58位位)奇偶校验位奇偶校验位(可选可选)起始位起始位U0LCR寄存器:寄存器:U0LCR U0LCR控制发送和接收数据帧的格式。控制发送和接收数据帧的格式。U0THRU0TSRTxD0U0LCRU0LSRU0IIRU0IERU0DLM U0DLLU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLLUART0相关寄存器描述线状态控制寄存器线状态控制寄存器位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶设置奇偶设置停止位停止位字长字长字长字长:这些位控制数据长度。:这些位控制数据长度。0000:5:5位字符长度;位字符长度;0101:6:6位字符长度;位字符长度;1010:7:7位字符长度;位字符长度;1111:8:8位字符长度;位字符长度;位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶设置奇偶设置停止位停止位字长字长U0LCRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL线状态控制寄存器线状态控制寄存器U0LCR位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶设置奇偶设置停止位停止位字长字长停止位停止位:控制每帧数据包含的停止位个数。:控制每帧数据包含的停止位个数。0 0:1:1个停止位;个停止位;1 1:2:2个停止位个停止位;UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL线状态控制寄存器线状态控制寄存器U0LCR位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶使能奇偶使能停止位停止位字长字长奇偶使能奇偶使能:控制是否进行奇偶校验。如果使能,发送时将添加一位校验位。:控制是否进行奇偶校验。如果使能,发送时将添加一位校验位。0 0:禁止奇偶产生和校验;禁止奇偶产生和校验;1 1:使能奇偶产生和校验;使能奇偶产生和校验;奇偶选择奇偶选择:设置奇偶校验类型。:设置奇偶校验类型。0000:奇数奇数(数据位数据位+校验位奇数校验位奇数);0101:偶数偶数(数据位数据位+校验位偶数校验位偶数);1010:校验位强制为校验位强制为1 1;1111:校验位强制为校验位强制为0 0;UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL线状态控制寄存器线状态控制寄存器U0LCR位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶使能奇偶使能停止位停止位字长字长间隔间隔:当该位为:当该位为1 1时,输出引脚(时,输出引脚(TxD0TxD0)强制为逻辑)强制为逻辑0 0,可以引起通信对方,可以引起通信对方(LPC2000)(LPC2000)产生间隔中断。在某些通信方式中,使用间隔中断作为通信的起产生间隔中断。在某些通信方式中,使用间隔中断作为通信的起始信号(如:始信号(如:LIN BusLIN Bus)。)。0 0:禁止间隔发送;禁止间隔发送;1 1:使能间隔发送;使能间隔发送;UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL线状态控制寄存器线状态控制寄存器U0LCR位位765:4621:0功能功能除数锁存除数锁存间隔间隔奇偶选择奇偶选择奇偶使能奇偶使能停止位停止位字长字长除数锁存除数锁存:因为:因为U0DLLU0DLL和和U0RBR/U0THRU0RBR/U0THR的地址重叠,通过设置该位可以指定其的地址重叠,通过设置该位可以指定其中某个寄存器操作。中某个寄存器操作。0 0:禁止访问除数锁存寄存器;禁止访问除数锁存寄存器;1 1:使能访问除数锁存寄存器;使能访问除数锁存寄存器;UART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器 U0LSR为只读寄存器,它反映了为只读寄存器,它反映了UART0接收和发送模块的状态信息。接收和发送模块的状态信息。RDRRDR:接收数据就绪。判断该位是否置一,决定能否从:接收数据就绪。判断该位是否置一,决定能否从FIFOFIFO中读取数据。中读取数据。0 0:U0RBR:U0RBR为空;为空;1 1:U0RBR:U0RBR中包含有效数据。从接收中包含有效数据。从接收FIFOFIFO中读走所有数据后,恢复为中读走所有数据后,恢复为0 0。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与与CPU内内核相连核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器OEOE:溢出错误标志。当:溢出错误标志。当U0RBRU0RBR寄存器中已经有新的字符就绪,而接收寄存器中已经有新的字符就绪,而接收FIFOFIFO已已满时,该位置位。满时,该位置位。0 0:接收缓存区没有溢出;接收缓存区没有溢出;1 1:接收缓存区发生溢出错误。接收缓存区发生溢出错误。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与与CPU内内核相连核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器PEPE:奇偶校验错误。在使能奇偶校验位之后,对所有接收的数据都进行奇偶:奇偶校验错误。在使能奇偶校验位之后,对所有接收的数据都进行奇偶校验,如果与校验,如果与U0LCRU0LCR中的设置不符,将引起奇偶校验错误。中的设置不符,将引起奇偶校验错误。0 0:没有发生奇偶校验错误;没有发生奇偶校验错误;1 1:发生奇偶校验错误。读操作使该位恢复为发生奇偶校验错误。读操作使该位恢复为0 0。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器FEFE:帧错误标志。当接收字符的停止位为:帧错误标志。当接收字符的停止位为0 0时,产生帧错误。时,产生帧错误。0 0:没有发生帧错误;没有发生帧错误;1 1:发生帧错误。读取该位时恢复为发生帧错误。读取该位时恢复为0 0。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器BIBI:间隔中断标志。在发送数据时,如果:间隔中断标志。在发送数据时,如果RXD0RXD0引脚保持低电平,将产生间隔引脚保持低电平,将产生间隔中断。发生间隔中断后,接收模块停止数据接收。中断。发生间隔中断后,接收模块停止数据接收。0 0:没有发生间隔中断;没有发生间隔中断;1 1:发生间隔中断。发生间隔中断。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器THRETHRE:反映:反映U0THRU0THR是否为空,也可以认为发送是否为空,也可以认为发送FIFOFIFO是否为空。是否为空。0 0:不为空;不为空;1 1:空。对空。对U0THRU0THR进行写操作,使该位恢复为进行写操作,使该位恢复为0 0。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器TEMTTEMT:当发送移位寄存器和:当发送移位寄存器和U0THRU0THR均为空时,该位置位。均为空时,该位置位。0 0:不为空;不为空;1 1:空。对空。对U0THRU0THR进行写操作,使该位恢复为进行写操作,使该位恢复为0 0。U0LSRUART0相关寄存器描述U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLM U0DLL位位76543210功能功能RXFETEMTTHREBIFEPEOERDR线状态寄存器线状态寄存器RXFERXFE:如果一个带有接收错误(如帧错误、奇偶错误或间隔中断)的字符装:如果一个带有接收错误(如帧错误、奇偶错误或间隔中断)的字符装入入U0RBRU0RBR时,该位置位。时,该位置位。0 0:U0RBR:U0RBR中没有接收错误,或中没有接收错误,或U0FCR0U0FCR0为为0 0;1 1:U0RBR:U0RBR中包含至少一个中包含至少一个UART0 RxUART0 Rx错误。错误。U0LSR5.10 UART0使用使用UART0注意要点注意要点 U0RBRU0RBR与与U0THRU0THR在同一地址上,但实际上是两个独立的寄存器,在同一地址上,但实际上是两个独立的寄存器,读操作时选择读操作时选择U0RBRU0RBR,写操作时选择,写操作时选择U0THRU0THR;U0DLLU0DLL与与U0RBR/U0THRU0RBR/U0THR、U0DLMU0DLM与与U0IERU0IER在同一地址上,通过除数在同一地址上,通过除数访问位访问位DLABDLAB选择。当该位为选择。当该位为1 1时,选择时,选择U0DLLU0DLL和和U0DLMU0DLM。为。为0 0时,选时,选择择U0RBR/U0THRU0RBR/U0THR和和U0IERU0IER;无论在无论在U0FCRU0FCR中是否使能中是否使能FIFOFIFO,接收,接收FIFOFIFO不能被禁止。关闭不能被禁止。关闭FIFOFIFO后,接收后,接收FIFOFIFO只有一个字节缓冲;只有一个字节缓冲;波特率计算公式:波特率计算公式:U0DLMU0DLM、U0DLL=FU0DLL=FPCLKPCLK/(16baud)/(16baud);UART0应用示例操作流程设置引脚连接模块设置引脚连接模块将对应将对应IO连接到连接到UART0设置串口波特率设置串口波特率设置串口工作模式设置串口工作模式发送或接收数据发送或接收数据检查串口状态字或检查串口状态字或等待串口中断等待串口中断UART0应用示例初始化代码UART0UART0初始化代码:初始化代码:#define UART_BPS 115200#define UART_BPS 115200Void UART0_Ini(void)Void UART0_Ini(void)uint16 Fdiv;uint16 Fdiv;PINSEL0=0 x00000005;PINSEL0=0 x00000005;U0LCR=0 x83;U0LCR=0 x83;Fdiv=(Fpclk/16)/UART_BPS;Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/256;U0DLM=Fdiv/256;U0LLM=Fdiv%256;U0LLM=Fdiv%256;U0LCR=0 x03;U0LCR=0 x03;定义表示波特率的宏,方便修改定义表示波特率的宏,方便修改设置引脚连接模块设置引脚连接模块置位除数锁存位置位除数锁存位根据波特率计算分频值根据波特率计算分频值设置除数寄存器设置除数寄存器(除数锁存访问位必须置位除数锁存访问位必须置位)清除除数锁存位,并设置工作模式清除除数锁存位,并设置工作模式UART0应用示例初始化代码UART0UART0初始化代码:初始化代
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!