Become a leader in the IoT community!

Join our community of embedded and IoT practitioners to contribute experience, learn new skills and collaborate with other developers with complementary skillsets.

Step 1 of 5

CREATE YOUR PROFILE *Required

OR
Step 2 of 5

WHAT BRINGS YOU TO DEVHEADS? *Choose 1 or more

Connect & collaborate 🀝with other tech professionals
Learn & Grow πŸ“š
Contribute Experience & Expertise πŸ”§
Step 3 of 5

WHAT'S YOUR INTEREST OR EXPERTISE? *Choose 1 or more

Hardware Design πŸ’‘
Embedded Software πŸ’»
Edge Networking ⚑
Step 4 of 5

Personalize your profile

Step 5 of 5

Read & agree to our COMMUNITY RULES

  1. We want this server to be a welcoming space! Treat everyone with respect. Absolutely no harassment, witch hunting, sexism, racism, or hate speech will be tolerated.
  2. If you see something against the rules or something that makes you feel unsafe, let staff know by messaging @admin in the "support-tickets" tab in the Live DevChat menu.
  3. No age-restricted, obscene or NSFW content. This includes text, images, or links featuring nudity, sex, hard violence, or other graphically disturbing content.
  4. No spam. This includes DMing fellow members.
  5. You must be over the age of 18 years old to participate in our community.
  6. You agree to our Terms of Service (https://www.devheads.io/terms-of-service/) and Privacy Policy (https://www.devheads.io/privacy-policy)
By clicking "Finish", you have read and agreed to the our Terms of Service and Privacy Policy.

Trouble with CAN Loopback on STM32F407VGT6

Hello I had a problem with CAN loopback mode using STM32F407VGT6 Can Anyone help me ?

  1. umeshlokhande#0000

    Hey @haythembrigadie you seem to be trying to use STM32F4 without CAN transceiver in loopback mode. Are you sure ACK signal is generated by the implemented CAN controller in STM32?

  2. haythembrigadie#0000

    Hi, let me clarify more my situation … I am coding this from scratch i am using a CAN transciever…My problem is that the CAN_Start function always returns an Error and while debugging i noticed that my code is stuck in the CAN initialisation what i see is that the BIT INAK in the MSR register stayd always 1 when it should switch to 0…probably i have a problem in the config …This is my config code :

    void can_gpio_init(void) {
    /*1 Enable Clock Access to GPIOB*/
    RCC->AHB1ENR |= GPIODEN;
    /*2 Set PD0 and PD1 to alternate function mode*/
    GPIOD->MODER &=~(1U<<0); GPIOD->MODER |=(1U<<1); GPIOD->MODER &=~(1U<<2); GPIOD->MODER |=(1U<<3); GPIOD->PUPDR |=(1U<<0); GPIOD->PUPDR &=~(1U<<1); GPIOD->PUPDR |=(1U<<2); GPIOD->PUPDR &=~(1U<<3); GPIOD->OTYPER &=~(1U<<0); GPIOD->OTYPER &=~(1U<<1); /*3 SET PD0 and PD1 alternate function to CAN1 RX and TX*/ GPIOD->AFR[0] = (CAN_AF<<0); GPIOD->AFR[0]= (CAN_AF<<4); /*4 Enable CAN RX0 Interrupt for message reception*/ NVIC_EnableIRQ(CAN1_RX0_IRQn); } void can_parms_init(uint8_t mode){ /*1 Enable Clock Access to CAN1*/ RCC->APB1ENR |= RCC_APB1ENR_CAN1EN;
    /*2 Enter Initialization mode*/
    CAN1->MCR |= CAN_MCR_INRQ;
    /*3 Wait until CAN1 is in Initialization mode*/
    while ((CAN1->MSR & CAN_MSR_INAK)==0) {}
    /*4 Exit Sleep Mode*/
    CAN1->MCR &=~ CAN_MCR_SLEEP;
    /*5 Wait until CAN1 is OUT of Sleep Mode*/
    while ((CAN1->MSR & CAN_MSR_SLAK)) {}
    /*5 Configure timing parameters including baudrate by configuring time segment 1 and 2 and prescaler*/
    CAN1->BTR = (11<< CAN_BTR_TS1_Pos) | (2 << CAN_BTR_TS2_Pos) | (5 << CAN_BTR_BRP_Pos); /*6 Select Mode*/ if (mode) { /*Normal Mode*/ CAN1->BTR &=~(1<<30); } else { //loopBack mode CAN1->BTR |=(1<<30); } }

  3. undefined2001#0000

    configuration sequence seems a bit wrong

  4. undefined2001#0000

    there are the basic steps to configure
    1. Leave sleep mode
    2. Enter Initialization Mode
    3. Configure BaudRAte
    4. Configure other things as you need
    5. Exit from Initialization mode

CONTRIBUTE TO THIS THREAD

Browse other questions tagged 

Leaderboard

RANKED BY XP

All time
  • 1.
    Avatar
    @Nayel115
    1620 XP
  • 2.
    Avatar
    @UcGee
    650 XP
  • 3.
    Avatar
    @melta101
    600 XP
  • 4.
    Avatar
    @chitour
    600 XP
  • 5.
    Avatar
    @lifegochi
    250 XP
  • 6.
    Avatar
    @Youuce
    180 XP