这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » UART,PE 关于UART线状态寄存器奇偶错误位(PE)的一个问题

共2条 1/1 1 跳转至

UART,PE 关于UART线状态寄存器奇偶错误位(PE)的一个问题

院士
2006-09-17 18:14:16     打赏
UART,PE 关于UART线状态寄存器奇偶错误位(PE)的一个问题



关键词: 关于     状态     寄存器     奇偶     错误     一个     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 51单片机的串口常发一组数据(0x01 0x23 0x45 0x67),发送数据格式为:9600bps 8位数据 1个停止位,前两个数据TB8强制为0,后两个数据TB8强制为1。LPC2132接收数据正确,但U0LSR的PE位不正确。实验值为01 E5 23 E1 45 61 67 61,上述数据串的E1为何会出现,理解应为E5
void __irq IRQ_UART0(void)
{
  if((U0IIR&0x0f)==0x04)
  {
    buf[1]=U0LSR;
    buf[0]=U0RBR;
    U0THR=buf[0];    
    while((U0LSR&0x40)==0);
    U0THR=buf[1];    
    while((U0LSR&0x40)==0);}
  }
  VICVectAddr=0x00;    
}

void main(void)
{
  PINSEL0=(PINSEL0&(~0x0f))|0x05;//管脚连接设置,不影响其它管脚连接
  U0LCR=0x80;
  Fdiv=(Fpclk/16)/9600;
  U0DLM=Fdiv/256;
  U0DLL=Fdiv%256;
  U0LCR=0x1b;//9600bps 8位数据 1个停止位 偶校验
  U0FCR=0x01;//设置FIFO为1    
  U0IER=0x01;//允许RDA中断
  IRQEnable();
  VICIntSelect=0x00000000;
  VICVectCntl0=0x20|0x06;
  VICVectAddr0=(uint32)IRQ_UART0;
  VICIntEnable=1<<0x06;    
  while (1);
} 1: 奇偶错误位(PE)启用UART奇偶错误检测功能,是否只能在开启FIFO功能时才起作用,我的测试结果是:无FIFO功能时,奇偶错误位(PE)在任何时候都不变;开启FIFO功能时,PE才会变化,有人是否也遇到过类似情况?

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]