CAN总线学习心得--重要SJ A1 0 0 0 的常用标准波特率设置,为什么基本上都是单次采样?即使是低速的时候也是这样的,既然T SEG1 的设置周期都很大,比如都大于1 0 了,为什么不让他采样三次呢?答:是不好理解,但那是Ci A 推荐的值。
用5 1 系列芯片和两个SJ A1 0 0 0 接口还要外扩一个RAM,请问5 1 的AL E 能否同时与三个芯片的AL E 管脚相连( 地址不同) 有哪位高手做过双SJ A1 0 0 0 冗余的请指教!答:能同时连接。
请问CAN 总线在想传输1 0 0 0 m 的情况下, 最快的速度能到多少呢?答: 5 0 k b p s = 1 3 0 0 m。
如果一个网络中只有 2 个节点, 其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗?答:能进入接收中断,你自己的试验也可以证明。
想组建一个简单的CAN 网络, 已经有两个节点, 我想问CAN 总线如何组建, 终端电阻安装在哪里?小弟还没有入门, 大虾们指点一下。
答1 :直接将节点CANH 和CANL 连到总线上,终端电阻接在总线两端,大约1 2 0 欧。
答2 :推荐北航出版《现场总线CAN 原理与应用技术》,研读一下。
请问各位老师:我是一名c a n 总线的新手,我正在做c a n 总线的开发,控制器用s j a 1 0 0 0 t ( 我自己两个控制板互通) , 但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断增加,直到0 x f f 最后恢复到0 x 7 f , 谢谢各位老师帮我解答这个问题。
或者对我给与启发答1 ;首先调通单个节点。
答2 :这是单节点发送没有成功( 或者由于网络中其他节点没有收到帧并在响应场响应) 建议参考网站CAN 应用方案。
我想请教各位c a n 远程贞有何作用?如何应用?在什么情况下才需要用到远程贞?谢谢了!答:远程帧的用与不用完全取决你自己的协议,c a n 有远程帧的功能,是可用可不用的!用网站提供的计算波特率的工具算出的数,1 2 k 以上的都正确,无论是自接收还是两个节点通讯都没有任何问题。
但是1 2 k 以下的数据一个都不能用,两个节点通讯没有成功的,自接收有1 0 k 的几个数据成功。
我们的项目要求必须在1 0 k 以下,最好是5 k ,但是不成功,自己计算的数据也没有成功的。
(我们至少试验了3 0 多个,所有情况都考虑了。
)我现在怀疑s j a 1 0 0 0 的波特率根本达不到5 k 和相对应的传输1 0 k m。
或者可以谁能提供个经过实践检验的正确的总线定时器0 和1 的设置呢?要求低于1 0 k 。
答:PCA8 2 C2 5 0 / 2 5 1 可以保证5 KBPS 的速率;比如Z L GCAN 系列接口卡。
答:t j a 1 0 5 0 在低速时好像有问题。
我用1 0 5 0 进行5 k 的时候不行,用8 2 c 2 5 0 很好,你可以试一试。
我本想双机调试,一边收,一边发,但跑程序后,发送方会不断进入复位模式,所以现在进行自测试模式,我先进入复位模式,设置进入PEL I CAN 模式,对寄存器初始化后,设置接收,发送中断使能,最后设置进入自接收,单滤波模式,这样初始化就结束了,我的ACR0 ~ ACR3 为0 x 5 5 , 0 x 5 5 , 0 x 5 5 0 x 5 0 , AMR0 ~ AMR3 为0 x f f , 之后,我就往BUF F ER 里填数,0 x 8 8 , 0 x 5 5 , 0 x 5 5 , 0 x 5 5 , 0 x 5 0 , 0 x 3 0 , 0 x 3 1 , .0 x 3 7 , 之后,启动自接收请求命令,但是程序只进入了中断一次,是发送空中断,接收中断没有产生,我读发送错误寄存器,发现有错误产生,我读接收计数寄存器,为0 ,说明我没有收到数,但我读接收BUF F ER 时,值为0 x 5 5 , 0 x 5 5 , 0 x 5 5 , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0 , 0 , 0 , 0 , 0 , 以上测试时,我在CANH 和CANL 之间加入了两个1 2 0 欧的匹配电阻并联在一起的,请各位高手指点呀,谢谢了答:在总线上加个CAN 接口卡会方便许多,或者加个捕获功能的示波器也可以检测波形。
仿真环境:k e i l u v 2 编译器:k e i l c 5 1 7 .0 仿真器:t k s - 5 9 1 s c p u : p 8 7 c 5 9 1 程序大小:8 K 左右兄弟在一片CPU 中烧写了一个,运行一个CAN 总线,I I C 总线测试程序能够正常运行。
这个基础上加上应用程序后在仿真机中运行正常,但是烧写到c p u 后插入c p u 程序不能运行,请问是什么原因?另外一个问题:在另外一个项目中条件相同,程序只有4 K, 程序正常跑着,CAN 接口可以检测到输出波形但是却不能正确传输数据,在一块旧板子上就可以,比较两者之后发现电路完全相同测量也正常,只是布局不同,请教原因。
答:程序已运行了吧?可能是HEX 文件有错;编制程序时注意P8 7 C5 9 1 的ERAM 设置、6 CL K 设置。
位流数据采样自发送节点的8 2 c 2 5 0 的T x 管脚。
测试条件:p e l i c a n ,扩展,双滤波模式,对方I D:0 x 8 8 , 0 x 1 1 , 0 x 5 5 , 0 x 1 0 ,发送的对方I D 为:0 x 8 8 , 0 x 1 1 , 0 x 0 0 , 0 x 0 0 ,发送2 字节数据为:0 x 0 5 , 0 x 0 6 采集的位流数据如下:0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 请教位流数据的含义?答:自行计算时要区分位,还需要进行“位填充”的逆运行;简单的方法是将此信号连接至1 个CAN 接口卡的RXD 引脚。
用Z L GCANT EST 软件调试和板卡通讯,但是板卡能够正常通讯几次后就不再上传数据,查看SJ A1 K 的状态寄存器,发现是SJ A1 K 正在发送,但是怎么老是出现这种问题啊,请有相同经历的高手教小弟一把啊!谢谢了!!!答:其中的一个原因是收不到接受应答,比如对方i d 错误通讯实验: 长度1 k m, 同样的线路, 得用Z L G 公司的CAN 设备( 9 8 2 0 , 5 1 2 1 ) 通讯是正常的, 但是我们自已的系统, 在1 0 0 0 米时( 5 0 K 波特率) 的通讯是完全正常的, 但是再上加一段线路( 约7 0 米, 与1 公里电缆是不同线质, 螺旋状) 数据丢失严重.我们的硬件是完全提供的参考电路的, 所以说硬件上应当没有问题.软件上有没有什么特殊处理吗?比如说发送失败, 总线错误如何处理?系统已经调试了相当长一段时间了, 但还是没有头绪.就这个问题解决不了, 我们在线路中加了Ca n Re p A 和CAN_ REPB 均不能很好的解决!同样的线路和硬件, Z L G 公司的系统可以通信很好,而我们的系统却不呢, 是不是软件处理有些要求?请大家指点! 答:检查各节点CANH 和CANL 之间的阻值是否在合理范围之内;CAN 网络通讯故障一般是通讯电缆选择不合适。
请专家帮估计ARM CPU 的CAN 口处理能力!在不处理复杂协议的情况下,一个CAN 口吞吐达最高负荷5 0 0 0 帧/ 秒时,CPU 的负荷是多少?多个CAN 口呢(如L PC2 2 9 4 )答:即使用于严格的速度测试,L PC2 0 0 0 的速度完全能够胜任2 - 4 个CAN 通道。
s j a 1 0 0 0 出现错误而中断的几率由多大呢?特别是发送错误,总线关闭等。
答:注意CAN- b u s 是一个网络,调试网络时需要在另一端连接一个正常工作的CAN 节点。
CAN 是可靠的网络;测试过2 - 5 个CAN 节点连续近距离持续发送/ 接收超过1 0 0 小时而不出现通讯错误。
为什么Mi n i CAN 总提示发送失败?我在使用Mi n i CAN 在自发自收模式下进行循环发送数据时,会经常提示发送失败,但是却已经接收到了数据。
这是什么原因?怎样能避免呢?答:是不是总线上连接有其他CAN 节点?检查一下对方的速率。
硬同步在CAN 控制器中是如何实现的?答:可以看一下CAN2 .0 规范;如是I C 设计,则去BOSCH 看看复杂的CAN I P。
请教z l g 的大虾们,我应用8 9 c 5 1 + s j a 1 0 0 0 + 8 2 c 2 5 0 的结构,运行过程中发现一个问题,即正常运行一段时间后, s j a 1 0 0 0 死机(个人认为是死机),我的8 9 c 5 1 仍然在正常运行,也对s j a 1 0 0 0 能启动发送数据进程(我用l e d 指示),但是接收端没有收到,用示波器测量8 2 c 2 5 0 的CANH 或CANL 脚(6 ,7 管脚),看不到有波形,断电重新启动程序后,s j a 1 0 0 0 的收发过程中能在上述两个管脚中测量到波形,即上电运行能正常一段时间的收发(能测量到波形),之后就不行了(启动发送过程但是波形测量不到了),除非断电重启,望指教!头两天查找s j a 1 0 0 0 的问题,以为是死机,后来逐步检测跟踪察看,发现程序运行一段时间后,s j a 1 0 0 0 的设置被无端改变,比如波特率,输出控制方式,测试寄存器值,我的原始设置为:BT R0 = 0 x 0 0 ; BT R1 = 0 x 4 F ; OCR = 0 x 1 A; REG_ T EST = 0 x AA; 但在运行一段时间后,这四个值会莫名其妙的被改变了,导致无法接受总线得数据,而改变的值是随机的,请问这是怎么回事?硬件电路是按照推荐的典型应用接的,我在程序中除初始化设置这几个参数外没有其他地方对他们进行操作,天理何在啊答:复位端是否可能引入尖峰脉冲?刚开始接触c a n ——b u s ,买了一块5 1 2 1 ,用随机带的z l g t e s t 的软件测试,验证码设为0 x 0 0 0 0 0 0 0 1 ,屏蔽码设为0 x f f f f f f 0 0 ,这样的话是不是只能接受i d 为0 x 0 1 的帧了,用随机带的z l g t e s t 的自发自收的发现i d 为0 x 0 0 和0 x 1 0 等等也能接收到了,请问是我的验证码屏蔽码设置错了么?答:CAN 节点的验收过滤设置与CAN 帧的I D 不是一一对应关系,具体请参考MANUAL 目录下的《函数编程手册》或《CAN 控制器SJ A1 0 0 0 验收滤波器原理与应用》。