发表于:2005/7/30 19:49:00
#0楼
小弟现在正在做一个远程数据采集系统,用的是CAN-BUS。
大致情况如下:有远程节点20个,将这些节点上采集的数据通过CAN-BUS采集到控制室的CAN节点上,然后再将这些数据通过RS232送入PC机中。系统中CAN节点由AT89C52和SJA1000,外部扩展一片6264,还有键盘和液晶显示用于实时采集和显示,数据量较大,而且要将所有的数据通过RS232送入PC机中,CAN总线上的数据采用竞争方式。
现在有一个问题非常迷惑:控制室中的CAN节点一方面有负责CAN线上的数据采集,另一方面要与PC机进行通信,还要处理键盘与显示。而SJA1000的接收缓冲区只有64字节,也就是说接收缓冲区接收的数据不超过5帧,而该节点在接收完一帧数据进行处理(如显示,与PC机通信等)时,CAN线上其他节点的数据的传入可能很快导致接收缓冲区的溢出。
大致情况如下:有远程节点20个,将这些节点上采集的数据通过CAN-BUS采集到控制室的CAN节点上,然后再将这些数据通过RS232送入PC机中。系统中CAN节点由AT89C52和SJA1000,外部扩展一片6264,还有键盘和液晶显示用于实时采集和显示,数据量较大,而且要将所有的数据通过RS232送入PC机中,CAN总线上的数据采用竞争方式。
现在有一个问题非常迷惑:控制室中的CAN节点一方面有负责CAN线上的数据采集,另一方面要与PC机进行通信,还要处理键盘与显示。而SJA1000的接收缓冲区只有64字节,也就是说接收缓冲区接收的数据不超过5帧,而该节点在接收完一帧数据进行处理(如显示,与PC机通信等)时,CAN线上其他节点的数据的传入可能很快导致接收缓冲区的溢出。