{
return 1;
}
SJA_BCANAdr = REG_TxBuffer1; //访问地址指向发送缓冲区1
if((SendDataBuf[1]&0x10)==0) //判断RTR,从而得出是数据帧还是远程帧
{
TempCount =(SendData Buf[1]&0x0f)+2; //输入数据帧
}
else
{
TempCount =2; //远程帧
memcpy(SJA_BCANAdr,SendDataBuf,TempCount);
return 0;
}
此函数将待发送的特定帧各式的数据,送入SJA1000发送缓存区中,然后启动,函数返回0表示将数据成功的送至发送缓冲区,返回1表示上一次的数据正在发送。
系统组网相对容易只需把各个节点挂在同一条双绞线上即可,启动上位机的CAN收发器,用来监视总线数据状态。每当启动一个下位机CAN收发器,上位机的测试软件就可以每隔一秒钟收到由同一CAN收发器发送的数据帧。实验结果显示当3台下位机CAN总线同时发数时数据接收端没有数据丢失和总线冲突现象。
结语
现场总线有着巨大的发展潜力,它将给自动控制领域的变革带来深远的影响。我们设计的CAN总线收发器具有通用性,在本系统设计的基础上只需要相应的修改数据传输协议即可应用于各个CAN总线的数传系统。
参考文献:
1. 陈立元主编. Visual Basic实现串并行通信技术. 清华大学出版社,2001
2. 张学忠,王福成主编. Visual Basic控件应用编程实例教程. 北京希望电子出版社,2002
3. 马希荣主编. Visual Basic 6.0 程序设计. 机械工业出版社,2004
4. 彭禹皓. 基于单片机和CAN控制器的嵌入式系统. 微计算机信息,2007,4-2:33-35