Skip to content

CAN FIlter Configuration #55

@andreapefe

Description

@andreapefe

Hello,

I have written some code to try and modify the fdcan0 filters without success.
My code to configure the can is as follows :

let can1 = {

       let rx = gpioa.pa11.into_alternate().set_speed(Speed::VeryHigh);
       let tx = gpioa.pa12.into_alternate().set_speed(Speed::VeryHigh);

       let can = FdCan::new(dp.FDCAN1, tx, rx, &rcc);

       let mut can = can.into_config_mode();
       can.set_protocol_exception_handling(false);

       can.set_nominal_bit_timing(btr);

       //Create new Standard Filter
       let filtre = StandardFilter {
           filter: FilterType::BitMask {
               filter: 0x004,
               mask: 0x7FF
           },
           action: Action::StoreInFifo0,
       };

       can.set_standard_filter(
           StandardFilterSlot::_0,
           filtre,
       );

       //Set fdcan to reject all frames that do not match the filter
       can.set_global_filter(GlobalFilter::reject_all());

       hprintln!("-- Current Config: {:#?}", can.get_config());

       can.into_normal()
   };

The code builds without issues or warnings but when I try to print the messages received by the can using the can-echo.rs example I receive everything. The messages I am supposed to get and those that I don't. Also the receiver header does not have the right ID. Sending messages using a Raspberry Pi with different ID, the STM always sends back an ID equal to 0.
Furthermore, using GDB I have looked at the register configuration values at the address 0x4000A480 where the FDCAN_RXGFC (Global FIlter COnfiguration) register is located and the register has the reset value. No configuration has been applied.

Am I doing something wrong ? I some kind of configuration wrong ? I am using a testbench where I used to test the bus CAN using STM32F103 without any problems so it is not a hardware problem. The logic analyzer also reads the correct Standard ID so the problem is also not on the message sent by the Raspberry Pi.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions