串口求教
时间:10-02
整理:3721RD
点击:
请教大家关于串口的几个问题。
系统前级产生1M/s的数据量,需要通过串口发送出去,串口比特率是38600bps, 我设计的串口是前级输出经过fifo 只要有数据进来,就发送出去,数据量大于比特率,这样就会丢数据,现在迷惑的是不知道丢了哪些数据,因为前级送出的数不是连续的,过一段时间送大量数据,再过一段时间再送,总的是1M/s 的数据量,是不是丢的是后面的数据?还有一个问题 前级数据产生的速度跟比特率有什么联系吗?我认为是没有的?我假设前级发送的数据量是没0.1ms发送一个数据,38600bps比特率,但接收端接受的数据总是隔一个数丢一个数。比如发1,2,3,4,接到2,4...
系统前级产生1M/s的数据量,需要通过串口发送出去,串口比特率是38600bps, 我设计的串口是前级输出经过fifo 只要有数据进来,就发送出去,数据量大于比特率,这样就会丢数据,现在迷惑的是不知道丢了哪些数据,因为前级送出的数不是连续的,过一段时间送大量数据,再过一段时间再送,总的是1M/s 的数据量,是不是丢的是后面的数据?还有一个问题 前级数据产生的速度跟比特率有什么联系吗?我认为是没有的?我假设前级发送的数据量是没0.1ms发送一个数据,38600bps比特率,但接收端接受的数据总是隔一个数丢一个数。比如发1,2,3,4,接到2,4...
问题描述太不清楚了数据量是1M bit还是1 Bits?如果是1M bit ,串口才几十K,你要怎么穿,肯定要加个决策,自己决定需要传送哪些数据。怎么又假设0.1ms一个数据,这样就不会丢数了,才10K bit,够了。如果是有规律的,那就是程序的问题了,好好检查一下,可能是某个位置的控制出现了小问题。
很明显,FIFO满了如果还有数据来就会丢数据。
如果长时间内输入数据量还是大于输出数据量(比特率/10),要想不丢数据就只能增大波特率了; 如果只是短时间内有突发大量数据,可以通过增大FIFO深度的方法。
