打印
[信息]

【实战经验】STM32 基于Nucleo板CAN总线的建立

[复制链接]
2159|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 香水城 于 2017-8-14 12:00 编辑

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、原理图如下:

上面原理图是针对SN65HVD230的,
因为PB8是CAN_TX,是MCU端的发送,需要到CAN transfer的输入引脚,即引脚D(Driver input);
因为PB9是CAN_RX,是MCU端的接收,是CAN transfer的输出引脚,即引脚R(Recv output);




二、Porting
由于参考的是STM3210E_EVAL的示例程序,在用到STM32F103RBT6的Nucleo板子上的时候,需要做一些porting的工作。
1、系统时钟
在10E的EVAL板子上,使用的是HSE,而Nucelo上默认的是没有焊接HSE,所以使用到的是HIS;利用CubeMX生成代码:系统时钟为36MHz;

供给CAN外设的时钟:是APB1的时钟18MHz;

2、CAN的接收/发送引脚
仍然可以都为PB8 (TX) 和PB9 (RX) ,不需要改变;
3、CAN的波特率
(自己想设置的是500K):



所以,理论上,根据计算公式,
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部分
程序中设计到:

在10E-EVAL板子上,用到的是PG.08,而在nucleo上使用到的是PC.13


至此,移植好了;

三、全速运行
1、按下USER Button,会发出CAN 报文,CAN的PC端软件能够收到。

2、CAN的PC端软件发送报文,软件中的中断函数也会进入中断。

说明,CAN的发送和接收这一基本的操作已经完成了。对于CAN的复杂的运用特点,可以在该基础上进一步衍生。

附录:
1、针对现有的CAN的总线协议:在数据区域只有固定的8Byte;也就是说一个CAN报文发送的数据只有8个,我们的单片机的寄存器也只提供了8个寄存器,符合当前的CAN的协议;如果客户想发送多个>8的数据,需要在其上层协议中,用软件去多次发送。也许在下一代的CAN总线中,会对这一特点进行改变。

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。

对应PDF: STM32 基于 Nucleo板 CAN总线的建立
更多实战经验请看:【ST MCU实战经验汇总贴】

沙发
mark0668| | 2016-6-21 16:43 | 只看该作者
感谢分享!

使用特权

评论回复
板凳
21ic小喇叭| | 2016-6-21 16:44 | 只看该作者
感谢楼主的分享~~

使用特权

评论回复
地板
huangcunxiake| | 2016-6-21 16:57 | 只看该作者
程序是在什么下面写的,看着很酷的字体。

使用特权

评论回复
5
松哥无敌| | 2016-6-21 20:59 | 只看该作者
good
!!!

使用特权

评论回复
6
mmuuss586| | 2016-6-21 21:04 | 只看该作者
支持下;

使用特权

评论回复
7
犹豫的大三| | 2016-6-21 21:28 | 只看该作者
这是个系列吗?

使用特权

评论回复
8
huaiqiao| | 2016-6-22 12:04 | 只看该作者
这个CANTools,也相当于串口调试助手一样?是个上位机的辅助软件。

使用特权

评论回复
9
yl_ha| | 2016-6-23 09:26 | 只看该作者

支持下;

使用特权

评论回复
10
jjlink| | 2016-6-23 10:36 | 只看该作者
代码可以分享一下吗?

使用特权

评论回复
11
cyhuaxiang| | 2016-6-23 11:08 | 只看该作者
文件怎么提示损坏呢?

使用特权

评论回复
12
anvy178| | 2016-7-4 09:42 | 只看该作者
版主  与电脑借口的CAN的硬件是什么呀?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17058

帖子

283

粉丝