0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

单片机

关于arm7与51单片机串行口通讯的问题

单片机发送部分:

                        ADV1=123;

                        ADV2=456;

                        ADV3=789;

                        printf("@%05u\n",ADV1);        

                        while(TI0==0);

                        delay(100);        

                        printf("#%05u\n",ADV2);

                        while(TI0==0);

                        delay(100);

                        printf("$%05u\n",ADV3);

ARM接收部分:

if((U1IIR & 0x0F) == 0x04)                // 接收数据可用 RDA

        {

                RxSign=U1RBR;

                if(RxSign=='@')

                {

                        for(i=0; i<13; i++)

                        {

                                RxBuf1[i] = U1RBR;                // "读取FIFO的数据,并清除中断        "

                        }

                }

                else if(RxSign=='#')

                {

                        for(i=0;i<13;i++)

                        {

                                RxBuf2[i] = U1RBR;        

                        }

                }

                else if(RxSign=='$')

                {

                        for(i=0;i<13;i++)

                        {

                                RxBuf3[i] = U1RBR;        

                        }

                }

        }

        else if((U1IIR & 0x0F) == 0x0C)                  //字符超时CTI 无中断挂起

        {

                while((U1LSR&0x01)==1)                   //U1RBR包含有效数据  

                {

                        if(i==0)

                                RxSign=U1RBR;

                        if(RxSign=='@')

                                RxBuf1[i-1] = U1RBR;                // 读取FIFO的数据,并清除中断        

                        else if(RxSign=='#')

                                RxBuf2[i-1] = U1RBR;

                        else if(RxSign=='$')

                                RxBuf3[i-1] = U1RBR;

                        i++;

                }

其中ARM  初始化U1FCR = 0xc1;                    触发点位14个字符

为什么RxBuf1接受的是123

RxBuf2和RxBuf3接收到的不是456,789而是56496,7855

刚接触串行通讯 网大神求解   

怎么才能使RxBuf2和RxBuf3能接收到正确数字?

先行谢谢各位

提问者:khgsf 地点:- 浏览次数:270 提问时间:10-22 11:35
我有更好的答案
提 交
2条回答
abc1763613206 10-05 02:30
这样看也看不出什么,不过你可以试试把 一组一组单独试试接收的情况在分析,
还有就是你每次接受的数据都是56496,7855?
你这里只用了一个帧头判定,不一定很准确,你可以参考下面的链接看看。
http://blog.csdn.net/gszhy/article/details/8594433
这里面对串口接收部分的处理方式还是很不错的,我之前就用过这种方法成功接收到我要的数据
60user63 10-06 04:36
用串口调试分别测试单片机与ARM看问题出在那一个上面。
撰写答案
提 交
1 / 3
1 / 3
相关单片机
具有音调控制的单片机立体声前置放大器
用于单片机与电子装置中的开关电源
单片机软硬件复位的条件都有啥
电动机的单片机控制
单片机应用系统开发实例导航