设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
控制专题
›
『数控/电机控制/运动控制/工业总线』
›
CANOpen系列教程06_结合代码理解CAN底层收发数据(含STM ...
返回列表
发新帖
CANOpen系列教程06_结合代码理解CAN底层收发数据(含STM32例程)
[复制链接]
50972
|
0
|
2024-3-15 09:55:04
|
显示全部楼层
|
阅读模式
置顶公众号,不错过每一条消息!
本教程由作者strongerHuang于2018年10月原创发布。
标签:CAN、 CANOpen、 CanFestival
版权所有:禁止商用
申明:该文档仅供个人学习使用,转载请公众号联系作者授权。
1写在前面
该教程前面讲述了许多关于CAN协议的一些概念,可能许多初学者看的云里雾里,那么本文将结合代码让大家理解之前讲述的内容。
因为关注我的人大部分都在学习STM32,我将结合STM32F103、标准外设库例程来让大家理解之前讲述的一些概念。
本文主要讲述内容:
1.传输数据相关参数
2.位时序及传输波特率
为方便大家理解,我将在最后提供对应例程「CANOpen系列教程06_CAN底层收发例程」。当然,本文只讲述代码中部分内容,某些配置参数放在后面讲述。
2
传输数据相关参数
传输数据相关参数其实主要就是前面《CANOpen系列教程04》讲述的“帧类型及格式说明”那一章节内容,建议先看下那些概念内容。
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
位时序及传输波特率
同样,在前面《CANOpen系列教程04》中有讲述“位时序及传输波特率”的概念。其实,位时序间接决定了传输的波特率。换句话说,传输的波特率由位时序几个参数决定。
看下图,回顾一下波特率计算公式:
3.1 波特率配置代码
结合上图计算公式和下图代码,可以看出位时序中几个参数和波特率的关系。波特率为1M时,几个位时序参数可以配置为如下图值:
提示:
36M代表CAN时钟,具体要看时钟相关配置。
波特率固定,位时序参数可以不同。比如波特率固定为1M,位时序参数可以为上图配置;也可以修改其中的值,如修改位段1为CAN_BS1_5tq,位段2为CAN_BS2_3tq。只要遵循波特率计算公式即可。
4
例程下载
CANOpen系列教程06_CAN底层收发例程:
https://pan.baidu.com/s/1LzD0Epc-Z8vlHsb-sD3WVw
提取码:l2dc
提示:
链接后期可能会失效,可回复【CANOpen系列教程】查看更新链接。
5
说明
1.该文档部分内容来自网络,仅供个人学习使用,版权所有,禁止商用。
2.本文由我一个人编辑并整理,难免存在一些错误。
3.本文收录于公众号「strongerHuang」,关注微信公众号回复【CANOpen系列教程】即可查看全系列教程。
6最后
若觉得文章对你有帮助,记得给我点赞、分享。(点赞是作者更新文章的动力)
扫描下面二维码、关注,在底部菜单中查看更多精彩内容!
长按识别图中二维码关注
赞赏是对作者的认可与支持!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
阿蚊在线
回复楼主
返回列表
『数控/电机控制/运动控制/工业总线』
『机器视觉/AI/IoT/机器人论坛』
『高级语言/组态软件/触摸屏』
『操作系统xp/xin7/win10/linux』