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

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

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    954

    主题

    3778

    帖子

    93

    好友

    Rank: 9Rank: 9Rank: 9

    管理员

    最后登录
    2018-2-22
    发表于 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
    回复

    使用道具 举报

    该用户从未签到

    8

    主题

    24

    帖子

    0

    好友

    Rank: 2

    初级会员

    最后登录
    2017-7-17
    发表于 2016-6-27 15:38:10 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    34

    主题

    851

    帖子

    1

    好友

    Rank: 7Rank: 7Rank: 7

    STM32粉丝勋章Ⅲ

    版主

    最后登录
    2018-2-15
    发表于 2016-10-25 15:22:08 | 显示全部楼层
    还没用的,提前过来学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    136

    帖子

    0

    好友

    Rank: 3Rank: 3

    中级会员

    最后登录
    2017-8-3
    发表于 2016-10-26 10:58:10 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    23

    主题

    612

    帖子

    1

    好友

    Rank: 4

    高级会员

    最后登录
    2017-7-11
    发表于 2016-10-26 12:33:12 | 显示全部楼层
    :lol
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    142

    帖子

    0

    好友

    Rank: 8Rank: 8

    论坛元老

    最后登录
    2018-2-21
    发表于 2016-10-26 14:18:06 | 显示全部楼层
    楼主用的什么编译器?没见过啊。IAR?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28

    主题

    540

    帖子

    4

    好友

    Rank: 6Rank: 6

    金牌会员

    最后登录
    2018-2-7
    发表于 2016-10-27 12:15:08 | 显示全部楼层
                            
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    612

    帖子

    1

    好友

    Rank: 4

    高级会员

    最后登录
    2017-7-11
    发表于 2016-12-17 22:21:14 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    449

    帖子

    1

    好友

    Rank: 6Rank: 6

    金牌会员

    最后登录
    2018-2-4
    发表于 2016-12-18 10:16:46 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    168

    帖子

    0

    好友

    Rank: 6Rank: 6

    金牌会员

    最后登录
    2018-1-28
    发表于 2016-12-18 10:33:10 | 显示全部楼层
    签到了               
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2018-2-22 20:40 , Processed in 0.175884 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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