博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CANOpen系列教程06_结合代码理解CAN底层收发数据(含STM32例程)
阅读量:2045 次
发布时间:2019-04-28

本文共 1939 字,大约阅读时间需要 6 分钟。

推荐

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!

CANOpen最新全套教程:

7.CANOpen系列教程07_CANOpen协议概述
8.CANOpen系列教程08_CANOpen通信接口引导学习
9.CANOpen系列教程09_CANOpen对象字典
10.CANOpen系列教程10_关于Canfestival及对象字典生成工具环境搭建
11.CANOpen系列教程11_深度分析CanFestival_3架构
12.CANOpen系列教程12_对象字典编辑器操作说明
13.CANOpen系列教程13_协议源码移植(一)
······

该系列教程已经在我的个人微信公众号**「strongerHuang」**整理并分享。因在这里分享文章,还需单独整理一遍,时间有限,就不再一一重复整理出来了。

想要查看更多相关教程,可以关注我的,回复【CANOpen系列教程】即可查看。

申明:该文档由作者「strongerHuang」原创发布,仅供个人学习使用,转载请公众号联系作者授权。版权所有,禁止商用

一、写在前面

该教程前面讲述了许多关于CAN协议的一些概念,可能许多初学者看的云里雾里,那么本文将结合代码让大家理解之前讲述的内容。

因为关注我的人大部分都在学习STM32,我将结合STM32F103、标准外设库例程来让大家理解之前讲述的一些概念。

本文主要讲述内容:

  ·1.传输数据相关参数
  ·2.位时序及传输波特率

为方便大家理解,我将在最后提供对应例程「CANOpen系列教程06_CAN底层收发例程」。当然,本文只讲述代码中部分内容,某些配置参数放在后面讲述。

二、传输数据相关参数

传输数据相关参数其实主要就是前面讲述的“帧类型及格式说明”那一章节内容,建议先看下那些概念内容。

CAN总线传输的内容主要就是发送和接收,下面我将结合代码中发送和接收参数来让大家理解我们编程控制CAN总线上那些参数。

2.1 CAN总线数据帧

本文提供例程主要是CAN总线使用最多的数据帧为例,让大家理解数据帧传输由我们编程控制的参数。

先看下图回顾一下数据帧格式,其中有些字段内容由控制器自动完成,如:帧起始,CRC校验。而有些就是由我们编程控制,如:ID、数据等。

2.2 CAN发送代码

A.CAN发送数据结构

下图主要就是CAN发送由我们编程控制的参数。其实你会发现,主要就是上面帧格式中部分内容:ID、IDE、RTR、DLC、Data。

B.发送配置参数

下图为实际发送配置的参数。

2.3 CAN接收代码

CAN接收其实和发送类似,CAN总线上的字段就那些,在接收端接收的那些参数无非就是发送端发送出来的那些参数。

针对STM32内部集成的CAN,接收数据结构多了一个FMI参数,大概意思就是接收消息邮箱筛选器索引。

接收操作

为方便初学者理解,这里这要就是使用中断接收CAN总线数据,在中断函数里面打印也主要是用于测试,一般实际项目打印不会出现在中断函数(打印相对耗时)。

三、位时序及传输波特率

同样,在前面中有讲述“位时序及传输波特率”的概念。其实,位时序间接决定了传输的波特率。换句话说,传输的波特率由位时序几个参数决定。

看下图,回顾一下波特率计算公式:

3.1 波特率配置代码

结合上图计算公式和下图代码,可以看出位时序中几个参数和波特率的关系。波特率为1M时,几个位时序参数可以配置为如下图值:

提示:

36M代表CAN时钟,具体要看时钟相关配置。

波特率固定,位时序参数可以不同。比如波特率固定为1M,位时序参数可以为上图配置;也可以修改其中的值,如修改位段1为CAN_BS1_5tq,位段2为CAN_BS2_3tq。只要遵循波特率计算公式即可。

四、例程下载

CANOpen系列教程06_CAN底层收发例程:

提取码:l2dc

提示:

链接后期可能会失效,可关注公众号回复【CANOpen系列教程】查看更新链接。

五、说明

1.该文档部分内容来自网络,仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该系列教程已更新于微信公众号【strongerHuang】,关注微信公众号回复【CANOpen系列教程】即可查看全系列教程。

六、最后

我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号。

你可能感兴趣的文章
【Loadrunner】使用LoadRunner上传及下载文件
查看>>
【Python】Python 打印和输出更多用法。
查看>>
【Loadrunner】使用LR录制HTTPS协议的三种方法
查看>>
【Python+Selenium】猪猪练习成功版:csv文件的输入和输出(运行环境:python3.5版本)...
查看>>
【python】BeautifulSoup的应用
查看>>
【Python】接口自动化测试-Fidder的使用(未完待续……)
查看>>
【Python】自动化测试框架-共通方法汇总
查看>>
【Python】if相关知识点
查看>>
【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?...
查看>>
Loadrunner解决启动浏览器后页面显示空白
查看>>
【Python】唯品会购买商品
查看>>
【JMeter】如何录制创建及得到曲线图
查看>>
【Loadrunner】Error -26601: Decompression function 错误解决、27728报错解决方案
查看>>
【其他】csv文件打开是乱码,怎么办?
查看>>
【Python】web.py初识学习
查看>>
【Python】【Web.py】python调用html【问题:echart图标调用html上未显示】
查看>>
【雅思】金山词霸-单词学习(1-40)
查看>>
【F12】谷歌浏览器F12前端调试工具 Console
查看>>
【服务器】如何在服务器发布网站?Sasa讲解
查看>>
【F12】九个Console命令,让js调试更简单
查看>>