CAN总线学习心得 摘抄
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问:过载帧与错误帧是怎么使用的啊 对数据帧,和远程帧很好理解,也很好使用,但是对过载和错误就不知道在什么地方用了, 也不知道该怎么用了啊?请各位指点 答:CAN 控制器自己管理 问:错误消极中断和错误警报中断该怎么处理呢?只是简单的复位么?这两种错误有什么区别 呢?不太明白 答:按流程可以不处理,参考网站示例。 问:仲裁丢失该怎么理解呢?仲裁丢失算不算是一种错误呢?仲裁丢失一般的处理是怎么样的 呢?只是读取仲裁丢失捕捉寄存器么? 答:不算,仅仅提供一个网络参考信息,例如网络负载/id 分配是否合理等。 问:为什么在分析仪发出第三侦后,2119 才产生接收中断,而且收到的是第一侦的数据, WritePoint2 = 1。 如果分析仪只发出一侦数据,不能产生中断,怎么回事? 答:第三帧才产生中断可能是溢出中断,因为接收中断和溢出中断的额中断号是不同的,菲 利普的早期资料中 CAN 的中断号有错,请下载最新资料! 答:我试过中断模式,没问题,可以产生中断,可是周的低层驱动关于环形缓冲区那部分可 能有些问题。 中断后调用写数据缓冲区,然后在主程序里循环读环形缓冲区。忘了是在哪里会出现数据中 止,按说是不应该出现的。 问:请教 RTR 位在滤波中的作用? 请教各位老师:滤波器中的 rtr 位参不参与滤波,我在实验中有两个节点,采用双滤波标准 帧 通 信 , 我 设 置 接 收 方 的 acr0 , acr1 , acr2,acr3 寄 存 器 为 00, 2 0 ,00,00 , amr0,amr1,amr2,amr3 分别是 00,0f,00,ff.发送方 ID1,ID2 为 00,20;但是发送方的ID 2,只要是 20 和 30,该帧数据都能接收,其它的如 40,50,都不行,我不知道为什么?是不 是 rtr 位不参与滤波,发送方在发送的时间不必要考虑此位。 郁闷的不行,恳请帮助! 答:就把它看作像 id 那样的一个 bit 看待吧。 问:SJ1000T 中基本模式下只能检测 8 位的 ID,但发送时确有 11 位 ID,请问 ID2-0 有什么 用? 答:你指的是 BasicCAN 模式下的"验收过滤";其实,两种模式的所有 11 位或 29 位都有效。 问: BasicCAN 模式下的"验收过滤"只能过滤 ID10-3, 请问 ID2-0 对接受有影响吗?资料显 示并没有对 ID2-0 进行核对。 答:BasicCAN 模式没有对 ID2-0 进行核对。 问: 请问在双绞线上传输的 CAN 信号波形应该是怎么样的?信号的幅值和频率?另外,能否推荐 使用在车辆上的电缆型号以及节点与总线相接的接插件型号!谢谢!! 答:汽车类型不同,应用有所不同,建议参考 SAE J1939 协议内容中的规定,制定自己的规范。
感谢你的关注!! ! 答:1,加一组电源线;2,收发器就是差分驱动器。 问:如果加电源线那还是总线供电吗? 我的意思是两条线上既传信号又传电,请教可以做到吗? 答:在 CAN 应用中的总线供电常指的是通过 4 芯或 5 芯通信线缆供电;收发器出来的仍然是 基带信号没有调制的所以不容易实现线缆复用。 问:请各位高手解决:SJA1000 收发扩展帧正常,但是不接收标准帧 答:我认为 SJA1000 不会出现这种现象,除非发送方有错误. 问:对 FullCAN 模式不是很理解,哪位老师给详细介绍一下,谢谢! 答:简而言之,就是验收滤波方式的增强,BasicCAN 只有一种滤波,PeliCAN 有 2 种滤波, 可以加上广播信息,而 FullCAN 就是有更多种滤波。
问:第一,接收信息的工作节点需要什么响应来确认?第二,接收的子程序未调好是否意味 收发两方均无法调试?如何确认发送成功? 答: 网络上同一速率的正常工作节点响应: 已设定速率; 在工作状态。 1、 2、 完全是由硬件(比 如:SJA1000 芯片)完成 ACK 确认。 问:请问单个 can 节点可以进行调试吗?是一块一路的 can 适配卡,使用端口地值 300h,我 使用 winio 进行读写的,可为什么,所有的单元读出来得数据都是 ff?是因为只使用了单个 节点 can 控制器不能正常工作吗? 答:sja 可实现单节点调试;ff 应该是地址空间错误; 问:我还是不太明白,你说的地址空间错误,是说 sja1000 的地址没有选通,地址没有指向 sja1000 的寄存器吗? 答:首先把读写片选信号产生了再去管 sja1000 吧。 问:我用验收滤波器来选择接收 CAN2.0B 的一帧数据,29 位中只对其中几位进行判别,其他 位又不是定值,请问这该怎么办?可不可以掩住不关心的位?用范围应该也可以实现,不过 那样感觉不好,请教大家,谢谢! 答:相关/不相关位最终都可以转化为范围描述。 问:请教关于 2119 can 验收过滤器的问题 请问:1、在 canstarter-ii 应用指南第 42 页中提到的“fullcan 标准地址”与“标准单个 地址”有何区别? 2、第 45 页表 2.34 的“值” “字” “行” “id 索引”是什么概念? 答: fullcan 标准地址放置的是需要自动执行接收存储的 id 索引表格(fullCAN 功能, 查看相 关的介绍);标准单个地址仅仅是 AF 接收/屏蔽标准 id 的索引表格,即和一般的接收过滤理 解一致。 答:fullcan 模式下自动把符合的帧放在后面的 ram 里 标准单个把符合的数据放在接收寄存器中 问:将“LPC 系列 ARM 微控制器的 CAN 接收过滤设置” 一文中的 LTU.hpp 加入原来的工程 中(原来是用 c 做的) ,编译时有好多错误,用的确实是 C++编译器,可感觉它对 c++中 的关键词不认识,请大家指教,谢谢! 答: 里头好像仅仅作用域符号“::”不是 C 的之外没什么特别之处。 问:以前我用的是 485 通讯,通讯协议里面都定义了包起始和包结束(CRC 可以帮助验证是 否包结束) 而对于 CAN 这个东东, 。 比如我要发送一个信息包有 100 个字节, 发送倒没有问题, 对于接收端,我怎样去判断包起始和包结束呢?困惑 ing 请斑竹和各位大虾们指教! ! 答:CAN-bus 由硬件完成帧的错误控制、数据处理,因此,协议比 RS-485 会方便许多。 比如扩展帧格式:
百度文库
问:急,请各位老师近来看看 2119 CAN 验收滤波器问题 设置如下:我用的是汇编: AF_MEM EQU 0xE0038000 LDR LDR STR LDR MOV STR R0,=AF_MEM R1,#0x25522553 R1,[R0] R0,=AFMR R1,#0x00 R1,[R0] ;读取验收滤波器 RAM 的起始地址 ;我需要标识为 552 和 553 的接收,CAN1 控制器
;读取验收滤波器模式寄存器地址 ;这样启动滤波器对吗?
这样的情况下,CAN1 接收中断不响应任何数据,这是为什么?中断机制完好,旁路滤波器时 候全部响应的.关于 CANSFF_sa 寄存器该如何设置才能完成滤波接收?请指教。 答:修改 RAM 表格前应该先置位 AccBP 位 LDR R0,=AFMR ;读取验收滤波器模式寄存器地址 MOV R1,#0x02 ;置位 AccBP,以便设置过滤表格 STR R1,[R0] 答:参考<LPC 系列 ARM 微控制器的 CAN 接收过滤设置> 问:在使用周的底层驱动时出了点问题,不知是什么原因 用 LPC2119 中断方式做了一个转发器件,中断很正常,中断程序调用写环形环形缓冲区;主 程序是读环形缓冲区,但是读时发生了数据中止,不解,就是下面第二句出了问题 stcRxBUF *RxBuf; *RxBuf = CANRcvBufApp.RcvBuf[CAN1][CANRcvBufApp.ReadPoint1]; 答:网站资料已更新;查询方式会比较方便。
CAN 总线学习心得 摘抄.txt54 就让昨日成流水, 就让往事随风飞, 今日的杯中别再盛着昨日 的 残 痕 ; 唯 有 珍 惜 现 在 , 才 能 收 获 明 天 。 原 文 来 自 : http://home.eeworld.com.cn/my/space.php?uid=80086&do=blog&id=28342
问:有没有 CAN 控制器+单片机(不包括 CAN 驱动器) ,成本不超过 15 元的方案?可付报酬! 答:目前我们没有能力实现。 答:io 模拟低速 can。 问:请问 CAN 总线是不是不能提供总线供电?如果希望总线供电该如何做?谁能提供一点关 于 CAN 能总线供电的资料啊? 答:CAN 或 DeviceNet 都可以总线供电,根据需要选择适合的应用。 CAN 没有规定物理层.是一种相当灵活的现场总线。DeviceNet、CANopen 均是基于 CAN-bus 协议,自定协议也不难。 问:请问远程帧的作用是什么?在什么情况下需要使用它? 答:那是一种可用可不用的帧资源. 问: 基地址选了 0xda00,偏移量选择 0000 后, sja1000 得寄存器的地址是从 0xda000 开始吗? 答:对的。 问:在每次只收到一帧的情况下,我置位清除接受缓存都没问题,但是一旦在短时间内接收 到 2 帧或以上时(短时间指,第一帧还未完全被微控制器接收而第二帧已经到来)我收完一 帧,置位清缓就会出错。然后我复位继续接收下一帧微控制器就不能从 sja1000 接收了,为 什么会这样那?置位清缓不是只清掉第一帧数据么?如果只清第一帧数据的话,应该第二帧 可以收到的啊?这是怎么回事那?要怎么解决那?谢谢了。 答:不会这样的,查查其他原因。 问:请教版主 CAN 总线用于爆炸性气体环境可以吗? 在网上搜索了一下,看到的 是几年前发表的 文章说 CAN 总线没有解决防爆问题,不知现在 有没解决在爆炸性气体环境使用 CAN 总线通信。如果没有那只好用以前的 485 了 改成 hart 还是更麻烦 答:在《现场总线控制系统的调试与开发》--国防工业出版社的技术书籍第 8 页,列出了 CAN-bus 是本安的总线之一。 问: 请问 Can232 和 can232B 转换器的通讯协议是否必须和计算机相连才能更改我想用转换器 直接与 PLC 相连不知如何设置通讯协议。 答:看应用场合而定,可以不用设置协议。这一份文档中有很好的说明! 问:关于节点发送的问题向你请教。 发现经常我的硬件复位有时不是成功的,导致发送不成功。读状态寄存器 SR=0x04, 或 0x44;请问这种情况是怎么回事?? 答: “硬件复位有时不是成功的”不容易理解;建议看一下前面的贴,或网站的参考程序。 问:那请问:硬件复位后,我发送前读状态寄存器 SR=0x04,也就是“当前请求的发送未处 理完” ,这种情况下发送时不能成功的。 有时候硬件复位后发送前读状态寄存器 SR=0x0c,这种情况下发送时可以的。 请教:为什么硬件复位后还会出现像前面的那种状态寄存器 SR=0x04,也就是“当前请求的 发送未处理完”的情况,
帧头(源地址、目的地址、命令字、辅参数) 数据场(分段码、0~7 个数据) 超过 8 个字节/帧时,需要分帧处理。 具体方式,可以参考网页的《CAN 应用方案》中通讯协议篇、RS-485 升级篇。 问:我的应用为:一个主机(计算机)会和很多的从机连接,每个从机都将通过网络连接, 所以必须使用 HUB,你们的 ZNE-100 将接在 HUB 上。计算机只要和 HUB 连接就可以了。不知 道我该如何设置 ZNE-100?还有此 HUB 还能连接其他的计算机吗? 答 : 《 ZNE-100 嵌 入 式 以 太 网 转 串 口 模 块 使 用 说 明 》 http://www.zlgmcu.com.cn/club/bbs/ShowAnnounce.asp?ID=45775 问:对 sja1000 进行硬件复位时,要求 sja1000 的片选同时有效吗?比如用 138 译码器的 y1 选通 sja1000 的复位线,来达到使 sja1000 复位的目的,那么此时要求片选线有效吗? 答:见 SJA1000 数据,异步操作,不要求片选有效。 问:请问怎样把 sja1000 分时复用 AD 总线与 pc104 的数据线和地址线连接? 答:周立功公司已经有现成的“PC104-CAN”接口卡提供。 问:DP51+上 BasicCAN 测试程序的问题 在 DP51+上用 BasicCAN 测试程序按键操作向其它节点发送数据时,总出现 E-F8 的错误,检 查连线和波特率的设置也没有问题,真不知道是什么原因?也没法收到其它节点发送过来的 数据。有可能这是收发器 TJA1050T 出现问题了吗? 答:可能是组建的 CAN 网络中有其他节点未设置正确,比如波特率.ZLG 公布的代码都经过测 试,附有文档说明。 问:在开发过程中遇到如下问题:(公司没有上 ARM,出于对其狂热的追求,自己出银子买的 DEMO 板) 1:想完成自发自收,CANMOD_STMBIT=1,CANCMR_SRRBIT=1,观察寄存器窗口,接收 REG 内容没有发生变化,(自测模式是否需要搭建一个 CAN 总线平台??我只有一个 DEMO 和 一个自己做的 CAN 总线收发器),接收中断也未发生,用的是周工最新的驱动. 2. 如果只想接收 ID 为 0x1234 的信息,不用 FULLCAN 模式,该怎样设置才对呢?是不是这 样:eFullCan 禁能,则只需设置标准帧单个起始地址 REG,把相应的 ID 填入就行了呢 3. 每次调用 CanSendData(CAN1,cSlfSendCmd,TempBufPt),都将导致 CANMOD_RM=1,发送错误计数器累加,好象是总线离线状态.郁闷啊 还请斑竹和大虾们指点迷津 答:CAN 总线至少需要 2 个节点才好调试,要不怎样才能组成总线呢? 答:网站可以下载代码,请参照配套的文档进行测试。 至少要加 CAN 收发器、终端电阻,建立再在 PC 上安装 1 个 CAN 接口卡,比如 CAN232 接口卡。 回复:原来采用的总线收发器的前端光耦出了问题! 谢谢大家了!特别感谢周立功的技术支持工程师! 问:如果要在 CANBUS 上供电 12V 或 27V,该怎么做? 因为 CAN 是平衡传输,要用差分信号来同步,现在要提高电平,该怎么做,以前请教过,但 都只是说设计接口电路就可以实现,但是太模糊了,能否有过经验者提供一点有实际操作的 思路。感激不尽。。 。。