智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4789|回复: 3
打印 上一主题 下一主题

请教ARM7与51单片机串行通讯问题

[复制链接]

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
威望
161
贡献
86
兑换币
88
注册时间
2012-11-5
在线时间
22 小时
跳转到指定楼层
1#
发表于 2015-5-25 11:01:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机发送部分:

                        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能接收到正确数字?

回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
威望
161
贡献
86
兑换币
88
注册时间
2012-11-5
在线时间
22 小时
2#
 楼主| 发表于 2015-5-25 11:08:27 | 只看该作者
不要沉贴。。。。。
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
威望
161
贡献
86
兑换币
88
注册时间
2012-11-5
在线时间
22 小时
3#
 楼主| 发表于 2015-5-25 13:48:03 | 只看该作者
有人吗
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
威望
161
贡献
86
兑换币
88
注册时间
2012-11-5
在线时间
22 小时
4#
 楼主| 发表于 2015-5-25 17:26:08 | 只看该作者
自己找到原因了  是延时太短了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-4-25 02:36 , Processed in 0.037322 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表