中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 3134查看
  • 3回复

CAN -* RS232 之我的理解,请指教

[复制链接]

  • TA的每日心情
    开心
    1-7-2015 18:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 15-7-2008 19:58:21 | 显示全部楼层 |阅读模式

    汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


    这是本人这几点学习CAN的理解,请大家拍砖:

    1. MCP2551(CAN收发器) 连接 CAN总线,实现 CAN总线的差分信号与TTL信号的互转
    2. 单片机处理CAN收发器的TTL信息并处理,形成RS232数据格式发往MAX232.  单片机处理MAX232收到的数据封装成CAN数据帧发往CAN收发器发送到总线
    MAX232 则将负责TTL与RS232信号的相互转换实现PC的COM接口

    不知道上面的理解对不对?

    另外看到有MCP2515这种CAN控制器.我的理解是CAN控制器完成了CAN的链路层协议? 负责接收来自CAN收发器收到的总线数据并进行校验,接受.同时负责把要发往CAN收发器的数据进行校验,同时检查总线是否空闲等. 也就是这个CAN控制器可以由单片机编程后完成.也可以直接用CAN控制器简化要写入单片机的CAN逻辑程序.
    

    该用户从未签到

    发表于 14-11-2008 16:52:50 | 显示全部楼层
    MCU+CAN控制器+CAN收发器这是一种节点方式,或者MCU(内部带有CAN控制器)+CAN收发器。CAN收发器主要是产生符合CAN电气要求,CAN控制器是进行协议的分析,提取有用信息。如果你硬要MCU模拟实现CAN控制器功能,那个MCU就等于一个CAN控制器拉,但是不是很好实现的,根据CAN的协议规范就应该知道。即使MCU模拟实现了,其他功能也受到影响。现在很多高档MCU都带有CAN控制器的,所以可以不用考虑这个问题喔。
    另外,CAN是个网络协议,有规定电气以及数据流,而RS232只是一个标准,二者没有必然联系,有部分厂家做CAN转RS232模块,事实上就是电平以及协议转换。

    评分

    参与人数 1积分 +10 收起 理由
    清雅轩 + 10 回帖有奖【论坛口号→知无不言,言无不尽】

    查看全部评分

    

    该用户从未签到

    发表于 15-11-2008 14:30:20 | 显示全部楼层
    原帖由 miaorenfeng 于 15-7-2008 19:58 发表
    这是本人这几点学习CAN的理解,请大家拍砖:

    1. MCP2551(CAN收发器) 连接 CAN总线,实现 CAN总线的差分信号与TTL信号的互转
    2. 单片机处理CAN收发器的TTL信息并处理,形成RS232数据格式发往MAX232.  单片机处理MAX23 ...


    CAN收发器做的事情有这么几件:
    1.总线隔离,由于各个CAN节点之间可能不共地,所以需要把CAN高CAN低两根线上的差分电平转换为本地节点的TTL电平。
    2.总线保护,当本地节点不正常,比如未上电、欠压等情况下,收发器能够检测到这种情况,并置高阻态,以免影响整条总线的正常工作。
    3.EMI抑制,现代CAN收发器都能进行斜率控制,减小高频谐波辐射。

    LZ的意思我不是非常清楚,但是有几个问题需要澄清:
    1.CAN与RS232并不能匹配得很好,这是因为高速CAN的波特率可以达到1MHz,而RS232由于不是差分传输,到100多K已经很勉强了,所以在CAN总线负载不是很大的时候,RS232就已经满载了,所以说个人认为市面上的CAN-RS232转接器没有什么实用价值,如果是在一个低速(例如100K)轻载的CAN网络上实现的话,倒是差不多,不过需要规定RS232接口的上层协议,比如用MODBUS协议,否则CAN帧里的信息不能实现有效传递。
    2.如果不用专用的CAN控制器,而是采用单片机模拟控制器的话,我认为不太可能完全实现CAN协议,这是因为CAN的时序要求非常严格、错误处理情况也很多,这就要求单片机软件的实时性非常之高,基本上只能使用中断来处理总线上的每一个位、采集信息、并做错误处理,这个实在是困难,呵呵,自己实现CAN控制器比较可行的一个方案是采用CPLD、FPGA来做,实时性比较好。
    3.推荐的CAN-RS232结构是使用带有内部CAN控制器的单片机,由于232本身传输速的的问题,基本上只能在低速轻载的网络上使用,所以单片机8位机就可以,比如Freescale的HC08系列,至于SCI基本上现在是个单片机就有,所以再配个MAX232就行,程序的话就是接收一个端口的包->校验(CAN控制器自己就能校验)->拆包->重新打包->发到另一个端口上去,总之功能比较简单,还可以加个ID过滤、时间戳之类的附加功能,性能的事就不要想啦,呵呵。

    评分

    参与人数 1积分 +8 收起 理由
    清雅轩 + 8 热心人士【论坛口号→知无不言,言无不尽】

    查看全部评分

    

    该用户从未签到

    发表于 30-11-2008 21:42:09 | 显示全部楼层
    其实CAN和232直接一个最大的区别,就是是否有总线仲裁,
    CAN有,所以在设计程序时,你只需把发出去的数据,存在发送邮箱中就可以了,它什么时候发你就不用管了。
    232没有,所以在多个设备放在总线上通讯时,需要自己用软件编程来进行协调。

    评分

    参与人数 1积分 +4 收起 理由
    cartech8.com + 4 回帖有奖【论坛口号→知无不言,言无不尽】

    查看全部评分

    快速发帖

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

    GMT+8, 13-7-2025 13:49 , Processed in 0.731564 second(s), 39 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.