基于S32K SDK FLEXCAN的通信

1 前言

在NXP S32K SDK中FLEXCAN提供了CAN和CAN FD的驱动。本文讲解基本CAN通信的程序方法。

2 基本流程

第一步:基本硬件配置
这一步主要配置S32Kxxx MCU的硬件资源。如时钟,引脚,CAN物理层。这一步利用Processor Expert完成。
第二步:定义CAN通信配置及邮箱。
第三步:初始化CAN实例及缓冲区。
第四部:定义回调函数及处理内容。

3 实例

3.1硬件资源

MCU: S32K118
使用引脚:
PTC1:按键
PTA10:LED输出
PTB1:CAN Tx
PTB0:CAN Rx

3.2 实现功能

a. 按下按键后以500Kbps波特率发送ID=1,长度为8,内容为0x01 02 03 04 05 06 07 08的数据。
b. 当接收到500Kbps波特率 ID=2的帧时,点亮LED灯。当接收到ID=4的帧时,关闭LED灯。

3.3 实现

3.3.1 MCU配置

在Processor Expert中:
a. GPIO配置
按使用引脚将PTA10, PTC1分别设置为输出和输入如下:
GPIO设置
设置CAN通信所用引脚:
CAN引脚设置
b. 设置CAN硬件参数
CAN配置
这部分设置在SDK生成代码后对应:canCom1.c的如下内容:

const flexcan_user_config_t canCom1_InitConfig0 = {
   
/*CAN通信配置结构体名:canCom1_InitConfig0*/
    .fd_enable = false, /*不使用CAN FD*/
    .pe_clock = FLEXCAN_CLK_SOURCE_PERIPH,  /*CAN通信使用外设时钟源*/
    .max_num_mb = 10,/*邮箱数量为10*/
    .num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8, /*CAN帧ID过滤器数量为8*/
    .is_rx_fifo_needed = false,   /*不使用FIFO*/
    .flexcanMode = FLEXCAN_NORMAL_MODE,    /*正常模式*/
    .payload = FLEXCAN_PAYLOAD_SIZE_8,     
    .bitrate = {
     /*仲裁场位时间设置*/
        .propSeg = 7,
        .phaseSeg1 = 4,
        .phaseSeg2 = 1,
        .preDivider = 5,
        .rJumpwidth = 1
    },
    .bitrate_cbt = {
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值