请选择 进入手机版 | 继续访问电脑版
搜索
查看: 791|回复: 9

[原创] 【实战】STM32 基于Nucleo板CAN总线的建立

[复制链接]

521

主题

1993

帖子

2

精华

Rank: 9Rank: 9Rank: 9

管理员

注册时间
2016-6-1
发表于 2016-6-21 17:47:16 | 显示全部楼层 |阅读模式
STM32 基于 Nucleo板 CAN总线的建立

前言
STM32 NUCLEO开发平台是ST最新发布的易用性好、可扩展性佳的低成本平台。开发平台具有mbed功能支持Arduino接口,同时还提供ST Morpho扩展排针,可连接微控制器的所有周边外设,可以利用Arduino巨大生态系统优势,便于快速实现STM32学习和评估! 这儿我们评估它的CAN外设功能。

一、环境搭建
1、软件:
STM32Cube\Repository\STM32Cube_FW_F1_V1.3.0\Projects\STM3210E_EVAL\Examples\CAN\CAN_Networking\EWARM
2、硬件:
NUCLEO-F103RB(STM32F103RBT6)
3、原理图如下:
11.jpg
上面原理图是针对SN65HVD230的,
因为PB8是CAN_TX,是MCU端的发送,需要到CAN transfer的输入引脚,即引脚D(Driver input);
因为PB9是CAN_RX,是MCU端的接收,是CAN transfer的输出引脚,即引脚R(Recv output);
12.jpg


二、Porting
由于参考的是STM3210E_EVAL的示例程序,在用到STM32F103RBT6的Nucleo板子上的时候,需要做一些porting的工作。
1、系统时钟
在10E的EVAL板子上,使用的是HSE,而Nucelo上默认的是没有焊接HSE,所以使用到的是HIS;利用CubeMX生成代码:系统时钟为36MHz;
13.jpg
供给CAN外设的时钟:是APB1的时钟18MHz;
14.jpg
2、CAN的接收/发送引脚
仍然可以都为PB8 (TX) 和PB9 (RX) ,不需要改变;
3、CAN的波特率
(自己想设置的是500K):
15.jpg
16.jpg
17.jpg
所以,理论上,根据计算公式,
NominalBitTime = 1 × tq + tBS1 + tBS2 = (TS1[3:0] + 1 + TS2[2:0] + 1 + 1)* (BRP[9:0] + 1) x tPCLK;
所以,NominalBitTime = 9* 4* tPCLK; = Freq(APB1)/36 = 18/36 = 0.5MHz = 500K;
4、User部分
程序中设计到:
18.jpg
在10E-EVAL板子上,用到的是PG.08,而在nucleo上使用到的是PC.13
19.jpg
20.jpg
至此,移植好了;

三、全速运行
1、按下USER Button,会发出CAN 报文,CAN的PC端软件能够收到。
21.jpg
2、CAN的PC端软件发送报文,软件中的中断函数也会进入中断。
22.jpg
说明,CAN的发送和接收这一基本的操作已经完成了。对于CAN的复杂的运用特点,可以在该基础上进一步衍生。

附录:
1、针对现有的CAN的总线协议:在数据区域只有固定的8Byte;也就是说一个CAN报文发送的数据只有8个,我们的单片机的寄存器也只提供了8个寄存器,符合当前的CAN的协议;如果客户想发送多个>8的数据,需要在其上层协议中,用软件去多次发送。也许在下一代的CAN总线中,会对这一特点进行改变。
23.jpg
2、CanHandle.Init.NART = ENABLE的说明;
在基于"STM32Cube_FW_F4_V1.10.0
\Projects\STM324x9I_EVAL\Examples\CAN\CAN_Networking" , 如果只用一块STM32F429-EVAL调用HAL_CAN_Transmit()的发送函数,会发现CAN Controller会不断的发送数据, 这是因为在我们提供的示例中,是需要两块板子互联的,在CAN协议中,如果消息没有被正确的接收,它将会be retransmitted infinitely by the transmitter until it will be
acknowledged by the receiver ,而正我们的环境中,只有一块板子,而没有receiver。



文档下载地址:
http://www.stmcu.org/document/list/index/category-999
实战经验汇总:
http://www.stmcu.org/module/forum/thread-576401-1-1.html
欢迎加入STM32/STM8社区技术交流群: 313887143    STM32Lxx开发群:571793578
回复

使用道具 举报

7

主题

20

帖子

0

精华

Rank: 2

初级会员

注册时间
2015-7-17
发表于 2016-6-27 15:38:10 | 显示全部楼层
回复

使用道具 举报

27

主题

660

帖子

0

精华

Rank: 7Rank: 7Rank: 7

版主

注册时间
2008-4-2
发表于 2016-10-25 15:22:08 | 显示全部楼层
还没用的,提前过来学习
欢迎加入STM32/STM8社区技术交流群: 313887143    STM32Lxx开发群:571793578
回复 支持 反对

使用道具 举报

2

主题

136

帖子

0

精华

Rank: 3Rank: 3

中级会员

注册时间
2016-8-12
发表于 2016-10-26 10:58:10 | 显示全部楼层
回复

使用道具 举报

23

主题

610

帖子

0

精华

Rank: 6Rank: 6

金牌会员

注册时间
2014-12-17
发表于 2016-10-26 12:33:12 | 显示全部楼层
:lol
欢迎加入STM32/STM8社区技术交流群: 313887143    STM32Lxx开发群:571793578
回复

使用道具 举报

3

主题

138

帖子

0

精华

Rank: 8Rank: 8

论坛元老

注册时间
2015-6-9
发表于 2016-10-26 14:18:06 | 显示全部楼层
楼主用的什么编译器?没见过啊。IAR?
回复 支持 反对

使用道具 举报

26

主题

487

帖子

0

精华

Rank: 6Rank: 6

金牌会员

注册时间
2016-6-20
发表于 2016-10-27 12:15:08 | 显示全部楼层
                        
欢迎加入STM32/STM8社区技术交流群: 313887143    STM32Lxx开发群:571793578
回复 支持 反对

使用道具 举报

23

主题

610

帖子

0

精华

Rank: 6Rank: 6

金牌会员

注册时间
2014-12-17
发表于 2016-12-17 22:21:14 | 显示全部楼层
回复

使用道具 举报

9

主题

452

帖子

1

精华

Rank: 6Rank: 6

金牌会员

注册时间
2016-8-2
发表于 2016-12-18 10:16:46 | 显示全部楼层
欢迎加入STM32/STM8社区技术交流群: 313887143    STM32Lxx开发群:571793578
回复

使用道具 举报

2

主题

143

帖子

0

精华

Rank: 4

高级会员

注册时间
2015-11-9
发表于 2016-12-18 10:33:10 | 显示全部楼层
签到了               
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|意法半导体STM32/STM8技术社区    

GMT+8, 2017-5-25 07:16 , Processed in 0.208828 second(s), 14 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表