社区导航

 

搜索
查看: 519|回复: 4

[求助] AT91SAM7S256串口丢数据

[复制链接]

19

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-12-6 14:33 | 显示全部楼层 |阅读模式
AT91SAM7S256串口接收指令发送多帧数据时,最后一帧总是丢两字节数据!

不用串口指令发送却是正常发送,没有丢数据!

同样的指令却是不同的结果!郁闷的不行!
此帖出自Atmel MCU论坛


回复

使用道具 举报

19

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-12-6 14:38 | 显示全部楼层
void send(unsigned int add_buf,unsigned int count)
{
        //while(!((*AT91C_US1_CSR)&(1<<4)));//ENDTX=1·¢Ëí ENDTX=0μè′y
         *AT91C_US1_TPR=add_buf;
          *AT91C_US1_TCR=count;
        *AT91C_US1_PTCR = AT91C_PDC_TXTEN;
        while(!((*AT91C_US1_CSR)&(1<<4)));//ENDTX=1·¢Ëí ENDTX=0μè′y
}

void send_sz(unsigned char *dat,unsigned char count)
{
        unsigned char i;
        for(i=0;i<count;i++)
        {
                Uart1PutChar(dat[i]);
        }
}

//1|ÄüÖ¸áî½aÎö
                   chech_order();
                        if(ORD.gn==1)
                        {
                                        send_qu_liebiao();
                                delay_ms(10);
                        }
                        else if (ORD.gn==2)
                        {
                                send_dat(ORD.qq ,ORD.kk );
                                        delay_ms(10);
                        }


回复

使用道具 举报

139

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-3-19 09:18 | 显示全部楼层
看看你的时钟源是哪个?准不准


回复

使用道具 举报

55

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-3-27 15:09 | 显示全部楼层
看样子楼主很久不曾来过
毛晓婕 13823541468 ATMEL深圳


回复

使用道具 举报

19

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-5-7 17:18 | 显示全部楼层
好久没来!这个问题已经解决了!可以结贴了!!!

问题是犯了常规概念性错误问题!CPU指令执行速度块,而串口是按波特率来传送数据的!主程序已经来回折腾了,串口还没结束数据传输,主程序又去折腾串口发送缓冲区了!巧不巧的就把发送缓冲区重新赋值了!从而导致丢数据!解决的方法是串口发送数据时检查有没有全部发送完,再进行其他操作!这样会有等待,任务不多就凑合用了!


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-5-25 04:48 , Processed in 0.159176 second(s), 16 queries , Gzip On, MemCache On.

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