微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > NEC单片机UART0串口接收时出现溢出错误,接收不到RXB0中数据,请

NEC单片机UART0串口接收时出现溢出错误,接收不到RXB0中数据,请

时间:10-02 整理:3721RD 点击:

单片机是NEC的uPD78F0513,在调试UART0通信时有溢出错误,在未读取RXB0寄存器之前先读取ASIS0,指示帧错误(如果接收完成时未检测到停止位),然后再读取RXB0寄存器,但是读出来的始终是00,我不知道是没有读出来,还是其它的什么原因.
出现帧错误是什么原因,该怎样解决呢?
请帮忙分析指点下,谢谢~
补充:下面是我的代码。
void UART0_Init( void )
{
TXE0 = 0; /* uart0 transmit disable */
RXE0 = 0; /* uart0 receive disable */
STMK0 = 1; /* INTST0 disable */
SRMK0 = 1; /* INTSR0 disable */
STIF0 = 0; /* INTST0 IF clear */
SRIF0 = 0; /* INTSR0 IF clear */
BRGC0 = UART0_BASECLK_4 | UART0_BASECLK_divISION;
ASIM0 = UART0_ASIM0_INITIALVALUE | UART0_DATA_LENGTH_8|UART0_STOP_BIT_1|UART0_PARITY_NONE;
/* INTST0 priority low */
STPR0 = 1;
/* INTSR0 priority low */
SRPR0 = 1;
/* TXD0 pin setting */
P1 |= 0x01;
PM1 &= ~0x01;
/* RXD0 pin setting */
PM1 |= 0x02;
}
void UART0_Start( void )
{
STMK0 = 0; /* INTST0 enable */
SRMK0 = 0; /* INTSR0 enable */
POWER0 = 1; /* uart0 enable */
TXE0 = 1; /* uart0 transmit enable */
RXE0 = 1; /* uart0 receive enable */
}
void  main( void )
{   
                UART0_Init();
                UART0_Start();
while (1)
{
                ;
}
}
__interrupt void MD_INTSR0( void )
{   
err_type = ASIS0;
rx_data = RXB0;
if( err_type & 0x07 )
                {
  CALL_UART0_Error( err_type );
  return;
}
                else CALL_UART0_Receive( );
}
单片机发送数据能够用串口调试助手接收到,所以没有贴出发送部分的程序代码;
有两种可能会进入INTSR0,第一种是UART0接收结束,第二种是产生接收错误;通过测试,我没有给单片机发送数据的前提下,程序运行后即进入INTSR0,那么就可能是由于产生接收错误而使程序进入INTSR0,并通过进一步测试产生的接收错误是帧错误(如果接收完成时未检测到停止位),我现在就是不知道为什么会产生帧错误,该从哪找到出现这个错误的原因?
请帮帮!

ddddddddddddddddddddddddddddddddddddd

谢谢小编分享学习资料

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top