8250有多少个寄存器,简述其功能?
2013-05-27
展开全部
8250提共了9个寄存器。严格说来,只有8个。因为其中有两个寄存器是共享同一个寄存器。各寄存器的作用与寄存位的含义如下表所示: 在上图的端口地址标识中,小括号中还有一个地址。这是因为在PC中。一般都会有两个串口。括号外的是主串口的端口地址,而括号里面的是从串口地址。
从上图可以看到8250的寄存器比较繁多,操作比较复杂。我们依次来看每个寄存器的含义:
数据接收寄存器(RBR): 存放接收到的数据。这些数据是已经去掉了发送位,停止位和奇偶检验位了的。也就是串口接收到的有效数据。
数据发送寄存器(THR):用来存放要发送的数据。这是用户要写入的数据。不包含上述的附加位。
从上图中可以看到,RBR和THR的端口地址是一样的。也就是说,它们是操作的是同一个寄存器。只有在寄存器空闲的时候,才能写入数据。也就是说,我们在中断/轮询处理过程中,先把这个寄存器的值取出。然后再写入我们要发送的数据。
中断允许寄存器(IER):8250有四级中断。分别为:接收出错中断。接收寄存器满中断。发送寄存器空中断。Moden状态改变中断。四种中断都对应寄存器的1个位。剩余四位无意义,为0。从这里可以看到,发送数据并不是每次都要等接收中断来了,才能发送。也可以在发送寄存器空的中断处理中发送。
中断标识寄存器(IIS):既然8250对应有四种中断。那中断过来之后,怎么区分是哪种类型的中断呢?这就是中断标识寄存器的作用。IIS中有表示中断状态的对应位。都是相对于IER来说的。另外,与IER的高四位始终为0的情况相反的是,IIS的前二位能够驱分芯片的类型。如:8250的IIS前二位为00。而16550A芯片的IIS前二位为11。这里顺带提一下8250和16550A的区别:8250每次只能接收或者发送1个字节。,而16550A则提供了一个FIFO缓存区。有16个字节的缓存空间。这样就可以减轻CPU的负担。在16550A中,新增了一个寄存器FIFO控制寄存器(FCR).其中有一个标识可以启用或者禁用FIFO。
线路控制寄存器(LCR):可以用来控制数据的传输方式。比如说设置奇偶检验位,数据位的长度,停止位等。
Moden控制寄存器(MCR):用来向moden发送RTS/DTR信号。在这个寄存器中还要注意有二个特殊的位。一个是自检位。该位被置之后,数据在8250的内部移动。可以用来检测8250数据接收与发送功能。另外的一个位是中断允许位。它允许8250向CPU产生中断.
线路状态寄存器(LSR):用来检查线路的状态。例如数据包出错原因,发送寄存器/接收寄存器空状态标识以及终止符检测。
Moden状态寄存器检测(MSR):用来采集moden的状态。例如DSR和CTS信号检测。载波检测等.
除法寄存器:一般用来设定波特率:它是低8位在发送/读取寄存器。高8位在IER寄存器,通过LCR有最高位来控制除法寄存器是否
从上图可以看到8250的寄存器比较繁多,操作比较复杂。我们依次来看每个寄存器的含义:
数据接收寄存器(RBR): 存放接收到的数据。这些数据是已经去掉了发送位,停止位和奇偶检验位了的。也就是串口接收到的有效数据。
数据发送寄存器(THR):用来存放要发送的数据。这是用户要写入的数据。不包含上述的附加位。
从上图中可以看到,RBR和THR的端口地址是一样的。也就是说,它们是操作的是同一个寄存器。只有在寄存器空闲的时候,才能写入数据。也就是说,我们在中断/轮询处理过程中,先把这个寄存器的值取出。然后再写入我们要发送的数据。
中断允许寄存器(IER):8250有四级中断。分别为:接收出错中断。接收寄存器满中断。发送寄存器空中断。Moden状态改变中断。四种中断都对应寄存器的1个位。剩余四位无意义,为0。从这里可以看到,发送数据并不是每次都要等接收中断来了,才能发送。也可以在发送寄存器空的中断处理中发送。
中断标识寄存器(IIS):既然8250对应有四种中断。那中断过来之后,怎么区分是哪种类型的中断呢?这就是中断标识寄存器的作用。IIS中有表示中断状态的对应位。都是相对于IER来说的。另外,与IER的高四位始终为0的情况相反的是,IIS的前二位能够驱分芯片的类型。如:8250的IIS前二位为00。而16550A芯片的IIS前二位为11。这里顺带提一下8250和16550A的区别:8250每次只能接收或者发送1个字节。,而16550A则提供了一个FIFO缓存区。有16个字节的缓存空间。这样就可以减轻CPU的负担。在16550A中,新增了一个寄存器FIFO控制寄存器(FCR).其中有一个标识可以启用或者禁用FIFO。
线路控制寄存器(LCR):可以用来控制数据的传输方式。比如说设置奇偶检验位,数据位的长度,停止位等。
Moden控制寄存器(MCR):用来向moden发送RTS/DTR信号。在这个寄存器中还要注意有二个特殊的位。一个是自检位。该位被置之后,数据在8250的内部移动。可以用来检测8250数据接收与发送功能。另外的一个位是中断允许位。它允许8250向CPU产生中断.
线路状态寄存器(LSR):用来检查线路的状态。例如数据包出错原因,发送寄存器/接收寄存器空状态标识以及终止符检测。
Moden状态寄存器检测(MSR):用来采集moden的状态。例如DSR和CTS信号检测。载波检测等.
除法寄存器:一般用来设定波特率:它是低8位在发送/读取寄存器。高8位在IER寄存器,通过LCR有最高位来控制除法寄存器是否
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询