查看: 2652|回复: 3

[S12] S12ZVH 的 CAN 发送失败,可接受/自发自收

[复制链接]

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2016-8-15
发表于 2016-8-11 12:44:14 | 显示全部楼层 |阅读模式
本帖最后由 leoyang2007 于 2016-8-15 16:11 编辑

更新1:
通过设置 MODRR0 为 低四位为 0100 ,将 MSCAN 和 CANPHY 之间链接暴露到 PC1(TXCAN-->CPTXD) 和 PC2(CPRXD --> RXCAN) 端口,通过示波器观察如下:
1.电脑发送到 开发板,PC2 可以看到数据,PC1 可以看到“应答”,正常
2.开发板发送到电脑,PC1 和 PC2 都可以看到数据,看不到来自 电脑的应答,所以开发板一直在重发,但 RXCAN 也会看到 TXCAN 端的数据吗?
--------------------------
公司的新项目,用的 S12ZVH128,目前用的官方的 TRK-S12ZVH128 的开发板进行测试和评估,已经完成其他部件的测试了。在做 CAN 部分的测试,已经卡在这里4天了,求助大家

背景:
开发环境用的 CW 10.6.4, PE 10.6.0
采用 PE 生成的底层驱动,采用的 MSCAN + CANPHY

PC端用 CAN分析仪进行收发
现象:
1.loop 模式可以正常工作
2.PC端发送数据,开发板可以进入中断,可以接受数据;
3.向PC端发送失败
用示波器查看波形貌似也是正常,位宽度4us(250kbps),波特率正常
中断进入查看与发送相关的寄存器
a. RFIG = 0x08, TSTAT=10,反应错误计数大于128
b.TFLG=0X06,反应 tx buffer 0 一直是 full,也就是一种没有发送成功
从示波器上看也是一直在重发

在以下中断中查询错误代码:
void CAN1_OnError(void)
{
  /* Write your code here ... */
        CAN1_TError error;
        CAN1_GetError(&error);
}

反应为 TxWarning = 1,这个是什么情况?
c. CANPHY 启动后,在 CPIF 中报告 CPCHVL 和 CPCLVL 状态改变过,清除该标记后不会再次进入;


个人怀疑可能的原因:
1.CANPHY 的 IO 没有配置正确,有网友提到 S12 系列 RXCAN 要配置上拉(用的外部  CANPHY ),但我用内部的 PHY 怎么配置,没找到啊?
2.是否进入了 “监听模式”(这个应该是要发生 高电压故障 吧?)或进入“伪正常模式”?

还请大家帮助!!!

附1:CAN 配置
**     Processor   : MC9S12ZVH128CLQ
**     Component   : FreescaleCAN
**     Version     : Component 02.366, Driver 01.31, CPU db: 3.00.000
**     Compiler    : CodeWarrior HCS12Z C Compiler
**     Date/Time   : 2016-08-10, 15:46, # CodeGen: 5
**     Abstract    :
**         This component "FreescaleCAN" implements a CAN serial channel.
**     Settings    :
**         CAN channel                                     : MSCAN0
**
**           Interrupt service/event                       : Enabled
**             Output interrupt
**               Vector name                               : Vcan0tx
**               Priority                                  : 4
**             Input interrupt
**               Vector name                               : Vcan0rx
**               Priority                                  : 4
**             Error interrupt
**               Vector name                               : Vcan0err
**               Priority                                  : 4
**             Wakeup interrupt
**               Vector name                               : Vcan0wkup
**               Priority                                  : 4
**
**          Settings                                       :
**                Rx pin                                   : CANPHY0_RXD_to_MSCAN0_RXD
**                Rx pin signal                            :
**                Tx pin                                   : CANPHY0_TXD_to_MSCAN0_TXD
**                Tx pin Signal                            :
**
**
**            Recieve accept. code                         : 0x00
**            Recieve accept. mask                         : 0xFFFFFFFF
**            Loop Mode                                    : no
**            Bus-Off Recovery                             : Auto
**            Listen Only Mode                             : no
**            Wakeup                                       : Disabled
**
**         Protocol
**             Time segment 1                              : 7
**             Time segment 2                              : 3
**             RSJ                                         : 1
**             Samples per bit                             : One sample
**             Time quanta per bit                         : 13
**             Init baud rate                              : 100 kbit/s
**
**         Initialization
**             Enabled in init. code                       : yes
**             Events enabled in init.                     : yes
**
**         CPU clock/speed selection
**             High speed mode                             : This component enabled
**             Low speed mode                              : This component disabled
**             Slow speed mode                             : This component disabled
**
**     Contents    :
**         SetAcceptanceCode - byte CAN1_SetAcceptanceCode(dword AccCode1, dword AccCode2);
**         SetAcceptanceMask - byte CAN1_SetAcceptanceMask(dword AccMask1, dword AccMask2);
**         SetAcceptanceMode - byte CAN1_SetAcceptanceMode(byte Mode);
**         SendFrame         - byte CAN1_SendFrame(byte BufferNum, dword MessageID, byte FrameType, byte...
**         ReadFrame         - byte CAN1_ReadFrame(dword *MessageID, byte *FrameType, byte *FrameFormat,...
**         GetStateTX        - byte CAN1_GetStateTX(void);
**         GetStateRX        - bool CAN1_GetStateRX(void);
**         GetError          - byte CAN1_GetError(CAN1_TError *Err);
**


附2:CANPHY 配置
**     Processor   : MC9S12ZVH128CLQ
**     Component   : Init_CANPHY
**     Version     : Component 01.000, Driver 01.00, CPU db: 3.00.000
**     Compiler    : CodeWarrior HCS12Z C Compiler
**     Date/Time   : 2016-08-11, 10:36, # CodeGen: 15
**     Abstract    :
**          This file implements the CANPHY (CANPHY0) module initialization
**          according to the Peripheral Initialization settings, and
**          defines interrupt service routines prototypes.
**     Settings    :
**          Component name                                 : CANPHY0
**          Device                                         : CANPHY0
**          Settings                                       :
**            Split enable                                 : Enabled
**            Wakeup receiver                              : Enabled
**            Physical layer slew rate                     : Slew rate 0
**          Pins/Signals                                   :
**            Supply pin                                   :
**              Pin                                        : VDDC
**              Pin signal                                 :
**            Ground pin                                   :
**              Pin                                        : VSSC
**              Pin signal                                 :
**            CAN bus high pin                             :
**              Pin                                        : CANH0
**              Pin signal                                 :
**            CAN bus low pin                              :
**              Pin                                        : CANL0
**              Pin signal                                 :
**            Termination pin                              :
**              Pin                                        : SPLIT0
**              Pin signal                                 :
**            Tx input                                     : Enabled
**              Pin                                        : CANPHY0_TXD_to_MSCAN0_TXD
**              Pin signal                                 :
**            Rx output                                    :
**              Output 0                                   : Enabled
**                Pin                                      : CANPHY0_RXD_to_MSCAN0_RXD
**                Pin signal                               :
**              Output 1                                   : Disabled
**          Interrupts                                     :
**            CANPHY interrupt                             :
**              Interrupt                                  : Vcanphy0
**              Interrupt priority                         : 1
**              ISR Name                                   : CANPHY0_onError
**              Voltage failure Interrupt                  : Enabled
**              Physical layer error Interrupt             : Enabled
**          Initialization                                 :
**            Physical layer                               : Enabled
**            SW control value                             : 1
**            Call Init method                             : yes
**     Contents    :
**         Init - void CANPHY0_Init(void);

我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2016-8-15
 楼主| 发表于 2016-8-11 14:34:24 | 显示全部楼层
自己顶一下,呼唤大神啊!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2016-8-15
 楼主| 发表于 2016-8-12 08:18:07 | 显示全部楼层

消灭0回复
继续尝试发送..
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2016-8-15
 楼主| 发表于 2016-8-15 16:10:46 | 显示全部楼层
结贴:波特率设置差一点,TS1 和 TS2 从默认的 7/3 改为 5/2,就没有误差了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-24 19:58 , Processed in 0.126726 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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