打印
[CAN-bus/DeviceNet]

用过SJA1000的高手看过来

[复制链接]
5546|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小研究|  楼主 | 2007-5-31 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟要用SJA1000,对其输出控制器的说明感到很难理解.请高手给解释解释,OCTP、OCTN、OCPOL的意义。我感觉好象和OC门有关。
另外,现在用SJA1000必然用到CAN收发器,比如PCA82C250,大部分的例子中都是单端接到收发器的,此时TX,RX所传输的信号都不再是差分信号了,此时对OCR的设置有什么特殊要求吗?此时该怎么理解OCTP、OCTN、OCPOL的意义?
谢谢。

相关帖子

沙发
wxj1952| | 2007-5-31 20:27 | 只看该作者

根据数值表写出逻辑表达式即可。

任何逻辑数字电路设计都是有逻辑表达式可循的。OCTP、OCTN、OCPOL还有输入数据Data之间是一个逻辑关系表达式。据此还可以画出逻辑电路图。图示简单明了。

使用特权

评论回复
板凳
小研究|  楼主 | 2007-6-1 09:37 | 只看该作者

谢谢,继续问

谢谢楼上的朋友答复,不过感到资料给出的OCR的表格很不清晰,所以对其逻辑关系感到模糊.
如果一方的产品已经定了OCR值,那么另一方如果要与其通讯,是否一定要配置OCR相同?按照您说的逻辑关系,能否解释一下当OCR=DAH时的意思?
谢谢

使用特权

评论回复
地板
小研究|  楼主 | 2007-6-1 15:02 | 只看该作者

继续请教

场面很冷啊,高手们过来帮帮忙啊
还有其他问题:
传输时ID号和RTR、DLC都应该随着数据一起发送吧?那么先发送ID和DLC呢还是先发送数据呢?
如附图中的表格,是从PHILPS的PDF中抓下来的,想知道左边的浮空、上拉、下拉和推挽是内部自动配置的还是需要手动在硬件上再加上拉或下拉呢?
请高手务必答复,两端通讯是否OCR一定要设置相同?
谢谢

使用特权

评论回复
5
wxj1952| | 2007-6-1 20:58 | 只看该作者

不可能把论文贴在这。

是否学过卡诺图?场效应管?数字逻辑电路中的同或门/异或门?

如果都学过,那什么都不用问了。如果没学过,以上基本就是答案了。

至少应该看一看CAN协议的帧结构。通信双方的OCR设置要关心吗?如果对方不是PHILIPS芯片,没有OCR怎么办?





















使用特权

评论回复
6
小研究|  楼主 | 2007-6-3 11:33 | 只看该作者

谢谢楼上的高手的哼哼教导

其实OCR本来就不该花费那么多精力去琢磨的.现在有另一个问题请教:
一觉醒来,突然想到,其实CAN BUS的物理连接应该是半双工的(两根线),那么SJA1000刚发出去的信息是否会被本节点马上接收呢?如果是,其内部是怎么处理这种自发自收呢?
可能睡觉睡迷糊了,总感觉这是一个很弱的问题,但又想不通,希望有人提点一下,谢谢.

使用特权

评论回复
7
wxj1952| | 2007-6-3 12:39 | 只看该作者

驱动器内部有回路。

内部电路发送一位,检测一位。由此界定错误。
这种比较电路,对于专科学生来说,硬件上很容易设计。

使用特权

评论回复
8
小研究|  楼主 | 2007-6-3 13:44 | 只看该作者

楼上的前辈能否详细解释一下?

如图,硬件物理上解释来说,SJA发出去的数据,会引起CAN总线上产生电平,而产生的电平马上会被接收功能感知。不知道您说的“检测界定”是82C250完成的还是SJA1000完成的呢?
谢谢

使用特权

评论回复
9
wxj1952| | 2007-6-3 19:39 | 只看该作者

驱动器82C250在TXD/RXD管脚内部有回路。

使用特权

评论回复
10
小研究|  楼主 | 2007-6-3 23:29 | 只看该作者

说的太笼统了

既然前辈说82C250里有回路,可否根据小弟提供的图片具体展开一下,说明一个CAN节点是如何在刚刚发出数据后防止数据马上接收的呢?从物理上讲,一个节点刚发出去的数据信息与其他节点此时发来的信息并没有什么不同,那么可能的不同只可能在ID上。所以小弟认为即使CAN节点能防止本节点发出去的数据回溯,也应该是通过SJA1000的智能来完成的,而不是82C250来完成的。
谢谢。

使用特权

评论回复
11
wxj1952| | 2007-6-4 10:22 | 只看该作者

研究君不是电子专业的吧

“说明一个CAN节点是如何在刚刚发出数据后防止数据马上接收的呢?”

节点为什么要“防止”数据马上接收?不!我告诉你了,节点发送一位,“同时”接收一位,当发送完一帧数据时,这一帧数据已经回到了本节点由RBSA指向的FIFO接收缓存区。不需要任何“防止电路”,发送/返回是“同时”的。从82C250内部电路看更明显了:在TXD通过2个驱动晶体管拉动总线的时候,
CANH/CANL随发送数据的变化通过“RECEIVER”回到了RXD,这与外部总线驱动CANH/CANL作用效果一样!为了证实这一点,你可以单节点做实验,没有总线,不挂总线,启动发送,之后看看你的FIFO里是不是有了你发送的数据,具体地址是:(SJA1000)
发送缓冲器数据地址:10H  (假定发送数据08,55,e0,01,02,03,04,05,06,07,08)
FIFO接收缓冲器地址:20H   (发送之后与上同)

这组与发送数据相同的接收器数据,是MAC层用来监测/仲裁/...,与用户无关,为什么要当作接收数据?更不会触发接收中断!如果与发送数据不同,会触发错误中断,(如果你开放了相应中断了的话)。

使用特权

评论回复
12
ljt4810| | 2007-6-4 13:26 | 只看该作者

数据从哪接受呢?

  我明白了,我刚做的一个节点自发只收,BasicCAN模式,收的跟发的一样但什么都收,我还以为是滤波器不起作用呢,浪费我了一个周的时间.那么数据究竟该从哪接收呢?具体讲讲原理行吗?谢谢!

使用特权

评论回复
13
wxj1952| | 2007-6-4 16:13 | 只看该作者

问问自己

数据从哪发出的?!拿掉82C250你的单节点实验还做的通吗?

使用特权

评论回复
14
ljt4810| | 2007-6-4 17:02 | 只看该作者

晕晕的

wxj1952老师你好!
   我是个菜鸟,刚才看了你说的又查看了一会资料,但还是对你说的晕晕的,数据是不是经过收发器TJA1000自动从CAN 总线上读出,经过滤波器,存到接收缓冲器吗?我们不是从接收缓冲器里读出数据吗?但你说的接收缓冲器里有自己发送的数据,到底是怎么会事啊?麻烦老师详实讲讲!谢谢!

使用特权

评论回复
15
wxj1952| | 2007-6-4 20:59 | 只看该作者

你自己说的“数据回溯”,概念挺清晰的。

这种问题,手册、书籍上之所以不讲,是因为这与用户和软件编程人员无关。所以最好别去关心这类问题。要是真想弄懂,建议去看看通信原理和计算机网络方面的书。再准备一台在线仿真器,一有任何质疑,就可以自己设计一个实验来证实/推翻自己的“判断和想象”。

使用特权

评论回复
16
ljt4810| | 2007-6-4 21:43 | 只看该作者

我读的到底是什么数据?

  我用的是LPC2131+SJA1000+TJA1050,接收的数据通过串口发送到PC机上我读出的数据究竟是回溯的数据呢?还是有效的数据?我用分析仪测过总线有数据啊,跟发送的一样,但是滤波器又不起作用,什数据都收,单节点那样,双节点也那样,到底是怎么会事呢?

使用特权

评论回复
17
小研究|  楼主 | 2007-6-4 23:33 | 只看该作者

谢谢ljt4810接了我的接力棒

谢谢ljt4810接了我的接力棒,也谢谢wxj1952前辈的答复.其实这个问题我一直很难搞明白,也不明白为什么资料上丝毫不提这一点.
现在我的理解只能是:CAN节点发出去的数据在发送出去的同时,也被该节点自己接收并存放在接受缓冲区里,并根据发送数据和接受数据的异同来判断发送是否成功.如果不相同则认为发送错误,并可能导致中断.
可我现在还疑惑的是这个节点怎么区别其他节点来的(有效)数据和自己回溯的(无效)数据呢?是根据ID吗?那这应该是自动完成的吧?不需要软件处理了吧?
谢谢

使用特权

评论回复
18
wxj1952| | 2007-6-5 09:33 | 只看该作者

以太网原理信号方案。

所谓“回溯”,书上没写,纯粹是自己给自己找了一个“研究课题”。两位都不是硬件专业的。这种CSMA信号方案的电路原理对于硬件工程师来说,是很清楚的,不需要讲的,手册上提供那点信息足够了。

一个发送是否成功,用SR.3 或者IR.1 标记,一个接收是否有效,用SR.0 或者IR.0 标记;大多数人采用中断方式判别,那么,“添加你的中断程序或者查询程序。”

使用特权

评论回复
19
ljt4810| | 2007-6-5 10:28 | 只看该作者

原来这就是硬件工程师啊

  我是自动化专业的,学的这些单片机的知识都是自学的,平时在实验室焊接的板子不少,本人软件比较弱,所以投简历时大多是硬件工程师,总觉得不如软件好,这才发现原来硬件工程师也不是吃素的.我的差距还大着呢!真是惭愧!这两天从该论坛上学到了不少知识,感谢版主,也感谢这里所有的人,祝大家工作顺利,学习进步!

使用特权

评论回复
20
小研究|  楼主 | 2007-6-5 19:02 | 只看该作者

继续请教

首先谢谢wxj1952的孜孜不倦.
我现在对CSMA/CD的理解是:节点在发送的同时也在不断的接受信号,包括自己刚发出去的信号,当发现接受的信号ID与自己发出的ID相同时就自动丢弃,不同则接受进接受缓冲区.对吗?
我现在想继续问的是:如果发现接受的信号与自己刚发送出去的信号不同时,是认为总线在竞争呢还是认为出错呢?会引起中断吗?
另外,问前辈些其他问题:
1。地址为09H的测试寄存器是干什么用的?资料上写test regiser is used for production testing only,编程人员有权限使用吗? 能用的话通常有什么用?用来测试SJA1000硬件接口是否完好?
2。如果某帧数据格式字中的DLC与后面的字符数目并不相符,将会发生什么结果?例如,DLC为8,但实际数据只有7个字节,会与下帧的数据发生混乱吗?
3。接受缓冲区里既有格式字,又有数据,是否当对接受缓冲区读过必须清楚该缓冲区?
谢谢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

869

帖子

8

粉丝