3846|3

47

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

lm3s 的CAN总线 [复制链接]

        最近在看LM3s 的CAN接口,从shilaike《本人学习CAN的所有的资料文档和心得》这篇帖子中下载了不少有用的资料,通过学习,对一些基本的函数的使用掌握的查不多了。不过随着学习的深入,也出现了一些新的困惑。
        据我所知,CAN是一种工业总线,是可以挂100多个节点的,节点也有自己在网络中的唯一地址,所以节点之间可以自由通信。而我看到坛子的帖子中大部分帖子,(也许是板子不够),普遍都是利用ti提供的CAN通信例程,从一个板发信息,另一个板接受信息,貌似成了一个主从似的一对一结构。对组成CAN网络这块谈及很少,我在学习的时候,感觉到如果LM3S的CAN仅仅是这样一对一的应用,实在是太可惜了。希望有过CAN组网这方面经验的大侠,能交流一下。
         另外还有个具体的问题,在shilaike那篇帖子中提供的附件can_lab_app.rar ,还有个地方没读懂。如下:

         while (1) {
//GpReFrameBuf->ucSize > 0表示已经接收到数据     
        if (GpReFrameBuf->ucSize > 0) 
{
//读数据缓冲区                                 
            while (canReadByteBuf(GpReFrameBuf, &tCanFrame) != EMPTY) 
//缓冲区不为空,继续发送  
                GbCANTI = false;
                canFrameSend(GpCanNodeInfo, &tCanFrame);

//延时等待发送成功
                while (GbCANTI != true) 
{
                    delay(10 * (GulSysClock / 3000));                   
                  }                
            }
//重配置节点接收验收过滤,配置"接收报文对象",用于接收 
//第一个参数:一个空节点空指针
//第二个参数:接收帧ID
//第三个参数:接收帧屏蔽码(屏蔽)
//第四个参数:为接收过滤验收方式,使用的是扩展帧
//第五个参数:接收远程帧报文对象,将配置pNodeInfo->ulTxMsgObjNr 
            canMsgObjSet(GpCanNodeInfo, 0x123, MASK, EXT_ID_FILTER, MSG_OBJ_TYPE_RX_REMOTE);
                                                                       
        } 
else 
{
            delay(20 * (GulSysClock / 3000));                           
        }  
    }
}

         GbCANTI 这个CAN发送成功中断标志,我没有看到在什么地方置位,进 canFrameSend(GpCanNodeInfo, &tCanFrame)函数看了也没有发现给他置位,如果没有置位的,岂不是一直在延时等待?

         以上是我一些学习的困惑,希望和大家沟通,也许是我学的太浅薄,或者程序看的不仔细,还请大家直言批评

can_lab_app.zip

1.13 MB, 下载次数: 74

最新回复

如何判断哪个节点是发送方,哪个节点是接收方呢?  详情 回复 发表于 2012-11-23 13:44
 
点赞 关注

回复
举报

47

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
下午自己又去查了下can总线的资料,发现自己对于can网络的理解完全错了!can通信是一种点对多点的传输协议,不是基于地址的传统点对点传输协议。当一个点传输数据时,总线上的其他点都可以为接收方,它们可以通过ID来做出对总线上传输数据的处理(接受和丢弃,所以CAN的节点是没有地址的。

[ 本帖最后由 wstcnsbc1 于 2012-4-18 18:47 编辑 ]

点评

如何判断哪个节点是发送方,哪个节点是接收方呢?  详情 回复 发表于 2012-11-23 13:44

赞赏

1

查看全部赞赏

 
 

回复

101

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

请指教

两块板子之间的CAN通讯时序应该如何设置呢?
A号机发送数据,B号机是接收数据。具体流程应该如何:
A发送,进入中断判断是否发送成功,如果没有延迟时间重新复位发送?
B判断是否有数据发送,有则接收,无则等待?
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(高级)

4
 

回复 沙发 wstcnsbc1 的帖子

如何判断哪个节点是发送方,哪个节点是接收方呢?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表