数据收发
各位大牛:
我在调试两个小系统之间的数据收发硬件接口,交互数据量有点大,平均4.36us一个byte,是使用中断接收的,接收到的数据存储到一个数据buff中,再另外创建一个线程去读数据,但是buff总会达到满的程度,buff的写入速度比读取的速度要大得多,但是由于产品特性,这个buff的数据是不能被覆盖的,请问有什么办法可以让读取速度比写入速度快?谢谢!
------解决思路----------------------看你用什么接口啦,用usb,sata,pcie,hdmi等接口这些都不是个事
------解决思路----------------------SPI 是相对低速的传输接口,与芯片的运行速度相比,应该是很慢的。你怎么会读的慢呢?检查你的系统中,为什么使读数据的优先级很低。
------解决思路----------------------spi想达到这个速度,需要硬件spi才行
------解决思路----------------------把BUFFER缓冲区写满后置标志位,然后一次性读取,再清空BUFFER
------解决思路----------------------创建的线程取数速度居然会比数据放入队列中的速度还慢?你用的是啥处理器?处理器频率要是不慢的话应该是线程中其他什么过程占用时间了
------解决思路----------------------使用一个定时器,每隔一定时间就进中断读取缓冲区中的内容,中断间隔时间计算:比如缓冲区大小为512byte,则缓冲区填满需要4.36*512 = 2.2ms。可以将中断间隔时间设为2ms。这样基本可以确定缓冲区中的数据永远不可能被覆盖