您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 关于BF518串口通信的一些疑问:BF518下位机... 
本帖共有425个阅读者
发表帖子 发表投票 回复主题
关于BF518串口通信的一些疑问:BF518下位机发往上位机串口调试助手,显示是乱码?
懒得取名(论坛新手)
懒得取名
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:298
积分:28
注册时间:2014/2/13
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
关于BF518串口通信的一些疑问:BF518下位机发往上位机串口调试助手,显示是乱码?
BF518下位机发往上位机串口调试助手,显示是乱码?我是用的BF518开发板里面的例程跑程序,可是在调试助手里显示的是乱码,我不知道是为什么,请大侠们指点。部分代码如下:
unsigned char TXbuf[50]={"\nTest UART in ADSP-EDU-BF51x Board\r\n\n"};

void UART0_init(unsigned int rate)
{
unsigned int div;
div = SYSCLK/rate/16;
*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;//  接收中断允许
}

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

}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;    
*pSIC_IAR1 = 0xffffffff;     // UART 中断定义
*pSIC_IAR2 = 0xf3ffffff;
register_handler(ik_ivg10, UART0_ISR);
*pSIC_IMASK0 = 0x00400000;
}

void Test_TX(void)
{
int i;
for(i=0;i<50;i++) //发送测试函数,将生成的数据通过IR发送出去。
{
*pUART0_THR=TXbuf[i];
     while(!(*pUART0_LSR&0x0020)); //判断发送状态位是否为空。不为空等待
    }
}

主函数:
int main()
{
int i;
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
   *pPORTG_FER |= PG9|PG10;
   *pPORTG_MUX |= 1<<10;
UART0_init(9600);  //9600波特率,8位数据位,1位停止位
Init_Interrupts();
while(1)
{
Test_TX();
delay(10000);
}
}
我遇到的情况如下图:

上传的图片
  201422122593006.jpg [ 75.75 KB 683×487 ] (缩略时请点击查看原图)

 


上传的图片
  201422122594606.jpg [ 60.48 KB 683×487 ] (缩略时请点击查看原图)

 

数组变量
TXbuf[i] 的值和发送到调试助手显示的值是不一样的,也就是说
UART0_THR 的值是乱码吗,还是
*pUART0_THR=TXbuf[i]; 这条语句存在问题?T=0x54,e=0x65,s=0x73,t=0x74.
上传的图片
  201422122595406.jpg [ 166.12 KB 1109×540 ] (缩略时请点击查看原图)

 


我是一个菜鸟。
等级:论坛新手 参考IP地址:*.*.*.*
2014/2/21 23:07:11
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
换个USB转UART连接线,如果你确认你的板卡输入时钟是25MHz,系统时钟配置为100MHz,内核为400MHz,通常乱码是RS232接口芯片和你是用的USB转RS232连接线造成的。如果你确认USB转接线在其他板卡上没有问题,就查下RS232接口芯片。
如果是使用我们的板卡,可以联系返修,如果是自己做的,建议更换RS232芯片,型号可以用MAX3232ESE,注意尾椎一定要用ESE的。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/2/22 11:16:58
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
做一下广告,BF518(F)芯片长备百片现货,自用型号,保证正品,有需要可联系我,QQ:5516164

你们继续。

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/2/23 15:45:46
懒得取名(论坛新手)
懒得取名
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:298
积分:28
注册时间:2014/2/13
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
andy哥,谢谢你的指点。如你所说,我用的是你们的BF518 Core开发板是不带232芯片的。我没注意看硬件,只顾着程序部分了,欠考虑啊。

我是一个菜鸟。
等级:论坛新手 参考IP地址:*.*.*.*
2014/2/24 9:05:15
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159154 Call, 1 Queries, Processed in 0.015625 second(s),