您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 【已解决】bf592 串口数据接收的一直为0
本帖共有1449个阅读者
发表帖子 发表投票 回复主题
【已解决】bf592 串口数据接收的一直为0
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【已解决】bf592 串口数据接收的一直为0

// baud rate = 9600

void UARTinit(unsigned short div)
{//BAUD RATE = SCLK/(16 x Divisor)   FSCLK=135mhz  FSCLK = 90 mhz
*pUART0_GCTL=0x0009;                                                                                        
*pUART0_LCR=0x0080;// DLAB=1 允许访问DLL 和DLH
*pUART0_DLL=div;
*pUART0_DLH=div>>8; //DLL DLH分别赋值
*pUART0_LCR=0x0003;//  允许访问 RBR THR 和IER
*pUART0_IER=0x0001;//  接收中断允许
}

void UART_Init_Interrupts(void)
{
// *pSIC_IAR0 = 0xffffffff;    
// *pSIC_IAR1 = 0xf3ffffff;     // UART 中断定义
// *pSIC_IAR2 = 0xfffFFfff;    
register_handler(ik_ivg10, UART_ISR);  // UART ISR -> IVG 10
*pSIC_IMASK |= 0x00008000;
}

EX_INTERRUPT_HANDLER(UART_ISR)
{

g2ReceiveData++;
if(*pUART0_LSR&DR)          //判断是否有新的数据。
{
  if(cont>100)   //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
  ////if(cont>4)
  {
      cont = 0;
  }  
  RXbuf[cont]=*pUART0_RBR;
  cont++;
}

}

能够进入中断,并且 *pUART0_MCR |= 1 进入自发自收,数据接收正常.不使用自收自发模式 DM模式与普通普试收到的数据一样也为0

发送引脚与接收引脚都设为高电平,都为输入,和输出模式

请高手帮助解答,谢谢



「该帖子被 red_wlh 在 2012-09-25 14:06:15 编辑过」

学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/25 11:45:00
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你检查一下你的DIV值送的对不对,会不会是波特率问题。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/26 8:47:11
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
谢谢版主,已经解决.是因为引脚复用配置出现的问题.接收引脚没有配置为串口接收模式。

学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/28 10:15:15
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159165 Call, 1 Queries, Processed in 0.013672 second(s),