i2c的读取cmd发送完毕后并不会立刻同步的读到数据
来源:互联网 发布:编程语言执行效率 编辑:程序博客网 时间:2024/04/30 07:31
DDR和ARM的频率改变后I2C又出现了问题:
先前的处理逻辑是当发送缓冲区为空后我会去读接收缓冲区中的数据,其判断依据为进入中断后先读取接收缓冲区的数据计数器的值根据该值来决定读取接收fifo的次数。以前的这种逻辑一直是好的,这是建立在一个这样的假设上的:如果发送缓冲区为空了,说明要求读取的命令都已经成功发送完毕了,那么接收缓冲fifo中就应该有和读取命令发送成功次数相一致的数据被收到,也就是我每成功发出一个读取的CMD那么接收fifo当中就一定会有一个收到的字节。
在频率改变后我发现,当我把9个读取命令全部压入发送缓冲后,当发送缓冲为空的时候我去读取接收fifo的计数器,其值为8。这显然会使我丢掉一个数据。如此看来先前的假设就是错误的了,也就是发送和接收并不是同步的,当一个读取命令发送完毕后,接收缓冲会在稍晚的时候才会收到数据。因此我的驱动逻辑需要做出相应的改变。
顺便:
当接收fifo中没有新的数据时,你去读取它,总是读到上次的最后一个数据,也就是fifo为空的时候,总是残留着上次最后一个值
- i2c的读取cmd发送完毕后并不会立刻同步的读到数据
- 读取arm串口时读到了发送的数据
- unity Instantiate后立刻SetActive(false)会执行的方法
- 选举完毕之后的数据同步.
- 一些读到会有共鸣的句子
- 关于STM32F10X 刚配置完定时器后 会立刻进入 中断的 BUG 修复
- Qt 实时读串口数据,并将读到的数据从网口发送出去
- XP登录后立刻注销的解决办法
- 同步所有已挂载的文件系统。所有缓存中的数据将被立刻写入磁盘
- 关于Arcgis数据导入mdb完成后如何立刻解除mdb的锁定
- TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?该怎么解决
- jbook移植完毕后发现订阅时发送的连接不能用,图片显示不出来。
- 基于 STM32 的硬件 I2C 读取 MPU6050 数据
- hibernate对象的三种状态以及插完一条数据后立刻获取到该条数据id
- 糟糕的开始并不会糟糕结束
- CoreBluetooth之数据的读取与发送
- 进入不到桌面,登录后立刻注销的解决办法
- GridView删除,更新后不能立刻刷新的问题解决方案
- Java学习日志--其他对象Math
- Android中xml的部分属性
- 图片管理类ImgCmdUtils
- cout 重定向到文件
- 云计算时代:大数据泡沫正无限膨胀
- i2c的读取cmd发送完毕后并不会立刻同步的读到数据
- 15个重要的Android代码
- QEMU编译问题
- 防止单例模式被攻击
- linux中rpm.bin文件与bin文件的区别?
- redirect stdout/stderr to a string
- C++中定义与声明
- C++读取txt文件
- 无堵塞的脚本加载