TI中文支持网
TI专业的中文技术问题搜集分享网站

5438A 串口采用查询方式接收数据包,只收到最后1字节

各位大神好,我使用的是5438A。

串口使用标志位查询方式接收数据,但通过仿真调试,我的接收buf里只收到了 数据包的最后一个字节(以前遇到过,但怎么也想不起来是如何解决的o(╯□╰)o)

变量:

uint_8 buf[1024];

uint_8 rx_tmp;

uint_16 index;

程序:

wile(1) {

      if ( UCA0IFG & UCRXIFG) {

           rx_tmp =  UCA0RXBUF;

          buf[ index++ ] = rx_tmp; 

     }

}

仿真结果:   只有buf[0] 显示了上位机发出数据包的最后一个字节,buf其他部分均无数据,index值为1,只收了最后1个字节,为什么前面的字节全部丢了呢?

谢谢~~

step by step:

楼主,

     能不能把buf数组设小点试试,另外能不能多post点代码上来,更好找问题一些。

user3785308:

回复 step by step:

楼上的大神您好,应该和大小没有关系的,我实际代码中 size 是256。

在给一些的话  那就是 串口的init(8MHz   ;9600;查询所以没开中断) :主循环什么的。。。。。。。没有半点关系啊   。。。。。

关键就是为什么     只接到了  最后!!最后 1个字节???  其它的字节呢??  我设了断点的,上位机发包,直接就接了数据包的最后一个字节!

不用怀疑上位机或者其它的了  因为用中断处理的话,完全没有问题!!为什么查询就是不行,错在哪里??

step by step:

回复 user3785308:

楼主你好,

     如果上位机只发一个字节是否可以进你设置的断点?

Ken Wang:

Hi  Ray,

   通过你的描述,我感觉问题应该是处在你主程序的判断语句里面,

你用的是查询接收应该不需要是采用if ( UCA0IFG & UCRXIFG)的方式,

你可以试试直接使用while(! UCRXIFG);来一直等待接收缓存中有数据,然后再去读取数据,清楚标志位。

谢谢

ken

 

赞(0)
未经允许不得转载:TI中文支持网 » 5438A 串口采用查询方式接收数据包,只收到最后1字节
分享到: 更多 (0)