打印
[8/16-bit MCU]

求助,9S12DT256,能同时用3个CAN口吗?(已解决)

[复制链接]
2059|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
FSL_TICS_Robin| | 2014-6-25 09:08 | 只看该作者
楼主你好
通常芯片的几个CAN模块之间是相互独立的,可以同时使用。
一般双CAN的芯片就是相互独立,双冗余CAN总线就需要这么应用。

使用特权

评论回复
板凳
wangcuixm|  楼主 | 2014-6-25 11:48 | 只看该作者
你好,MC9SDT256手册上说有3路CAN: CAN0,CNA1,CAN4
我现在CAN0,CAN4能正常工作。
但CAN1驱动不了,它的使用和其他两个有什么特别的地方吗?

使用特权

评论回复
地板
FSL_TICS_Robin| | 2014-6-25 13:22 | 只看该作者
wangcuixm 发表于 2014-6-25 11:48
你好,MC9SDT256手册上说有3路CAN: CAN0,CNA1,CAN4
我现在CAN0,CAN4能正常工作。
但CAN1驱动不了,它的 ...

从手册上没看出CAN1较CAN0\CAN4有什么特别的地方,你的CAN1在PM2\PM3脚上没信号吗?

使用特权

评论回复
5
wangcuixm|  楼主 | 2014-6-25 15:52 | 只看该作者
是的,通过仿真器调试发现程序停在CAN1等待与总线同步的语句:while(!(CAN1CTL0&0x10)); 就没往下执行了
CAN0和CAN4与总线同步没问题

使用特权

评论回复
6
wangcuixm|  楼主 | 2014-6-25 15:57 | 只看该作者
FSL_TICS_Robin,你好!附件是程序源码。
.................................................
     CAN0Init();    //(2) MSCAN12模块初始化
    CAN4Init();    //(2) MSCAN12模块初始化
    CAN1Init();    //(2) MSCAN12模块初始化
    while(!(CAN0CTL0&0x10));
    while(!(CAN4CTL0&0x10));  //等待与总线同步
    while(!(CAN1CTL0&0x10));  //程序会停在这里,一直循环,跳不出来。
..............................................
   如果不用CAN1,CAN0和CAN4都正常

demo.rar

287.12 KB

使用特权

评论回复
7
FSL_TICS_Robin| | 2014-6-26 11:37 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-25 13:22
从手册上没看出CAN1较CAN0\CAN4有什么特别的地方,你的CAN1在PM2\PM3脚上没信号吗? ...

我从手册S12DT256PIMV3上看到CAN1的引脚PTM2\3与SPI信号引脚重复,是否是因为SPI引脚开漏设置导致的CAN引脚无法输出高电平呢?

使用特权

评论回复
8
FSL_TICS_Robin| | 2014-6-26 11:41 | 只看该作者
wangcuixm 发表于 2014-6-25 15:57
FSL_TICS_Robin,你好!附件是程序源码。
.................................................
     CAN0In ...

由于论坛暂时没有16bit芯片技术支持工程师而我只熟悉Kinetis芯片,所以只能根据手册来帮你找问题原因。

如果无法帮助到你,建议将此问题按照帖子   飞思卡尔申请样片与购买的论坛VIP通道开通了,小伙伴速来!   提交一个服务请求:
如果你尚未注册飞思卡尔官网账号,请先点击注册按钮:右侧图标完成注册。
如果你已有飞思卡尔官网账号,可以点击申请SR按钮:右侧图标提交一个服务请求。
最好使用英文详细描述一下遇到的问题,以便国外工程师都能够帮助到你。

使用特权

评论回复
9
wangcuixm|  楼主 | 2014-6-26 15:54 | 只看该作者
谢谢,你的意思是不是说SPI和CAN1复用了,我应当先指定为CAN1?

使用特权

评论回复
10
FSL_TICS_Robin| | 2014-6-27 15:54 | 只看该作者
wangcuixm 发表于 2014-6-26 15:54
谢谢,你的意思是不是说SPI和CAN1复用了,我应当先指定为CAN1?

我对该芯片不熟,有些芯片开漏功能会影响整个引脚上其他功能。
另外Kinetis芯片如果一个引脚上复用了多个功能,有相关寄存器可以选择该引脚到底使能哪个功能。
所以你可以往这方向查查是否是类似问题。

比如你把CAN0的收发引脚使能到PTM2、3引脚上,软件只使能CAN0如果也无**常收发就可以是这两引脚的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝