型号: PXF0202
CAN总线学习心得
SJA1000的常用标准波特率设置,为什么基本上都 是单次采样?即使是低速的时候也是这样的,既然TSEG1的设置周期都很大,比如都大于10了,为什么不让他采样三次呢?
答: 是不好理解,但那是CiA推荐的值。
用51系列芯片和两个SJA1000接口还要外扩一个RAM,请问51的ALE能否同时与三个芯片 的ALE管脚相连(地址不同)? 有哪位高手做过双SJA1000冗余的请指教!!!!
答: 能同时连接。
请问CAN总线在想传输1000m的情况下,最快的速度能到多少呢?
答: 50kbps = 1300m。
如果一个 网络中只有2个节点,其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗?
答: 能进入接收中断,你自己的试验也可以证明。
想组建 一个简单的CAN网络,已经有两个节点,我想问CAN总线如何组建,终端电阻安装在哪里?小弟还没有入门,大虾们指点一下。
答1:直接将节点CANH和CANL连到总线上,终端电 阻接在总线两端,大约120欧。
答2: 推荐北航出版《现场总线CAN原理与应用技术》,研读一下。
请问各位老师:我是一名can总 线的新手,我正在做can总线的开发,控制器用sja1000t(我自己两个控制板互通),但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断 增加,直到0xff,最后恢复到0x7f,谢谢各位老师帮我解答这个问题。或者对我给与启发
答1;首先调通单个节点。
答2:这是单节点发送没有成功(或者由于网络中其他节点没有收到帧并在响应场响应);建议参考网站CAN应用方案。
我想请教各位can远程贞有何作用?如何应用?在什么情况下才需要用到远程贞?谢谢了!
答:远程幀的用与不用完全取决你自己的协议,can有远 程幀的功能,是可用可不用的!
用网站提供的计算波特率的工具算出的数,12k以上的都 正确,无论是自接收还是两个节点通讯都没有任何问题。但是12k以下的数据一个都不能用,两个节点通讯没有成功的,自接收有10k的几个数据成功。我们的 项目要求必须在10k以下,最好是5k,但是不成功,自己计算的数据也没有成功的。(我们至少试验了30多个,所有情况都考虑了。)
我现在怀疑sja1000的波特率根本达不到5k和相对 应的传输10km。
或者可以谁能提供个经过实践 检验的正确的总线定时器0和1的设置呢?要求低于10k。
答:PCA82C250/251可以保证5KBPS的速率;比如ZLGCAN系列接口卡。
答:tja1050在低速时好像有问题。我用1050进行5k的时候不行,用82c250很好, 你可以试一试。
我本想双机调试,一边收,一边发,但跑程序后,发送方会 不断进入复位模式,所以现在进行自测试模式,我先进入复位模式,设置进入PELICAN模式,对寄存器初始化后,设置接收,发送中断使能,最后设置进入自 接收,单滤波模式,这样初始化就结束了,我的ACR0~ACR3 为0x55,0x55,0x55,0x50,AMR0~AMR3为0xff,之后,我就往BUFFER里填 数,0x88,0x55,0x55,0x55,0x50,0x30,0x31,.....0x37,之后,启动自接收请求命令,但是程序只进入了中断一 次,是发送空中断,接收中断没有产生,我读发送错误寄存器,发现有错误产生,我读接收计数寄存器,为0,说明我没有收到数,但我读接收BUFFER时,值 为0x55,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0,0,0,0,0,
以上测试时,我在CANH和CANL之间加入了两个 120欧的匹配电阻并联在一起的,请各位高手指点呀,谢谢了
答:在总线上加个CAN接口卡会方便许多,或者加个捕获功能的示波器也可以检测波形。
仿真环境:keil uv2
编译 器:keil c51 7.0
仿真器:tks- 591s
cpu:p87c591
程序大小:8K左右
兄弟在一片CPU中烧写了一个,运行一个CAN总 线,IIC总线测试程序能够正常运行。这个基础上加上应用程序后在仿真机中运行正常,但是烧写到cpu后插入cpu程序不能运行,请问是什么原因?
另外一个问题:
在另外一个项目中条件相同,程序只有4K,程序正常跑 着,CAN接口可以检测到输出波形但是却不能正确传输数据,在一块旧板子上就可以,比较两者之后发现电路完全相同测量也正常,只是布局不同,请教原因。
答:程序已运行了吧?可能是HEX文件有错;编制程序 时注意P87C591的ERAM设置、6CLK设置。
位流数据采样自发送节点的 82c250的Tx管脚。
测试条 件:pelican ,扩展,双滤波模式,对方ID:0x88,0x11,0x55,0x10,发送的对方ID为:0x88,0x11,0x00,0x00,发送2字节数据 为:0x05,0x06
采集的位流数据如下:
01000100000101110001000001000001000001000100000110000010001101100001001110111111111111
请教位流数据的含义?
答:自行计算时要区分位,还需要进行“位填充”的逆运 行;简单的方法是将此信号连接至1个CAN接口卡的RXD引脚。
用ZLGCANTEST软件调 试和板卡通讯,但是板卡能够正常通讯几次后就不再上传数据,查看SJA1K的状态寄存器,发现是SJA1K正在发送,但是怎么老是出现这种问题啊,请有相 同经历的高手教小弟一把啊!谢谢了!!!!
答: 其中的一个原因是收不到接受应答,比如对方id错误
通讯实验:长度1km,同样的线 路,得用ZLG公司的CAN设备(9820,5121)通讯是正常的,但是我们自已的系统,在1000米时(50K波特率)的通讯是完全正常的,但是再上 加一段线路(约70米,与1公里电缆是不同线质,螺旋状),数据丢失严重.我们的硬件是完全提供的参考电路的,所以说硬件上应当没有问题.软件上有没有什 么特殊处理吗?比如说发送失败,总线错误如何处理???
系统已经调试了相当长一段时间了,但还是没有头绪.就这个问题解决不了,我们在线路中加了CanRepA和CAN_REPB均不能很好的解 决!!!同样的线路和硬件,ZLG公司的系统可以通信很好,而我们的系统却不呢,是不是软件处理有些要求??请大家指点!
答:检查各节点CANH和CANL之间的阻值是否在合理 范围之内;CAN网络通讯故障一般是通讯电缆选择不合适。
请专家帮估计ARM CPU 的CAN口处理能力!
在不处理复杂协议的情况下,一个CAN口吞吐达最高负荷 5000帧/秒时,CPU的负荷是多少?多个CAN口呢(如LPC2294)
答:即使用于严格的速度测试,LPC2000的速度完全能够胜任2-4个CAN通道。
sja1000出现错误而中断的几率由多大呢? 特别是发送错误,总线关闭等。
答:注意CAN-bus是一个网络,调试网络时需要在另 一端连接一个正常工作的CAN节点。
CAN是可 靠的网络;测试过2-5个CAN节点连续近距离持续发送/接收超过100小时而不出现通讯错误。
为什么 MiniCAN总提示发送失败?
我在使用MiniCAN在自发自收模式下进行循环发送数 据时,会经常提示发送失败,但是却已经接收到了数据。这是什么原因?怎样能避免呢?
答:是不是总线上连接有其他CAN节点?检查一下对方的速率。
硬同步在 CAN控制器中是如何实现的?
答:可以看一下 CAN2.0规范;如是IC设计,则去BOSCH看看复杂的CAN IP。
请教 zlg的大虾们,我应用89c51+sja1000+82c250的结构,运行过程中发现一个问题,即正常运行一段时间后,sja1000死机(个人认为 是死机),我的89c51仍然在正常运行,也对sja1000能启动发送数据进程(我用led指示),但是接收端没有收到,用示波器测量82c250的 CANH 或 CANL 脚(6,7管脚),看不到有波形,断电重新启动程序后,sja1000的收发过程中能在上述两个管脚中测量到波形,即上电运行能正常一段时间的收发(能测 量到波形),之后就不行了(启动发送过程但是波形测量不到了),除非断电重启,望指教!
头两天查找sja1000的问题,以为是死机,后来逐步检测跟踪察看,发现程序运行一段时间后,sja1000的 设置被无端改变,比如波特率,输出控制方式,测试寄存器值,我的原始设置为:BTR0 = 0x00;BTR1 = 0x4F;OCR = 0x1A;REG_TEST = 0xAA;但在运行一段时间后,这四个值会莫名其妙的被改变了,导致无法接受总线得数据,而改变的值是随机的,请问这是怎么回事?硬件电路是按照推荐的典 型应用接的,我在程序中除初始化设置这几个参数外没有其他地方对他们进行操作,天理何在啊
答:复位端是否可能引入尖峰脉冲?
刚开始接 触can——bus,买了一块5121,用随机带的zlgtest的软件测试,验证码设为0x00000001,屏蔽码设为0xffffff00,这样的 话是不是只能接受id为0x01的帧了,用随机带的zlgtest的自发自收的发现id为0x00
url:
http://www.51lm.cn/p/templates/cn/show.php?cid=905&aid=202