[MCU] 数据接收会错误

[复制链接]
 楼主| lizye 发表于 2020-4-4 11:49 | 显示全部楼层 |阅读模式
最近在F28035最小系统板子上开发一个DA卡系统,一块板子发送数据,另一块板子接收数据,需要通过发送和接收FIFO收发数据,接受和发送FIFO都能存放4个字节的数据,所以我的设计的是接收FIFO每接收到4个字节数据就产生一个接收中断读取FIFO中的数据。但是这样的话会有缺陷,如果发送数据和接收数据都在不间断进行,数据收发都不会产生错误,如果中断,比如信号传输线断开又连接上,这时候数据接收就会错误
zwll 发表于 2020-4-4 11:54 | 显示全部楼层

然后呢?你是怎么应对这个的呢        
 楼主| lizye 发表于 2020-4-4 11:56 | 显示全部楼层
我的解决方法是每当发送一个数据块(4个字节)时,就对接收FIFO进行清空,这样就不会因数据接收错位而错误接收数据了,问题出来了,如何有效的清空FIFO??
stly 发表于 2020-4-4 11:59 | 显示全部楼层

队头和队尾指针重合
dingy 发表于 2020-4-4 12:01 | 显示全部楼层
FIFO是一个寄存器,没有什么指针啊
supernan 发表于 2020-4-4 12:06 | 显示全部楼层
不管内容,只动指针
pangb 发表于 2020-4-4 12:08 | 显示全部楼层

“对接收FIFO清空”,手册上明确说明使用读的办法。

占了几个FIFO也可以知道。
ousj 发表于 2020-4-4 12:10 | 显示全部楼层

楼主应该使用全双工功能,我觉得这样更好,

不管你指的是SCI还是SPI,都可以这样使用。
xxmmi 发表于 2020-4-4 12:13 | 显示全部楼层
ScibRegs.SCIFFRX.bit.RXFIFORESET=0;       //复位FIFO指针为0
ScibRegs.SCIFFRX.bit.RXFIFORESET=1;       //重新启用FIFO

这样岂不是更简单?
lium 发表于 2020-4-4 12:15 | 显示全部楼层
这样是简单,但还要重新设置FIFO。
yufe 发表于 2020-4-4 12:17 | 显示全部楼层

如果FIFO里面的数据不使用,还清它干吗?
如果FIFO的数据是有用,那么必须要读它,一读不就自动清除了吗?
zhanglli 发表于 2020-4-4 12:21 | 显示全部楼层

Sci*Regs.SCIFFRX.bit.RXFIFORESET=0;
Sci*Regs.SCIFFRX.bit.RXFIFORESET=1;
这两句是可以使用的,但记得不能在SCI中断里面调用。
wangzsa 发表于 2020-4-4 12:24 | 显示全部楼层
FIFO芯片应该有专门的引脚处理啊
zhuhuis 发表于 2020-4-4 12:27 | 显示全部楼层
FIFO是一个寄存器
zwll 发表于 2020-4-4 12:30 | 显示全部楼层
这个还真不知道。
dingy 发表于 2020-4-4 12:32 | 显示全部楼层

没有相关的寄存器吗?
dingy 发表于 2020-4-4 12:36 | 显示全部楼层
ScibRegs.SCIFFRX.bit.RXFIFORESET=0;
yinxiangh 发表于 2020-4-4 12:39 | 显示全部楼层
如果FIFO里面的数据不使用,还清它干吗?
xxmmi 发表于 2020-4-4 12:42 | 显示全部楼层
这个怎么清除呢?
lium 发表于 2020-4-4 12:45 | 显示全部楼层
FIFO应该写入数据之后就会清除吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

9757

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部