打印
[8/16-bit MCU]

S12ZVH128 MSCAN 可自发自收,可以正常接接收,但不能发送

[复制链接]
1124|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leo_yang|  楼主 | 2016-8-11 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSCAN, TE, pi, TI, se
更新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.T**=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);

相关帖子

沙发
leo_yang|  楼主 | 2016-8-12 08:17 | 只看该作者
消灭0回复
继续尝试发送...

使用特权

评论回复
板凳
leo_yang|  楼主 | 2016-8-15 16:10 | 只看该作者
结贴:波特率设置差一点,TS1 和 TS2 从默认的 7/3 改为 5/2,就没有误差了

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝