Interrupt on Receiving CAN FD S32k144

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Interrupt on Receiving CAN FD S32k144

ソリューションへジャンプ
947件の閲覧回数
12914A
Contributor III

Hi,
i would ask if there's any example for CAN FD Interrupt without SDK.

I've configured IMASK1, is there anything else I must do?

I tested it with canoe and send a CAN FD Message. But it says Tx Error (Bit Error and NAK Error)

 

Hope anyone can help

 

Sandra

0 件の賞賛
返信
1 解決策
921件の閲覧回数
Senlent
NXP TechSupport
NXP TechSupport

Hi@Sandra1

I made a demo base on "S32K144_Project_CanFd" which is provided in S32 DS For Arm V2.2.

1.set MB4 interrupt mask in FLEXCAN0_init()

CAN0->IMASK1 |= CAN_IMASK1_BUF31TO0M(1 << 4);/*Enable MB 4 interrupt mask*/

2.Set NVIC and install  CAN0 IRQ Handler

void NVIC_init_IRQs (void)
{
	  S32_NVIC->ICPR[2] = 1 << (CAN0_ORed_0_15_MB_IRQn % 32);
	  S32_NVIC->ISER[2] = 1 << (CAN0_ORed_0_15_MB_IRQn % 32);
	  S32_NVIC->IP[CAN0_ORed_0_15_MB_IRQn] = 0xA0;
}

void CAN0_ORed_0_15_MB_IRQHandler(void)
{
    if ((CAN0->IFLAG1 >> 4) & 1) {  /* If CAN 0 MB 4 flag is set (received msg), read MB4 */
      FLEXCAN0_receive_msg();      /* Read message */
      rx_msg_count++;               /* Increment receive msg counter */

      if (rx_msg_count == 10) {   /* If 1000 messages have been received, */
        PTD->PTOR |= 1<<16;         /*   toggle output port D16 (Green LED) */
        rx_msg_count = 0;           /*   and reset message counter */
      }

      FLEXCAN0_transmit_msg();     /* Transmit message using MB0 */
    }
}

Senlent_0-1721109138585.png

 

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
922件の閲覧回数
Senlent
NXP TechSupport
NXP TechSupport

Hi@Sandra1

I made a demo base on "S32K144_Project_CanFd" which is provided in S32 DS For Arm V2.2.

1.set MB4 interrupt mask in FLEXCAN0_init()

CAN0->IMASK1 |= CAN_IMASK1_BUF31TO0M(1 << 4);/*Enable MB 4 interrupt mask*/

2.Set NVIC and install  CAN0 IRQ Handler

void NVIC_init_IRQs (void)
{
	  S32_NVIC->ICPR[2] = 1 << (CAN0_ORed_0_15_MB_IRQn % 32);
	  S32_NVIC->ISER[2] = 1 << (CAN0_ORed_0_15_MB_IRQn % 32);
	  S32_NVIC->IP[CAN0_ORed_0_15_MB_IRQn] = 0xA0;
}

void CAN0_ORed_0_15_MB_IRQHandler(void)
{
    if ((CAN0->IFLAG1 >> 4) & 1) {  /* If CAN 0 MB 4 flag is set (received msg), read MB4 */
      FLEXCAN0_receive_msg();      /* Read message */
      rx_msg_count++;               /* Increment receive msg counter */

      if (rx_msg_count == 10) {   /* If 1000 messages have been received, */
        PTD->PTOR |= 1<<16;         /*   toggle output port D16 (Green LED) */
        rx_msg_count = 0;           /*   and reset message counter */
      }

      FLEXCAN0_transmit_msg();     /* Transmit message using MB0 */
    }
}

Senlent_0-1721109138585.png

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-1908515%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ECAN%20FD%20S32k144%E5%8F%97%E4%BF%A1%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1908515%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CBR%20%2F%3ESDK%E3%81%AA%E3%81%97%E3%81%AECAN%20FD%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AE%E4%BE%8B%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E5%B0%8B%E3%81%AD%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3EIMASK1%20%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E4%BB%96%E3%81%AB%E4%BD%95%E3%81%8B%E3%81%97%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%82%AB%E3%83%8C%E3%83%BC%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%80%81CAN%20FD%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%9D%E3%82%8C%E3%81%AFTx%E3%82%A8%E3%83%A9%E3%83%BC(%E3%83%93%E3%83%83%E3%83%88%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8NAK%E3%82%A8%E3%83%A9%E3%83%BC)%E3%81%A8%E8%A8%80%E3%81%84%E3%81%BE%E3%81%99%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E3%81%A9%E3%81%AA%E3%81%9F%E3%81%8B%E3%81%8A%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A6%E3%82%8C%E3%81%B0%E5%B9%B8%E3%81%84%E3%81%A7%E3%81%99%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ESandra%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1909410%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3ACAN%20FD%20S32k144%E5%8F%97%E4%BF%A1%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1909410%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%40%3CA%20id%3D%22link_5%22%20class%3D%22lia-link-navigation%20lia-page-link%20lia-user-name-link%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F232799%22%20target%3D%22_self%22%20aria-label%3D%22View%20Profile%20of%20Sandra1%22%3E%3CSPAN%20class%3D%22%22%3E%E3%82%B5%E3%83%B3%E3%83%89%E3%83%A91%3C%2FSPAN%3E%3C%2FA%3E%3C%2FP%3E%0A%3CP%3ES32%20DS%20For%20Arm%20V2.2%E3%81%A7%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%8CS32K144_Project_CanFd%E3%80%8D%E3%82%92%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E3%83%87%E3%83%A2%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E1.MB4%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%83%9E%E3%82%B9%E3%82%AF%E3%82%92FLEXCAN0_init()%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3ECAN0-%26gt%3BIMASK1%20%7C%3D%20CAN_IMASK1_BUF31TO0M(1%20%26lt%3B%26lt%3B%204)%3B%2F*Enable%20MB%204%20interrupt%20mask*%2F%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E2.NVIC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%80%81CAN0%20IRQ%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3Evoid%20NVIC_init_IRQs%20(void)%0A%7B%0A%09%20%20S32_NVIC-%26gt%3BICPR%5B2%5D%20%3D%201%20%26lt%3B%26lt%3B%20(CAN0_ORed_0_15_MB_IRQn%20%25%2032)%3B%0A%09%20%20S32_NVIC-%26gt%3BISER%5B2%5D%20%3D%201%20%26lt%3B%26lt%3B%20(CAN0_ORed_0_15_MB_IRQn%20%25%2032)%3B%0A%09%20%20S32_NVIC-%26gt%3BIP%5BCAN0_ORed_0_15_MB_IRQn%5D%20%3D%200xA0%3B%0A%7D%0A%0Avoid%20CAN0_ORed_0_15_MB_IRQHandler(void)%0A%7B%0A%20%20%20%20if%20((CAN0-%26gt%3BIFLAG1%20%26gt%3B%26gt%3B%204)%20%26amp%3B%201)%20%7B%20%20%2F*%20If%20CAN%200%20MB%204%20flag%20is%20set%20(received%20msg)%2C%20read%20MB4%20*%2F%0A%20%20%20%20%20%20FLEXCAN0_receive_msg()%3B%20%20%20%20%20%20%2F*%20Read%20message%20*%2F%0A%20%20%20%20%20%20rx_msg_count%2B%2B%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F*%20Increment%20receive%20msg%20counter%20*%2F%0A%0A%20%20%20%20%20%20if%20(rx_msg_count%20%3D%3D%2010)%20%7B%20%20%20%2F*%20If%201000%20messages%20have%20been%20received%2C%20*%2F%0A%20%20%20%20%20%20%20%20PTD-%26gt%3BPTOR%20%7C%3D%201%26lt%3B%26lt%3B16%3B%20%20%20%20%20%20%20%20%20%2F*%20%20%20toggle%20output%20port%20D16%20(Green%20LED)%20*%2F%0A%20%20%20%20%20%20%20%20rx_msg_count%20%3D%200%3B%20%20%20%20%20%20%20%20%20%20%20%2F*%20%20%20and%20reset%20message%20counter%20*%2F%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20FLEXCAN0_transmit_msg()%3B%20%20%20%20%20%2F*%20Transmit%20message%20using%20MB0%20*%2F%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Senlent_0-1721109138585.png%22%20style%3D%22width%3A%20739px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Senlent_0-1721109138585.png%22%20style%3D%22width%3A%20739px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F288689iEC089D9E9FAAC789%2Fimage-dimensions%2F739x213%3Fv%3Dv2%22%20width%3D%22739%22%20height%3D%22213%22%20role%3D%22button%22%20title%3D%22Senlent_0-1721109138585.png%22%20alt%3D%22Senlent_0-1721109138585.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E