主題:EM9260 CAN通訊錯(cuò)誤代碼含義? 共有20745人關(guān)注過本帖 |
---|
STUDENT |
1樓 |
EM9260 CAN通訊錯(cuò)誤代碼含義? Post By:2011-4-6 14:46:00 [只看該作者]
在貴公司提供的CANTEST示例程序中,EM9260_CAN.cpp中有如下代碼
//CAN錯(cuò)誤監(jiān)測函數(shù) 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 ) { // 調(diào)用回調(diào)函數(shù) ceCAN->OnError( ); } } return 0; } 我在調(diào)試過程中發(fā)現(xiàn)該段程序輸出錯(cuò)誤代碼,分別是1,2,3。請問這3個(gè)錯(cuò)誤代碼有什么含義?通訊的什么錯(cuò)誤會導(dǎo)致這三種錯(cuò)誤的產(chǎn)生?謝謝了! |
|
單帖管理 | 引用 | 回復(fù) |
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 |
|
單帖管理 | 引用 | 回復(fù) |
STUDENT |
3樓 |
Post By:2011-4-12 10:24:00 [只看該作者]
謝謝!最近調(diào)試后發(fā)現(xiàn),一旦用CAN發(fā)送數(shù)據(jù),程序就接連輸出錯(cuò)誤代碼1,2。那錯(cuò)誤類型就應(yīng)該是CANCONTROLLER_ERROR_PASSIVE和CANCONTROLLER_BUS_OFF。請問什么原因會導(dǎo)致這兩種錯(cuò)誤?
|
|
單帖管理 | 引用 | 回復(fù) |
zhl |
4樓 |
Post By:2011-4-12 17:26:00 [只看該作者]
這表明是SJA1000芯片發(fā)生了錯(cuò)誤,并產(chǎn)生相應(yīng)的passive 和bus-off中斷錯(cuò)誤。一般來說數(shù)據(jù)發(fā)送錯(cuò)誤過多,就會導(dǎo)致節(jié)點(diǎn)的總線關(guān)閉bus off。
|
|
單帖管理 | 引用 | 回復(fù) |