没有合适的资源?快使用搜索试试~ 我知道了~
首页STM32_CAN-bus总线协议调试心得
资源详情
资源评论
资源推荐
GZHU Electronic Association
第 1 页 共 11 页
STM32_CAN_Bus
STM32_CAN_Bus
STM32_CAN_Bus
STM32_CAN_Bus 调试心得
GZHU
Electronic Association
By Ansonxiao
今天看了下我们的 becarson feng 写的一篇《 STM32 的 can 现场总线实验心
得 》,发觉写得还不错!很好!借鉴了下!
介绍下本人的开发平台:
硬件: STM32F103ZET6 为核心的红牛开发板
软件:
RVMDK
下载器: JLink V8
本人对板子的评价,红牛开发板的开发例程太懒啦!不适合我们这些菜
鸟级学 , 本人多数学习
STM32
是学习 安富莱 开发的例程 , 或 豆皮的开发例程
,
他们写的都比较详细,适合我这些菜鸟基础学习! ^_^ !
在学习 CAN Bus 中,因为 STM32 本身有提供例程,所以我就是看着开发
板的例程和
CAN Bus
的协议来了个大概了解,基本弄明白了他的通信协议
,
大多数和 I2C , TCP/IP 相似,也是有些多节点识别的报文功能。
如果想更明白 CAN Bus 可以在网上看 瑞萨科技的 《 CAN 入门书》 或
到 周立功看他们的 CAN 的基本知识 。
好的,现在讲解下 CAN 的学习方式(内容转载自豆皮的 CAN 开发例程)
http://www.stmfans.com/bbs/viewthread.php?tid=3046&extra=page%3D1
1 、 首先通读手册中关于 CAN 的文档,必须精读。
STM32F10xxx 参考手册 Rev7V3.pdf
需要精读的部分为
RCC
和
CAN
两个章节。
为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将
要使用到 RCC 部分的设置,因此推荐大家先复习下这部分中的几个时
钟。
关于 STM32 的 can 总线简单介绍
bxCAN 是基本扩展 CAN(Basic Extended CAN) 的缩写,它支持 CAN 协议
2.0A
和
2.0B
。 它的设计目标是 , 以最小的
CPU
负荷来高效处理大量收到的
报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。
对于安全紧要的应用, bxCAN 提供所有支持时间触发通信模式所需的硬
件功能。
GZHU Electronic Association
第 2 页 共 11 页
主要特点
· 支持 CAN 协议 2.0A 和 2.0B 主动模式
· 波特率最高可达 1 兆位 / 秒
· 支持时间触发通信功能
发送
· 3 个发送邮箱
· 发送报文的优先级特性可软件配置
· 记录发送 SOF 时刻的时间戳
接收
· 3 级深度的 2 个接收 FIFO
· 14 个位宽可变的过滤器组-由整个 CAN 共享
· 标识符列表
· FIFO 溢出处理方式可配置
· 记录接收 SOF 时刻的时间戳
可支持时间触发通信模式
· 禁止自动重传模式
· 16 位自由运行定时器
· 定时器分辨率可配置
· 可在最后 2 个数据字节发送时间戳
管理
· 中断可屏蔽
· 邮箱占用单独 1 块地址空间,便于提高软件效率
2 、 STM32FVBT6 的 can 的工作模式分为
/* CAN operating mode */
#define CAN_Mode_Normal ((u8)0x00) /* normal mode */
#define CAN_Mode_LoopBack ((u8)0x01) /* loopback mode */
#define CAN_Mode_Silent ((u8)0x02) /* silent mode */
#define CAN_Mode_Silent_LoopBack ((u8)0x03) /* loopback combined
with silent mode */
在此章我们的豆皮教程中我们将使用到 CAN_Mode_LoopBack 和
CAN_Mode_Normal 两种模式。
我们第一步做的就是使用运行在
CAN_Mode_LoopBack
下进行自测试
。
在参考手册中 CAN_Mode_LoopBack ( 环回模式 ) 的定义如下 :
环回模式可用于自测试 。 为了避免外部的影响 , 在环回模式下 CAN 内核忽略
确认错误 ( 在数据 / 远程帧的确认位时刻,不检测是否有显性位 ) 。在环回模式
下, bxCAN 在内部把 Tx 输出回馈到 Rx 输入上,而完全忽略 CANRX 引脚的实
际状态。发送的报文可以在 CANTX 引脚上检测到。
因此比较适合我们只有一块豆皮的情况下面测试 STM32 的 CAN 部分
BSP 程序。
GZHU Electronic Association
第 3 页 共 11 页
基本在这了解了是 CAN 的测试方式有自测试功能 , 那么我们就可以通过 LED
灯来检测是否有可以正常通信,在红牛例程中,或豆皮的例程中都是有灯提
示我们是否发送成功 , 所以我们可以通过
JLink
的单步调试来检测是否正确 !
红牛的例程差劲的地方是做好的硬件电路 , 就直接把 STM32 的官方例程下载
下去,什么注释,讲解使用方法都不说,简直是考验我这菜鸟!
结果单步调试下,程序成功进入了 LED1 和 LED2, 证明可以通信!
TestRx = CAN_Polling();
if (TestRx == FAILED)
{
/* Turn on led connected to GPIO_LED pin8 (LD3) */
GPIO_SetBits(GPIO_LED, GPIO_Pin_8);
}
else
{
/* Turn on led connected to GPIO_LED pin6 (LD1) */
GPIO_SetBits(GPIO_LED, GPIO_Pin_6);
}
/* CAN transmit at 500Kb/s and receive by interrupt in loopback mode */
TestRx = CAN_Interrupt();
if (TestRx == FAILED)
{
/* Turn on led connected to GPIO_LED pin9 (LD4) */
GPIO_SetBits(GPIO_LED, GPIO_Pin_9);
}
else
{
/* Turn on led connected to GPIO_LED pin7 (LD2) */
GPIO_SetBits(GPIO_LED, GPIO_Pin_7);
}
剩余10页未读,继续阅读
锋影Q
- 粉丝: 505
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论11