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

[S32] S32K144 CAN 通信 不正常

[复制链接]

该用户从未签到

2

主题

24

帖子

5

新手上路

Rank: 1

积分
46
最后登录
2021-11-24
发表于 2018-5-20 18:07:22 | 显示全部楼层 |阅读模式
1、先配置引脚
    GPIOInit();
2、配置 CAN

const can_user_config_t can0_pal_Config0 = {
    .maxBuffNum = 2U,
    .mode = CAN_LOOPBACK_MODE,
    .enableFD = true,
    .payloadSize = CAN_PAYLOAD_SIZE_16,
    .nominalBitrate = {
        .propSeg = 7,
        .phaseSeg1 = 4,
        .phaseSeg2 = 1,
        .preDivider = 0,
        .rJumpwidth = 1
    },
    .dataBitrate = {
        .propSeg = 11,
        .phaseSeg1 = 1,
        .phaseSeg2 = 1,
        .preDivider = 0,
        .rJumpwidth = 1
    },
    .extension = NULL,
};


    CAN_Init(INST_CAN_PAL1, &can_pal1_Config0);
3、配置接收缓冲区
    /* Set information about the data to be sent
     *  - Standard message ID
     *  - Bit rate switch enabled to use a different bitrate for the data segment
     *  - Flexible data rate enabled
     *  - Use zeros for FD padding
     */
    can_buff_config_t buffCfg =  {
        .enableFD = true,
        .enableBRS = true,
        .fdPadding = 0U,
        .idType = CAN_MSG_ID_STD,
        .isRemote = false
    };

    /* Configure RX buffer with index RX_MAILBOX */
    CAN_ConfigRxBuff(INST_CAN_PAL1, RX_MAILBOX, &buffCfg, RX_MSG_ID);

这里有个问题 : RX_MSG_ID 这是应该就是接收ID吧,不是这个消息ID 不会到 上面配置的  buff里面去 ,对吧
4、开始接收
        /* Start receiving data in RX_MAILBOX. */
        CAN_Receive(INST_CAN_PAL1, RX_MAILBOX, &recvMsg);

5、配置发送,以及 发送数据
            /* Set information about the data to be sent
             *  - Standard message ID
             *  - Bit rate switch enabled to use a different bitrate for the data segment
             *  - Flexible data rate enabled
             *  - Use zeros for FD padding
             */
            can_buff_config_t buffCfg =  {
                .enableFD = true,
                .enableBRS = true,
                .fdPadding = 0U,
                .idType = CAN_MSG_ID_STD,
                .isRemote = false
            };

            /* Configure TX buffer with index TX_MAILBOX*/
            CAN_ConfigTxBuff(INST_CAN_PAL1, TX_MAILBOX, &buffCfg);

            /* Prepare message to be sent */
            can_message_t message = {
                .cs = 0U,
                .id = TX_MSG_ID,
                .data[0] = ledRequested,
                .length = 1U
            };

            /* Send the information via CAN */
            CAN_Send(INST_CAN_PAL1, TX_MAILBOX, &message);


6、问题 是 只是进入中断一次,即 发送完成 中断,没有进入接收中断 !!!不知道哪里配置错了,请告知 ,谢谢!

最佳答案

所-长 发表于 2018-5-22 13:36 总结:        1、通过上面分析,得出  Propagation Segment Time 和 Time-Quanta 的值, 就可以 得出 寄存 ... 波特率配置请参考:【经验分享】KE06 M ...
回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

1

新手上路

Rank: 1

积分
40
最后登录
2018-8-27
发表于 2018-5-21 10:12:36 | 显示全部楼层
传统CAN通信的话,把enableFD = true 改成  false

评分

参与人数 1 +1 收起 理由
doatello + 1

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

24

帖子

5

新手上路

Rank: 1

积分
46
最后登录
2021-11-24
 楼主| 发表于 2018-5-21 17:49:10 | 显示全部楼层
/*! @brief CAN buffer configuration
* Implements : can_buff_config_t_Class
*/
typedef struct {
    bool enableFD;               /*!< Enable flexible data rate */
    bool enableBRS;              /*!< Enable bit rate switch inside a CAN FD frame */
    uint8_t fdPadding;           /*!< Value used for padding when the data length code (DLC)
                                     specifies a bigger payload size than the actual data length */
    can_msg_id_type_t idType;    /*!< Specifies whether the frame format is standard or extended */
    bool isRemote;               /*!< Specifies if the frame is standard or remote */
} can_buff_config_t;
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

24

帖子

5

新手上路

Rank: 1

积分
46
最后登录
2021-11-24
 楼主| 发表于 2018-5-21 17:51:36 | 显示全部楼层
bool enableFD;               /*!< Enable flexible data rate */

这句话 神马意思啊 使能 自由速率 ???


这几个参数我都不太懂 ,除了最后两个  是标准帧 还是  扩展帧,是远程帧还是标准帧,,麻烦 大神解释下 上面几个参数 谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

24

帖子

5

新手上路

Rank: 1

积分
46
最后登录
2021-11-24
 楼主| 发表于 2018-5-22 09:54:53 | 显示全部楼层
我 感觉 这几个 参数配置 的不对 ,请问这几个参数怎么配置?
QQ图片20180522095032.png
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

24

帖子

5

新手上路

Rank: 1

积分
46
最后登录
2021-11-24
 楼主| 发表于 2018-5-22 09:56:48 | 显示全部楼层
小恩哥哥  你 在哪里  ?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2018-7-31 08:40
  • 签到天数: 43 天

    [LV.5]常住居民I

    299

    主题

    876

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14675
    最后登录
    2020-3-1
    发表于 2018-5-22 10:08:45 | 显示全部楼层
    恩,,你要不要私信问一下小恩GG?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    24

    帖子

    5

    新手上路

    Rank: 1

    积分
    46
    最后登录
    2021-11-24
     楼主| 发表于 2018-5-22 10:21:11 | 显示全部楼层
    配置成  这个参数 ,CAN 通信就正常了 ,enableFD = true 改成  false,不会一直触发 CAN 总线 错误中断了  ,否则 CAN 数据发送不出去 一直进入 CAN总线错误中断!!!
    QQ图片20180522095032.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    24

    帖子

    5

    新手上路

    Rank: 1

    积分
    46
    最后登录
    2021-11-24
     楼主| 发表于 2018-5-22 10:27:57 | 显示全部楼层
    /* Configure for 500 KHz bit time */

    /* Time quanta freq = 16 time quanta x 500 KHz bit time= 8MHz */
    /* PRESDIV+1 = Fclksrc/Ftq = 8 MHz/8 MHz = 1 */
    /*    so PRESDIV = 0 */
    /* PSEG2 = Phase_Seg2 - 1 = 4 - 1 = 3 */
    /* PSEG1 = PSEG2 = 3 */
    /* PROPSEG= Prop_Seg - 1 = 7 - 1 = 6 */
    /* RJW: since Phase_Seg2 >=4, RJW+1=4 so RJW=3. */
    /* SMP = 1: use 3 bits per CAN sample */

    /* CLKSRC=0 (unchanged): Fcanclk= Fosc= 8 MHz */

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    24

    帖子

    5

    新手上路

    Rank: 1

    积分
    46
    最后登录
    2021-11-24
     楼主| 发表于 2018-5-22 10:28:29 | 显示全部楼层
    楼上是 配置波特率的  计算方法   
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 07:03 , Processed in 0.162081 second(s), 35 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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