查看: 3037|回复: 3

[S12] S9S12G48 CAN 同步问题(已解决)

[复制链接]

该用户从未签到

1

主题

7

帖子

0

新手上路

Rank: 1

积分
4
最后登录
1970-1-1
发表于 2014-3-19 22:44:06 | 显示全部楼层 |阅读模式
我遇到的问题,CAN发送后,缓存区一直满 (CANTFLG = 0),调试过程中发现。发现寄存器CANCTL0在0 和16间跳动。就是CAN总线同步状态不稳定。CAN模块采用PE生成的代码。CW5.1编译。
CAN代码如下,请教,程序哪个方面配置错了??
初始化代码如下:
void CAN1_Init(void)
{
  /* CANCTL1: CANE=1,CLKSRC=0,LOOPB=0,LISTEN=0,BORM=0,WUPM=0,SLPAK=0,INITAK=0 */
  CANCTL1 = 0x80U;                     /* Set the control register */
  /* CANCTL0: RXFRM=0,RXACT=0,CSWAI=0,SYNCH=0,TIME=0,WUPE=0,SLPRQ=0,INITRQ=1 */
  CANCTL0 = 0x01U;                     /* Set the control register */
  CANIDAC_IDAM = 0x01U;                /* Set the acceptance mode */
  CANIDAR0 = 0x00U;                    /* Set the acceptance code, register CANIDAR0 */
  CANIDAR1 = 0x00U;                    /* Set the acceptance code, register CANIDAR1 */
  CANIDAR2 = 0x00U;                    /* Set the acceptance code, register CANIDAR2 */
  CANIDAR3 = 0x00U;                    /* Set the acceptance code, register CANIDAR3 */
  CANIDAR4 = 0x00U;                    /* Set the acceptance code, register CANIDAR4 */
  CANIDAR5 = 0x00U;                    /* Set the acceptance code, register CANIDAR5 */
  CANIDAR6 = 0x00U;                    /* Set the acceptance code, register CANIDAR6 */
  CANIDAR7 = 0x00U;                    /* Set the acceptance code, register CANIDAR7 */
  CANIDMR0 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR0 */
  CANIDMR1 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR1 */
  CANIDMR2 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR2 */
  CANIDMR3 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR3 */
  CANIDMR4 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR4 */
  CANIDMR5 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR5 */
  CANIDMR6 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR6 */
  CANIDMR7 = 0xFFU;                    /* Set the acceptance mask, register CANIDMR7 */
  /* CANBTR0: SJW1=1,SJW0=1,BRP5=0,BRP4=0,BRP3=0,BRP2=0,BRP1=0,BRP0=0 */
  CANBTR0 = 0xC0U;                     /* Set the device timing register */
  /* CANBTR1: SAMP=1,TSEG22=1,TSEG21=1,TSEG20=1,TSEG13=0,TSEG12=1,TSEG11=1,TSEG10=0 */
  CANBTR1 = 0xF6U;                     /* Set the device timing register */
  CANCTL1_CLKSRC = 0x01U;              /* Select the clock source from bus clock */
  CANCTL0_INITRQ = 0x00U;              /* Start device */
  while(CANCTL1_INITAK) {}             /* Wait for enable */
}
我知道答案 目前已有2人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-3-20 09:18:11 | 显示全部楼层

    RE:S9S12G48 CAN 同步问题

    楼主,是否连接了CAN接收器来接收数据?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    4
    最后登录
    1970-1-1
     楼主| 发表于 2014-3-20 18:07:57 | 显示全部楼层

    回复:S9S12G48 CAN 同步问题

    CAN收发器已经连接了,TJA1040.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-3-21 10:27:57 | 显示全部楼层

    RE:S9S12G48 CAN 同步问题

    你好,关于16位的问题,建议您到官网建一个技术服务请求。
    那里会有我们相关的专家帮您解答。
    建服务请求的链接:[url=https://www.freescale.co
    m/zh-Hans/webapp/servicerequest.create_SR.framework]https://www.freescale.co
    m/zh-Hans/webapp/servicerequest.create_SR.framework[/url]
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 03:32 , Processed in 0.095707 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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