title: CAN BUS Acknowledgment error
body: <p>I am using STM32F429 CAN bus Program with TJA1041A as CAN 
  Transreciver.The Problem is the messages are not getting acknowledged and herewith I 
  am attaching the code for further reference.I am using PCAN View to see 
  the messages.I kindly request to check the code and tell me if there are any faults.</p>
  
  <p>Code:-</p>
  
  <pre><code>int main(void)
  {
  
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
  
  // SystemInit();
  
      GPIO_InitTypeDef GPIO_InitDef;
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
      GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
      GPIO_InitDef.GPIO_Mode = GPIO_Mode_AF;
      GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
      GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_UP;
      GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
     GPIO_Init(GPIOB, &amp;GPIO_InitDef);
  
  /* Connect CAN pins to AF */
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_CAN2); // CAN2_RX
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_CAN2); // CAN2_TX
  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  
     GPIO_InitDef.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
      GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
      GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
      GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
  
    /* Connect PD5 and PD7 pins  for CAN Transreceiver to enable and 
  stanby */
  
   GPIO_Init(GPIOD, &amp;GPIO_InitDef);
       GPIO_SetBits(GPIOD, GPIO_Pin_5|GPIO_Pin_7);
  
     RCC_ClocksTypeDef     RCC_Clocks;
    CAN_InitTypeDef       CAN_InitStructure;
    CAN_FilterInitTypeDef CAN_FilterInitStructure;
  
    RCC_GetClocksFreq(&amp;RCC_Clocks);
  
    CAN_DeInit(CAN2);
  
    CAN_StructInit(&amp;CAN_InitStructure);
  
    /* CAN cell init */
    CAN_InitStructure.CAN_TTCM = DISABLE;
    CAN_InitStructure.CAN_ABOM = DISABLE;
    CAN_InitStructure.CAN_AWUM = DISABLE;
    CAN_InitStructure.CAN_NART = DISABLE;
    CAN_InitStructure.CAN_RFLM = DISABLE;
    CAN_InitStructure.CAN_TXFP = DISABLE;
    CAN_InitStructure.CAN_Mode = CAN_Mode_Normal ;
  
    /* quanta 1+14+6 = 21, 21 * 4 = 84, 42000000 / 84 = 5000000 */
    /* CAN Baudrate = 500Kbps (CAN clocked at 42 MHz) Prescale = 4 */
  
    /* Requires a clock with integer division into APB clock */
  
    CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; // 1+6+7 = 14, 1+14+6 = 21, 
  1+15+5 = 21
    CAN_InitStructure.CAN_BS1 = CAN_BS1_14tq;
    CAN_InitStructure.CAN_BS2 = CAN_BS2_6tq;
    CAN_InitStructure.CAN_Prescaler = 4; // quanta by baudrate - 125kbps
  
    CAN_Init(CAN2, &amp;CAN_InitStructure);
  
    /* CAN filter init */
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; // 
  IdMask or IdList
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_16bit; // 16 
  or 32
  
    CAN_FilterInitStructure.CAN_FilterIdHigh      = 0x0000; // Everything, 
  otherwise 11-bit in top bits
    CAN_FilterInitStructure.CAN_FilterIdLow       = 0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0x0000;
  
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0; // Rx
    CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
  
    //CAN_FilterInitStructure.CAN_FilterNumber = 0; // CAN1 [ 0..13]
  
  //  CAN_FilterInit(&amp;CAN_FilterInitStructure);
  
    CAN_FilterInitStructure.CAN_FilterNumber = 14; // CAN2 [14..27]
  
    CAN_FilterInit(&amp;CAN_FilterInitStructure);
    CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);
  
   CanTxMsg TxMessage;
  
    // transmit */
    TxMessage.StdId = 0x321;
    TxMessage.ExtId = 0x00;
    TxMessage.RTR = CAN_RTR_DATA;
    TxMessage.IDE = CAN_ID_STD;
    TxMessage.DLC = 8;
  
    TxMessage.Data[0] = 0x02;
    TxMessage.Data[1] = 0x11;
    TxMessage.Data[2] = 0x11;
    TxMessage.Data[3] = 0x11;
  
   while(1)
    {
      uint32_t i;
       int j = 0;
      uint8_t TransmitMailbox = 0;
  
    TxMessage.Data[4] = (j &gt;&gt;  0) &amp; 0xFF; // Cycling
     TxMessage.Data[5] = (j &gt;&gt;  8) &amp; 0xFF;
      TxMessage.Data[6] = (j &gt;&gt; 16) &amp; 0xFF;
      TxMessage.Data[7] = (j &gt;&gt; 24) &amp; 0xFF;
      j++;
  
      TransmitMailbox = CAN_Transmit(CAN2, &amp;TxMessage);
  
  i = 0;
      while((CAN_TransmitStatus(CAN2, TransmitMailbox) != CANTXOK) &amp;&amp; (i 
  != 0xFFFF)) // Wait on Transmit
      {
        i++;
        CAN2RX();// Pump RX
      }
  
    }
  
  }
  </code></pre>