Skip to main content
l90mehdi
Associate III
August 30, 2016
Question

RECIVE MESSAGE IN FIFO1 ON CAN BUS

  • August 30, 2016
  • 11 replies
  • 2397 views
Posted on August 30, 2016 at 16:45

hi evry one

i working on CAN protocol with stm32f103rbt6.it working so good.

now problem is here: when i reading mailboxs of FIFO0 ،all think is ok but i can not receive the message from FIFO1.

please tell me how to do this

thank you

    This topic has been closed for replies.

    11 replies

    Walid FTITI_O
    Visitor II
    August 31, 2016
    Posted on August 31, 2016 at 14:09

    Hi khastar.mehdi,

    To make thing more clear , are you using both FIFO0 and FIFO1 ? are you configuring filters ?

    -Hannibal-

    l90mehdi
    l90mehdiAuthor
    Associate III
    August 31, 2016
    Posted on August 31, 2016 at 14:50

    Hi Hannibal 

    yes. I configure my filter for FIFO1.But i can not Receive any thing.

    sFilterConfig.FilterNumber = 2;

    sFilterConfig.FilterMode = CAN_FILTERMODE_IDLIST;

    sFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;

    sFilterConfig.FilterIdHigh = 0xFEEF;       

    sFilterConfig.FilterIdLow = 0xF7E0;            

    sFilterConfig.FilterMaskIdHigh = 0x3DF8;

    sFilterConfig.FilterMaskIdLow = 0xFFF8;

    sFilterConfig.FilterFIFOAssignment = 1;

    sFilterConfig.FilterActivation = ENABLE; 

    and i use this code for receive message in interrupt mode

    HAL_CAN_Receive_IT(&hcan,1);

    but i do not receive any interrupt event in this mode

    so 

    please tell me what do i do????

    thank you 

    Tesla DeLorean
    Guru
    August 31, 2016
    Posted on August 31, 2016 at 18:19

    What messages exactly are you trying to receive? Please try to provide some context.

    The filter looks badly created, it will filter a subset of messages with these IDs and RTR/IDE/EXID bits

    FEEF : 7F7

    F7E0 : 7BF

    3DF8 : 1EF

    FFF8 : 7FF

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    l90mehdi
    l90mehdiAuthor
    Associate III
    August 31, 2016
    Posted on August 31, 2016 at 21:42

    hi clive1.thank you for your feedback.

    yes .my filter receive the messages with  : 0x7F7 - 0x7BF- 0x1EF- 0x7FF  IDs

    all messages receive by FIFO0 without problem.

    but i can not receive any message in FIFO1.

    in user manual :

    Receive FIFO

    Two receive FIFOs are used by hardware to store the incoming messages. Three complete

    messages can be stored in each FIFO.

    The FIFOs are managed completely by hardware

    .

    so how can receive message in FIFO1???????

    thank you

    Tesla DeLorean
    Guru
    August 31, 2016
    Posted on August 31, 2016 at 23:09

    I'm not using F1 with HAL, so not going to be able to provide you with much assistance as it relates to functionality there.

    Do you fully initialize the filter structure? BankNumber?

    Do you get an error reported by HAL when configuring the filter?

    Do you enable the right IRQ?

    Try using the 16 or 32-bit ID's where you just mask the message bits, rather than use the list format.

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    l90mehdi
    l90mehdiAuthor
    Associate III
    September 1, 2016
    Posted on September 01, 2016 at 10:23

    yes.i fully initialize the filters and it works good.

    no.i do not get any error. 

    i can receive messages in interrupt mode from FIFO0.

    so IRQ settings is true.

    i do not where is problem??

    can you receive message from FIFO1????

    if yes how do you do it??

    thank you

    jpeacock23
    Associate
    September 1, 2016
    Posted on September 01, 2016 at 14:37

    Your code shows filter 2.  What are the settings for other filters.  It may be your message matches a higher priority filter first, sending it to the wrong FIFO.  Does your message arrive on FIFO0?

    Are you sure the message being sent has the right ID?

      Jack Peacock

    l90mehdi
    l90mehdiAuthor
    Associate III
    September 1, 2016
    Posted on September 01, 2016 at 15:56

    hi peacock.

    yes i receive message in FIFO0.

    with this filter configuration . when i use ''HAL_CAN_Receive_IT(&hcan,0)'' i receive message from FIFO0 but when i use ''HAL_CAN_Receive_IT(&hcan,1)'' i can not receive any message.

    in filter configuration، change the fifo number and filter bank number has no effect.

    can you receive message from FIFO1?

    if yes please put your code and filter configuration.

    thank you

    Walid FTITI_O
    Visitor II
    September 1, 2016
    Posted on September 01, 2016 at 17:06

    Hi khastar.mehdi,

    It is related to a recent reported bug in Receive function about FiFONumber. It is under fix phase. Meanwhile , add the following line into can_Receive_IT() function before FMI line :

    hcan->pRxMsg->FIFONumber = FIFONumber;

    Check threads related to this topic:

    [DEAD LINK /public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Configure%20CAN%20to%20receive%20in%20both%20FIFOs&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=53]thread1[DEAD LINK /public/STe2ecommunities/mcu/Lists/STM32Java/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/STM32Java/%5bSTM32F2%5d%20issue%20with%20CAN-HAL%20interrupt%20receivng&FolderCTID=0x01200200770978C69A1141439FE559EB459D758000F9A0E3A95BA69146A17C2E80209ADC21&currentviews=18]thread2

    -Hannibal-
    l90mehdi
    l90mehdiAuthor
    Associate III
    September 1, 2016
    Posted on September 01, 2016 at 22:48

    Hi Hannibal.

    ok. I wil test your solution.

    thank you for your feedback.