SPC56EL70L CAN驱动测试

CAN在汽车电子中是最常用的通讯协议,因此我们先测试一下SPC5系列中CAN如何使用。

首先创建一个CAN demo示例程序。点击File->New->SPc4Studio Wizard,弹出如下界面:

由于我所用的芯片是SPC56EL70L5CBF,因此我选择SPC56EL70L5DISP开发板,点击Next,到达下一个页面。

在Dirvers中选择CAN,applicatin中选择第二个,直接点击Finish就可以生成相应的代码。

代码生成后,先不要着急运行程序,因为这个时候CAN的io口还没有定义。在这款芯片中总共有三路CAN,因此要看你的板子中使用的是哪路CAN。

点击SPC56ELxx HAL Board Initialization Component,选择I/O Settings,点击类似CPU的一个按钮可以跳转到IO配置界面,这个比一般的IDE要方便很多。

我使用的板子的can连接的是109和110两个io,因此我需要将这两个引脚设置为使用CAN功能。在OutLine中我们可以看到当前的can是FlexCAN_0,这个需要记住,后续会用到。现在引脚这些都配置完了,我们看一下具体的代码。

打开Main文件

55 行 componentsInit() 初始化组件

60行 canStart(&CAND1, &can_config_cfg0);这行是打开can通讯,在这个代码中定义了使用哪路can,以及波特率等信息。CAND1指的就是FlexCAN_0,因此这个我们不需要更改,如果有的朋友使用的其他can,可以把这修改一下。can_config_cfg0是一个全局变量,我们可以看到他有一个默认的定义。

 CAN_MCR_WRN_EN  表示是CAN主寄存器的值。

CAN_CTRL_LPB | CAN_CTRL_PROPSEG(2) | CAN_CTRL_PSEG2(7) |  CAN_CTRL_PSEG1(3) | CAN_CTRL_PRESDIV(3)表示的can的波特率设置。

表示如果使用滤波,接收的id号。

这在我设置波特率为250,不使用滤波。将程序下载进去,测试一下。

发送没有问题了,但是发现竟然可以接收到数据,但是上位机并没有发送数据,怪事!!!

查看datasheet,发现can有三种模式,正常模式,监听模式,回环模式。目前是处于回环模式,这就解释的通了。我们将can设置为正常模式,发送一个数据测试一下。

关掉过滤器

关掉回环模式

通过can工具发送数据:

程序接收到数据:

到此CAN发送和接收都搞定了。


做个小广告,下面是本人的微信公众号,用电脑不方便的朋友可以关注一下,博客的内容会实时更新上去。

                                                                            

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值