[8/16-bit MCU] 求助,9S12DT256,能同时用3个CAN口吗?(已解决)

[复制链接]
2385|9
 楼主| wangcuixm 发表于 2014-6-24 21:15 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_A 于 2014-7-2 16:24 编辑

求助,9S12DT256,能同时用3个CAN口吗?
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脚上没信号吗?
 楼主| wangcuixm 发表于 2014-6-25 15:52 | 显示全部楼层
是的,通过仿真器调试发现程序停在CAN1等待与总线同步的语句:while(!(CAN1CTL0&0x10)); 就没往下执行了
CAN0和CAN4与总线同步没问题
 楼主| 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, 下载次数: 11

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引脚无法输出高电平呢?
CAN1.jpg
FSL_TICS_Robin 发表于 2014-6-26 11:41 | 显示全部楼层
wangcuixm 发表于 2014-6-25 15:57
FSL_TICS_Robin,你好!附件是程序源码。
.................................................
     CAN0In ...

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

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

 楼主| wangcuixm 发表于 2014-6-26 15:54 | 显示全部楼层
谢谢,你的意思是不是说SPI和CAN1复用了,我应当先指定为CAN1?
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

粉丝
快速回复 在线客服 返回列表 返回顶部