No.89621 作者:johdon23 邮件:johdon23@163.net ID:15366 登陆:5次 文章数:3篇 最后登陆IP:219.134.53.127 最后登陆:2006/10/12 14:28:17 注册:2003/10/9 11:23:16 财富:116 发帖时间:2006/3/2 15:22:08 发贴者IP:218.18.25.106 标题:johdon23:有关CAN现场总线通信的问题请教(请大家关注!!!!!!!!!!!!!) 摘要:No.89621有关CAN现场总线通信的问题请教(请大家关注!!!!!!!!!!!!!) 硬件电路是按照各种资料上给出的标准电路搭的(SJA1000+PCA82C250方案),唯一有怀疑的地方是SJA1000的复位脚,我直接从ATMEGA8515的RST处给出,不知道有没有影响。 软件部分,看了资料,也看了很多例程,但就是调不通!我现在正利用ZLG的CAN232MB(也就是CAN与232的转换器,利用它可以直接在PC上通过串口调试软件与CAN设备进行通讯)调试,在我的程序里,CAN的发送已经完成,但是在上位机的串口调试软件中没有收到数据。下面是CAN初识化及发送部分的程序: 另外,如果有成功做出过CAN通信的朋友,能否发一份完整的资料(软&硬)给我 johdon23@hotmail.com 不胜感谢!!!! /************************************************* 初始化SJA1000控制器子程序 *************************************************/ void Init_CAN(void) { uchar temp; do { write_sja(MODE,0x01); //进入复位模式 } while(!(read_sja(MODE)&0x01)); //检测是否已进入复位工作模式 write_sja(BTR0,0x07); //设置时钟分频器,速度为20KHZ write_sja(BTR1,0x7f); write_sja(OCR,0x1a); //输出设置,正常模式 write_sja(CDR,0x88); //设置PeliCAN模式,同时禁能CLOCKOUT write_sja(RXERR,0x00); write_sja(TXERR,0x00); write_sja(ECC,0x00); write_sja(RBSA,0x00); //缓存器起始地址寄存器设置为0 write_sja(ACR0,0x00); //设置ACR write_sja(ACR1,0x00); write_sja(ACR2,0x00); write_sja(ACR3,0x00); write_sja(AMR0,0xff); //设置AMR,所有数据都可接收 write_sja ......
>>返回讨论的主题
|