[CAN-bus/DeviceNet] 在传一次试试-can总线调试记录

[复制链接]
3581|7
 楼主| 1181zjf 发表于 2007-7-30 09:31 | 显示全部楼层 |阅读模式
<br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20077/200773093055543.rar'>https://bbs.21ic.com/upfiles/img/20077/200773093055543.rar</a>
 楼主| 1181zjf 发表于 2007-7-30 09:33 | 显示全部楼层

以下就是调试的主要内容

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CAN总线调试记录<br />一.说明:<br />最近一个项目用到了CAN总线,借此机会学习了CAN总线.有关CAN总线的协议在这不再详述,可以在网络上搜到相关资料.<br />二.实验平台:<br />&nbsp;&nbsp;&nbsp;CAN232MB+SJA1000+AT89C52+MCP2551<br />&nbsp;&nbsp;&nbsp;CAN232MB----232转CAN模块(广州周立功邮购)<br />&nbsp;&nbsp;&nbsp;SJA1000----CAN控制器(广州周立功邮购)<br />&nbsp;&nbsp;&nbsp;AT89C52----这个不用介绍了吧&nbsp;^_^&nbsp;<br />&nbsp;&nbsp;&nbsp;MCP2551----CAN总线收发器<br />三.实验电路<br />&nbsp;&nbsp;&nbsp;<br />电路说明:<br />电路参考ZLG网站上的资料,并加了一些测试用的发光二极管.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU晶振11.0592M<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJA1000晶振16M&nbsp;&nbsp;<br />片选地址&nbsp;:由于SJA1000的片选信号接了P2_7,所以片选地址为0x0000到0x7f00<br />之间的值(实验用的是0x7f00).<br />四.开发记要:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.Basic模式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.zlg网站提供的测试程序中sja1000的晶振为12M,sja1000初始化配置为100kpbs,测试失败,换为16M晶振,串口调试助手看到了数据.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.验收代码寄存器ACR验收屏蔽寄存器&nbsp;AMR分别配置为0xff&nbsp;0xff,无条件接收.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.第3步通过后,再做选择性的接收测试,例如,将can232MB(ZLG网站有说明书)配置为ID为00&nbsp;00&nbsp;05&nbsp;50,ACR=0x02,AMR=0x00;&nbsp;SJA1000的ID配置为0x02,ACR&nbsp;=0xaa,AMR=0x00;实验用了两台电脑对发数据,单片机从串口接收到的数据通过sja1000传给CAN232MB,最后传到另一台计算机上显示出来<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如:PC1发送一组数据到89C52,00&nbsp;48&nbsp;01&nbsp;02&nbsp;03&nbsp;04&nbsp;05&nbsp;06&nbsp;07&nbsp;08(前两个字节为ID标识符和数据长度,是CAN232MB能通过验收的标识符,注意哦!!!),单片机收到数据后,转发到PC2。通过PC2用串口调试助手发数据,如:01&nbsp;02&nbsp;03&nbsp;04&nbsp;05&nbsp;06&nbsp;07&nbsp;08(这里没有标识符,已经在CAN232B中设置,自动加的)。不用CAN232MB也可以做实验,做两块一样的sja1000实验板,对发数据。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.最后加上高速光耦6n136或6n137,电路如下图<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />注意:使用6n136时,第7脚不与VCC相连。<br />五.程序<br />&nbsp;&nbsp;实验的代码来自zlg网站,略做修改即可。我实验用的是basic模式,peli模式自检测发送也测试成功,还没做进一步研究,确保硬件无误后,再调试程序,以免多走弯路。还有波特率的设置,验收代码寄存器,验收屏蔽寄存器,标识符的设置是重点。还有就是下载的代码中sja1000用的是12M晶振,不过没调通(乱码都看不到),换为16M的调试成功,最后一点,用STC89C52调试不成功,可能是时续的问题,AT89C52可以。<br /><br /><br /><br />你一定会成功!只是时间问题,希望以上几点能加快你的开发进度^_^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎交流------1181zjf@163.com&nbsp;&nbsp;&nbsp;&nbsp;<br />
coolhu 发表于 2007-7-30 20:46 | 显示全部楼层

赞下能给新手提供一种思路
 楼主| 1181zjf 发表于 2007-8-2 10:23 | 显示全部楼层

是仿真吗

89c52可以运行的,编好程序,我直接烧进去的.
cyongkai 发表于 2007-8-17 16:54 | 显示全部楼层

好的!

谢谢!!LZ的鼓励!!<br />我会努力的<br />!!!
wyhkerry 发表于 2007-8-18 22:26 | 显示全部楼层

最近也在做这个项目 多谢谢

非常感谢!
ourdoctor 发表于 2007-8-19 22:00 | 显示全部楼层

re

分享你的经验,大家可以借鉴很多,你辛苦了!希望以后能更多的看见你的大作!
 楼主| 1181zjf 发表于 2007-8-20 10:51 | 显示全部楼层

mega16+mcp2515+mcp2551

最近在搞基于avr的can总线调试,因为avr带spi接口和ad转换.<br />有兴趣的朋友一块研究!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部