tomj7 Poziom 17

Joined: 25 Jan 2003 Posts: 391 Location: Kraków
|
#1
05 Mar 2010 22:58 [stm32] CAN i filtrowanie |
|
|
|
Właśnie uruchamiam magistrale CAN w STM32. Testuje transmisje w trybie loopback. Filtr musi być aktywny, aby można było odebrać ramkę CAN. Mam taki przykład do ustawiania jednego id.
Pytanie mam jak ustawić filtr, aby można było odbierać wszystkie id, czyli aby filtr przpuszczał wszystkie id standardowe CAN, albo ustawić wybrany zakres id.
Dokumentacja lakonicznie wpomina o maskach, ale nie mogę tego zatrybić.
| Code: |
CAN_msgId |= (unsigned int)(id << 21) | CAN_ID_STD;
AN->FMR |= CAN_FMR_FINIT; // set Initialisation mode for filter banks
CAN->FA1R &= ~(unsigned int)(1 << CAN_filterIdx); // deactivate filter
// initialize filter
CAN->FS1R |= (unsigned int)(1 << CAN_filterIdx);// set 32-bit scale configuration
CAN->FM1R |= (unsigned int)(1 << CAN_filterIdx);// set 2 32-bit identifier list mode
CAN->F0R1 = CAN_msgId; // 32-bit identifier
CAN->F0R2 = CAN_msgId; // 32-bit identifier
CAN->FFA1R &= ~(unsigned int)(1 << CAN_filterIdx); // assign filter to FIFO 0
CAN->FA1R |= (unsigned int)(1 << CAN_filterIdx); // activate filter
CAN->FMR &= ~CAN_FMR_FINIT; // reset Initialisation mode for filter banks
|
|
|