查看: 13914|回复: 5

[S32] S32K144 can发送问题

[复制链接]
  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
    发表于 2018-1-31 10:28:47 | 显示全部楼层 |阅读模式
    本帖最后由 烟雨梦 于 2018-1-31 10:30 编辑

    调试环境IAR,参考S32K144 Beta SDK v0.9.0下的flexcan_encrypted例程,使用的是CAN1模块,CAN总线上一直无任何信号发送不成功?
    CAN1_ESR1下的IDLE SYNCH TX一直为零。代码如下:

    const flexcan_user_config_t canCom1_InitConfig0 = {
        .fd_enable = false,
        .pe_clock = FLEXCAN_CLK_SOURCE_SOSCDIV2,
        .max_num_mb = 2,
        .num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8,
        .is_rx_fifo_needed = false,
        .flexcanMode = FLEXCAN_NORMAL_MODE,
        .payload = FLEXCAN_PAYLOAD_SIZE_8,
        .bitrate = {
            .propSeg = 7,
            .phaseSeg1 = 4,
            .phaseSeg2 = 1,
            .preDivider = 1,
            .rJumpwidth = 1
        },
        .bitrate_cbt = {
            .propSeg = 7,
            .phaseSeg1 = 4,
            .phaseSeg2 = 1,
            .preDivider = 1,
            .rJumpwidth = 1
        },
        .transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS,
        .rxFifoDMAChannel = 0U
    };

    void CANInit(void)
    {
            /* Activate Clock for FlexCAN and PORT */
            PCC->PCCn[PCC_FlexCAN1_INDEX] |= PCC_PCCn_CGC_MASK;  /* CGC=1: Clock enabled */

            /* Configure Pin for CAN TX */
            PORTC->PCR[6]|=PORT_PCR_MUX(3);   /* Set MUX=0 temporarily */
            PORTC->PCR[7]|=PORT_PCR_MUX(3); /* MUX=5:  PTE5, ALT=5 as CAN0TX */

        FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0);

        flexcan_data_info_t dataInfo =
        {
                .data_length = 1U,
                .msg_id_type = FLEXCAN_MSG_ID_STD,
                .enable_brs  = true,
                .fd_enable   = true,
                .fd_padding  = 0U
        };

        /* Configure RX message buffer with index RX_MSG_ID and RX_MAILBOX */
        FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX, &dataInfo, RX_MSG_ID);

    }

    void SendCANData(uint32_t mailbox, uint32_t messageId, uint8_t * data, uint32_t len)
    {
        /* Set information about the data to be sent
         *  - 1 byte in length
         *  - 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
         */
        flexcan_data_info_t dataInfo =
        {
                .data_length = len,
                .msg_id_type = FLEXCAN_MSG_ID_STD,
                .enable_brs  = true,
                .fd_enable   = true,
                .fd_padding  = 0U
        };

        /* Configure TX message buffer with index TX_MSG_ID and TX_MAILBOX*/
        FLEXCAN_DRV_ConfigTxMb(INST_CANCOM1, mailbox, &dataInfo, messageId);

        /* Execute send non-blocking */
        FLEXCAN_DRV_Send(INST_CANCOM1, mailbox, &dataInfo, messageId, data);
    }

    帮忙分析下原因
    我知道答案 目前已有5人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25461
    最后登录
    2025-9-4
    发表于 2018-2-1 09:18:13 | 显示全部楼层
    首先,你要先讲讲你分析到了哪一步了,做了哪些尝试,debug调试发现了哪些问题?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2018-2-1 17:28:09 | 显示全部楼层
    小恩GG 发表于 2018-2-1 09:18
    首先,你要先讲讲你分析到了哪一步了,做了哪些尝试,debug调试发现了哪些问题? ...

    发送调试好了,目前在调试接收数据,我用中断接收数据,但是中断一直进不去
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2018-2-2 16:22:23 | 显示全部楼层
    小恩GG 发表于 2018-2-1 09:18
    首先,你要先讲讲你分析到了哪一步了,做了哪些尝试,debug调试发现了哪些问题? ...

    我在CAN1_ORed_0_15_MB_IRQn中断里面接收到的数据就是我发送的数据,不发送数据后这个终端进不来了,这是什么问题?
    void CAN1_Oredbuf_IRQHandler(void)
    {
            uint32_t dummy;
            uint8_t length;
            uint32_t id;
            uint8_t RxDATA[8];
           
            if(CAN1->IFLAG1 & 0x01)
            {

                    CANRecData(CAN1CH,0,&id,&length,RxDATA);
                    /* If CAN 0 MB 4 flag is set (received msg), read MB4 */
                    dummy = CAN1->TIMER; /* Read TIMER to unlock message buffers */
                    (void)dummy;

                    CAN1->IFLAG1 = 0x00000001; /* Clear CAN 0 MB 4 flag without clearing others*/
            }
    }
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-5-15 10:31
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]常住居民I

    21

    主题

    117

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    297
    最后登录
    2019-7-2
    发表于 2018-2-7 16:56:58 | 显示全部楼层
    楼主的问题解决了吗
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    5 分钟前
  • 签到天数: 872 天

    连续签到: 1 天

    [LV.10]以坛为家III

    69

    主题

    3286

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10426
    最后登录
    2025-9-8
    发表于 2020-5-16 15:27:46 | 显示全部楼层
    CAN1 应该是不支持CANFD 特性的吧,看你好像配置的是CANFD  用CAN0 试试。或者去掉CANFD的配置
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-8 08:39 , Processed in 0.100916 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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