stm32 HAL库之CAN总线

本文的目的是为了能够实现功能,故写的时候比较简略。

参考资料:https://blog.csdn.net/u012308586/article/details/81001102

                 正点原子开发手册

目标:

通过can总线,用stm32的CAN模块实现对电机驱动发送指令,从而实现对电机的控制。

硬件设计:

①收发芯片的功能:把单片机送来的信号通过收发芯片的转换从而实现信号的具体传输。

②120欧终端电阻:主要是为了防止信号的干扰,一般来说,终端设备的CAN_H和CAN_L也要加上120欧终端电阻。

软件设计基本知识:

其实各种通信方式的本质都是一样的,均分为两个部分;①波特率:以何种速度来通信②具体准则:发送端和接收端对发送来的数据的解释。

特色:CAN工作于4种模式;类似于手机的飞行模式,正常模式,待机状态,是一种感觉。

           CAN常用的工作模式是(1)回环模式:也就是自己发,自己收。(2)正常工作模式,也就是用于正常的接收,发送。

一.公共部分(发送端和接收端都会用到的部分)

①波特率:

通过配置挂在APB1总线上的CAN1模块的几个参数设置从而得到通信速率。也就是通过设置挂在APB1外设总线上的速率 

42Mhz。 

然后通过波特率计算公式(波特率= APB1外设总线速率  * (1/(相位缓冲段 1+相位缓冲段 2+重新同步跳跃段)*(预分频系数)))来设置波特率

这个参数代表波特率=42M/(2*(14+6+1))=1M bps

注意:①相位缓冲段1设置范围:1-16 ②相位缓冲段2设置范围:1-8  ③重新同步跳跃段一般设置为1

二.发送端:

(1)设置的数据格式

CAN协议规定发送的数据有几种:数据帧,遥控帧,错误帧,过载帧,间隔帧。我们取其一种:数据帧来举例,故名思意,这种帧就是用来发送数据的,也是应用最广泛的一种数据帧。

帧的格式如下图

对于我们来说我们只需要关注以下几点:①仲裁段(ID)  ②数据段的长度(DLC)③帧的类型

①ID;这是CAN总线的特色,它有两个含义

(1)代表每个单元的地址

(2)代表优先级,CAN总线可以用于多主多从结构,简而言之,在一个系统里面,每个单元都可以收发,那么当有多个单元想要占用总线的时候,那么我给谁用呢?于是这个时候多个单元都来到总线上进行仲裁,优先级高的占据总线使用权。

②数据长度:就是明确的指出我发的这一帧数据里面有几个数据(一帧最多发送8字节的数据)

③帧的类型:有标准帧(11位)和扩展帧(29位)两种,这是为整个网络考虑,当整个网络节点个数多,则用扩展帧。小型网络标准帧足够。

(2)发送邮箱

用于存放要发送的数据。

程序选择 1 个空置的邮箱(TME=1)-->设置标识符(ID)数据长度(DLC)和发送数据(数据帧)-->设置 CAN_TIxR 的 TXRQ 位为 1,请求发送-->邮箱挂号(等待成为最高优先级)-->预定发送(等待总线空闲)-->发送-->邮箱空置。

(3)发送仲裁

问题来源:用CAN发送多个数据的时候,出现了发送字节乱序的问题。

参考博客:https://blog.csdn.net/zhangxufei/article/details/52334278

如果三个邮箱中同时存在多个待发送的报文时,此时存在一个问题,即先送哪个邮箱中的报文好呢?此时,存在一个发送优先级的问题。此时,非空发送邮箱进入发送仲裁,发送仲裁有两种策略:ID模式和FIFO模式。

ID模式:当有超过1个发送邮箱在挂号时,发送顺序由邮箱中报文的标识符决定。根据CAN协议,标识符数值最低的报文具有最高的优先级。如果标识符的值相等,那么邮箱号小的报文先被发送。此模式通过对CAN主控寄存器CAN_MCR的TXFP位清0来设置。

FIFO模式:通过对CAN_MCR寄存器(CAN主控寄存器)的TXFP位置’1’,可以把发送邮箱配置为发送FIFO。在该模式下,发送的优先级由发送请求次序决定。该模式对分段发送很有用。

三.接收端

对于我们来说我们只需要关注以下几点:①过滤器

①过滤器:

(1)顾名思义,通过它来得到我们想要的ID的数据,当总线上的数据经过仲裁后,终于到达目的地(接收端)了,那么这个时候还要让接收端看看这是不是我想要的数据,怎么看呢?通过ID。

(2)工作模式:列表模式;得到一组帧,通过设置仅关心ID的几位来实现。

                          标志位掩码模式:得到特定ID的帧。过来的帧的ID必须与过滤器的ID一摸一样。

四.代码实现:

链接:https://pan.baidu.com/s/1GadiL6UjDvrh6wDDlpp1nw   提取码:38zp

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 转:https://www.kvaser.cn/about-can/can-protocol-tutorial/?...
    right_33cb阅读 2,377评论 0 3
  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,788评论 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,694评论 1 20
  • 这一年,经历了太多。回头看以前的自己,为什么就不能再认真一点,再多想一步。如果一切我都做好了,会不会也就不是今天这...
    霙落阅读 264评论 0 0
  • 今天的行程有点赶,既要购物,又要去景点,而且安排的景点较多,另外还打算去泡个泥浆浴,行程满满,来去匆匆。 ...
    汾湖秀阅读 283评论 7 4