主题:EM9260 CAN通讯错误代码含义?

  共有18853人关注过本帖    
STUDENT
1楼


EM9260 CAN通讯错误代码含义?  发帖心情 Post By:2011-4-6 14:46:00   [只看该作者]

在贵公司提供的CANTEST示例程序中,EM9260_CAN.cpp中有如下代码

//CAN错误监测函数
DWORD CEM9260_CAN::GetErrorThreadFunc( LPVOID lparam )
{
CEM9260_CAN *ceCAN = (CEM9260_CAN*)lparam;

BOOL  bResult;

while( 1 )
{

if( WaitForSingleObject( ceCAN->m_hErrorCloseEvent, 0 )==WAIT_OBJECT_0 )
{
break;
}

WaitForSingleObject( ceCAN->m_hErrEvent, INFINITE );


bResult = CAN_GetError( ceCAN->m_hCAN, &ceCAN->ErrorCode );
printf( "%d\r\n", ceCAN->ErrorCode );

if( bResult )
{
// 调用回调函数
ceCAN->OnError( );
}
}

return 0;
}

我在调试过程中发现该段程序输出错误代码,分别是1,2,3。请问这3个错误代码有什么含义?通讯的什么错误会导致这三种错误的产生?谢谢了!

  单帖管理 | 引用 | 回复 回到顶部
x10
2楼


  发帖心情 Post By:2011-4-6 21:40:00   [只看该作者]

目前定义了bit0 - bit6如下:
#define CANCONTROLLER_WARNING_LIMIT_REACHED (1<<0) // 1
#define CANCONTROLLER_ERROR_PASSIVE (1<<1) // 2
#define CANCONTROLLER_BUS_OFF (1<<2) // 4
#define CANCONTROLLER_OVERRUN (1<<3) // 8
#define CANCONTROLLER_BUS_ERROR (1<<4) // 16
#define CANCONTROLLER_ABITRATION_LOST (1<<5) // 32
#define RING_BUFFER_FULL (1<<6) // 64

  单帖管理 | 引用 | 回复 回到顶部
STUDENT
3楼


  发帖心情 Post By:2011-4-12 10:24:00   [只看该作者]

谢谢!最近调试后发现,一旦用CAN发送数据,程序就接连输出错误代码1,2。那错误类型就应该是CANCONTROLLER_ERROR_PASSIVE和CANCONTROLLER_BUS_OFF。请问什么原因会导致这两种错误?

  单帖管理 | 引用 | 回复 回到顶部
zhl
4楼


  发帖心情 Post By:2011-4-12 17:26:00   [只看该作者]

这表明是SJA1000芯片发生了错误,并产生相应的passive 和bus-off中断错误。一般来说数据发送错误过多,就会导致节点的总线关闭bus off。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

EM9260 CAN通讯错误代码含义?

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: