查看: 2317|回复: 2

[求助] KE06Z CAN发送数据接收不到

[复制链接]
  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
    发表于 2018-3-27 11:08:20 | 显示全部楼层 |阅读模式
    本帖最后由 原来的你 于 2018-3-27 11:11 编辑

    最近产品中用到KE06Z 的can通信,目前can总线上面波形已经出现,但是CANPro收不到数据,而且总线一直有波形,不知道什么原因,使用的总线时钟,但是晶振使用的是19.6M,不知道是不是晶振问题
    1. #define NODE_ID1                        0x801
    2. #define NODE_ID2                        0x802
    3. #define NODE_ID3                        0x803

    4. //stand ID
    5. #define CAN_IDAR1                        0
    6. #define CAN_IDMR1                        0
    7. //extend ID
    8. #define CAN_IDAR0                        ((NODE_ID2>>21)<<24)|(((NODE_ID2>>18)&0x7)<<21)\
    9.                                                     |(((NODE_ID2>>15)&0x7)<<16)|(((NODE_ID2>>7)&0xFF)<<8)\
    10.                                                     |(((NODE_ID2>>0)&0x7F)<<1)\
    11.                                                     |(1<<19)                //extend ID
    12. #define CAN_IDMR0                        (1<<20)                 /* received only extend frame from this ID */
    复制代码
    1. int main(void)
    2. {     
    3.     RTC_ConfigType sRTCConfig;
    4.     RTC_ConfigType *pRTCConfig = &sRTCConfig;
    5.    
    6.     ADC_ConfigType sADC_Config = {0};
    7.    
    8.     MSCAN_ConfigType sMSCANConfig = {0};
    9.     ItemInfoType     sCANTxItemInfo;
    10.     MSCAN_FrameType  sRxFrameInfo;
    11.         
    12.     uint8_t i;
    13.     volatile uint32_t u32Delay;
    14.         
    15.     sysinit();

    16.     RUN_Init();        
    17.     YK0_Init();
    18.     YK1_Init();        
    19.     YK2_Init();
    20.    
    21.     RUN_Off();
    22.     YK0_Off();
    23.     YK1_Off();
    24.     YK2_Off();

    25.     GPIOA->PDDR |= (1<<13);  /* CAN芯片STB为低 PTB5*/
    26.     GPIOA->PCOR = (1<<13);

    27.     /* configure RTC to 1Hz interrupt frequency */
    28.     pRTCConfig->u16ModuloValue = 9;                                      
    29.     pRTCConfig->bInterruptEn   = RTC_INTERRUPT_ENABLE;     /* enable interrupt */
    30.     pRTCConfig->bClockSource   = RTC_CLKSRC_1KHZ;          /*clock source is 1khz*/
    31.     pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100;    /*prescaler is 100*/

    32.     RTC_SetCallback(RTC_CallBack);
    33.     RTC_Init(pRTCConfig);

    34.     /* initiaze ADC module */
    35.     sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_4;
    36.     sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
    37.     sADC_Config.u8Mode = ADC_MODE_12BIT;
    38.     sADC_Config.sSetting.bIntEn = 1;

    39.     ADC_SetCallBack(ADC_CallBack);
    40.     ADC_Init(ADC, &sADC_Config);

    41.     /* initiaze MSCAN module */
    42.     MSCAN_GlobeVaribleInit(MSCAN);
    43.    
    44.     SIM->PINSEL1 |= SIM_PINSEL1_MSCANPS_MASK;
    45.    
    46.     sMSCANConfig.sBaudRateSetting.SJW = BAUD_RATE_SJW;
    47.     sMSCANConfig.sBaudRateSetting.BRP = BAUD_RATE_BRP;
    48.     sMSCANConfig.sBaudRateSetting.SAMP = BAUD_RATE_SAMP;
    49.     sMSCANConfig.sBaudRateSetting.TSEG1= BAUD_RATE_TSEG1;  
    50.     sMSCANConfig.sBaudRateSetting.TSEG2= BAUD_RATE_TSEG2;  
    51.     sMSCANConfig.u32IDAR0 = (CAN_IDAR0);
    52.     sMSCANConfig.u32IDAR1 = (CAN_IDAR1);  
    53.     sMSCANConfig.u32IDMR0 = (CAN_IDMR0);  
    54.     sMSCANConfig.u32IDMR1 = (CAN_IDMR1);  
    55.     sMSCANConfig.u8IDARMode = ID_ACCEPT_MODE_TWO32;
    56.     sMSCANConfig.sSetting.bCanEn = 1;      
    57.     sMSCANConfig.sSetting.bCLKSRC = 1;  
    58.     //sMSCANConfig.sSetting.bLoopModeEn = 1;
    59.     sMSCANConfig.sSetting.bRxFullIEn=1;
    60.     sMSCANConfig.sSetting.bTimerEn=1;   
    61.     sMSCANConfig.sSetting.bOverRunIEn=1;
    62.     sMSCANConfig.sSetting.bStatusChangeIEn=1;
    63.     //sMSCANConfig.sSetting.bTxEmptyIEn=1;  
    64.     CAN_Init(MSCAN,&sMSCANConfig);

    65.     //Initialize the Tx information
    66.     sCANTxItemInfo.bIsExtOrStand = 1;  
    67.     sCANTxItemInfo.bIsRemoteFrame = 0;  
    68.     sCANTxItemInfo.ID_Type.ID = NODE_ID1;
    69.     sCANTxItemInfo.u32DataLength = 24;
    70.     for(i=0;i<24;i++)
    71.     {
    72.             sCANTxItemInfo.u8DataBuff[i] = i;
    73.     }
    74.     sCANTxItemInfo.u8BPR = 0x80;

    75.     CAN_SendItemToBuffer(MSCAN,&sCANTxItemInfo,&sCAN_TxBuff);
    76.    
    77.     while(1)
    78.     {
    79.                 /* set channel to start a new conversion */
    80.                 u8ADC_ConversionFlag = 0;
    81.                 ADC_SetChannel(ADC,ADC_CHANNEL_AD4);
    82.                 /* wait conversion complete */
    83.                 while(!u8ADC_ConversionFlag);

    84.         CAN_CheckSendBufferFrame(MSCAN,&sCAN_TxBuff);
    85.         while(CAN_ReadOneFramefromBufferQueue(&sRxFrameInfo))
    86.         {
    87.                         //printf("receive a frame data!\r\n");
    88.                         //printf("ID is 0x%x!\r\n",sRxFrameInfo.ID_Type);
    89.                         //printf("Data length is %d\r\n",sRxFrameInfo.DLR);
    90.                         for(i=0;i<sRxFrameInfo.DLR;i++)
    91.                         {
    92.                                 //printf("0x%x,",sRxFrameInfo.DSR[i]);
    93.                         }
    94.                         //printf("\r\n");
    95.         }
    96.         
    97.         for(u32Delay=0;u32Delay<0xFFFFF;u32Delay++);
    98.         sCANTxItemInfo.u8DataBuff[7]++;
    99.         CAN_SendItemToBuffer(MSCAN,&sCANTxItemInfo,&sCAN_TxBuff);
    100.     }
    101. }
    复制代码



    我知道答案 目前已有2人回答
    开心
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2018-3-28 09:34:48 | 显示全部楼层
    用逻辑分析仪或者CAN 分析仪分析一下波形,确认传输的数据是否是期望的
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
     楼主| 发表于 2018-3-28 15:10:55 | 显示全部楼层
    调试已经可以收发数据,但是滤波ID不对,接受ID为0x1400A3A1和0x1400A3A2,如何配置
    开心
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 20:39 , Processed in 0.092422 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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