查看: 4202|回复: 0

STM32 基于Nucleo板CAN总线的建立

[复制链接]
发表于 2016-10-10 13:44:13 | 显示全部楼层 |阅读模式
1.webp.jpg

前言

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

2.webp.jpg

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

3.webp.jpg

二、Porting

由于参考的是STM3210E_EVAL的示例程序,在用到STM32F103RBT6的Nucleo板子上的时候,需要做一些porting的工作。

1、系统时钟

在10E的EVAL板子上,使用的是HSE,而Nucelo上默认的是没有焊接HSE,所以使用到的是HIS;利用CubeMX生成代码:系统时钟为36MHz;

4.webp.jpg

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

5.webp.jpg

2CAN的接收/发送引脚

仍然可以都为PB8 (TX) 和PB9(RX),不需要改变;

3CAN的波特率

(自己想设置的是500K)

6.webp.jpg

7.webp.jpg

8.webp.jpg

所以,理论上,根据计算公式,

9.webp.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部分

程序中设计到:

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

10.webp.jpg


11.webp.jpg

至此,移植好了;

三、全速运行

1、按下 USERButton,会发出 CAN 报文,CAN 的 PC 端软件能够收到。

12.webp.jpg

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

13.webp.jpg

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


附录:

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

14.webp.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 acknowledgedby the receiver ,而正我们的环境中,只有一块板子,而没有 receiver。


重要通知 - 请仔细阅读
意法半导体公司及其子公司(“ST”)保留随时对ST 产品和/ 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方订货之前应获取关于ST 产品的最新信息。ST 产品的销售依照订单确认时的相关ST 销售条款。
买方自行负责对ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。
ST 不对任何知识产权进行任何明示或默示的授权或许可。
转售的ST 产品如有不同于此处提供的信息的规定,将导致ST 针对该产品授予的任何保证失效。
ST 和ST 徽标是ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。

本文档中的信息取代本文档所有早期版本中提供的信息。




文章来源:微信公众号  融创芯城(一站式电子元器件、PCB、PCBA购买服务平台,项目众包平台)

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

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表