Hi
I am not very experienced with CANopen but have used the following CANopen configuration in the uTasker project
#define CANOPEN_RX_NODE_ID 0x7a
#define CANOPEN_TX_NODE_ID 0x37
static QUEUE_HANDLE fnInitCANopenInterface(void)
{
CANTABLE tCANParameters;
QUEUE_HANDLE CANopenHandle;
tCANParameters.Task_to_wake = OWN_TASK;
tCANParameters.Channel = 0;
tCANParameters.ulSpeed = 250000;
tCANParameters.ulTxID = (121);
tCANParameters.ulRxID = (CAN_EXTENDED_ID | 0x00080000 | CANOPEN_RX_NODE_ID);
tCANParameters.ulRxIDMask = (0x00080000 | CANOPEN_RX_NODE_ID);
tCANParameters.usMode = 0;
tCANParameters.ucTxBuffers = 2;
tCANParameters.ucRxBuffers = 1;
CANopenHandle = fnOpen(TYPE_CAN, FOR_I_O, &tCANParameters);
tCANParameters.ulRxID = 0;
tCANParameters.ulRxIDMask = CAN_STANDARD_MASK;
tCANParameters.ucTxBuffers = 0;
tCANParameters.ucRxBuffers = 1;
fnConfigCAN(CANopenHandle, &tCANParameters);
tCANParameters.ulRxID = CANOPEN_RX_NODE_ID;
tCANParameters.ulRxIDMask = 0x7f;
tCANParameters.ucRxBuffers = 1;
fnConfigCAN(CANopenHandle, &tCANParameters);
return CANopenHandle;
}
This is used to receive exact CANopen extended IDs and standard IDs on the rx node 0x7a (for example) - one filter for each - then one filter for the broadcast (ID 0).
Anything else is rejected.
Can you specify exactly which IDs you need to filter?
Regards
Mark
Complete Kinetis solutions for professional needs, training and support:http://www.utasker.com/kinetis.html
Kinetis KE1xF:
- http://www.utasker.com/kinetis/FRDM-KE15Z.html
- http://www.utasker.com/kinetis/TWR-KE18F.html
uTasker: supporting >1'000 registered Kinetis users get products faster and cheaper to market
Request Free emergency remote desk-top consulting at http://www.utasker.com/services.html