这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K144EVB-Q100评测】-成果贴

共3条 1/1 1 跳转至

【S32K144EVB-Q100评测】-成果贴

助工
2025-02-27 10:04:05     打赏

项目介绍、

本次项目使用到的板卡是得捷与EEPW提供的S32K144EVB-Q100开发板和一块自备的MCXN947与LCD。

项目使用到了S32K144的ADC模块采集旋转电位计的电压与板载的一个参考电压值,之后把数据打包到id为0x55的CAN报文中,并通过FlexCAN模块发送。

接收方是恩智浦的MCXN947搭配一个使用Gui Guider设计的图形界面,使用到了FreeRTOS,LVGL和FlexCAN模块。

项目实现了通过旋转电位计来控制图形界面指针变化的效果,实现了数据采集、CAN发送与接收和LVGL图形动态展示的全过程。

系统框图、

简易系统框图如下所示:

image.png

运行流程图、

image.png

S32K144程序:

首先进行各模块初始化:

		/*!
		 * Initialization:
		 * =======================
		 */
	  WDOG_disable();		 /* Disable WDOG */
	  SOSC_init_8MHz();      /* Initialize system oscillator for 8 MHz xtal */
	  SPLL_init_160MHz();    /* Initialize SPLL to 160 MHz with 8 MHz SOSC */
	  NormalRUNmode_80MHz(); /* Init clocks: 80 MHz sysclk & core, 40 MHz bus, 20 MHz flash */

	  FLEXCAN0_init();         /* Init FlexCAN0 */
	  PORT_init();             /* Configure ports */
	  ADC_init();            /* Init ADC resolution 12 bit	

打包ADC数据:

void FLEXCAN0_transmit_msg_ADCValues(uint32_t Val_1, uint32_t Val_2)
{
	/*! Assumption:
	 * =================================
	 * Message buffer CODE is INACTIVE
	 */
	CAN0->IFLAG1 = 0x00000001;	/* Clear CAN 0 MB 0 flag without clearing others*/

	CAN0->RAMn[ 0*4 + 0] = 0x0C400000 | 8 << CAN_WMBn_CS_DLC_SHIFT;
	/* MB0 word 0: 								*/
	/* EDL,BRS,ESI=0: CANFD not used 				*/
	/* CODE=0xC: Activate msg buf to transmit 		*/
	/* IDE=0: Standard ID 							*/
	/* SRR=1 Tx frame (not req'd for std ID) 		*/
	/* RTR = 0: data, not remote tx request frame	*/
	/* DLC = 8 bytes 								*/
	CAN0->RAMn[ 0*4 + 1] = 0x15540000; /* MB0 word 1: Tx msg with STD ID 0x555 */
	CAN0->RAMn[ 0*4 + 2] = Val_1;	/* MB0 word 2: data word 0 */
	CAN0->RAMn[ 0*4 + 3] = Val_2; /* MB0 word 3: data word 1 */
}

循环发送:

  for(;;){
	  convertAdcChan(12);                   /* Convert Channel AD12 to pot on EVB 	*/
	  while(adc_complete()==0){}            /* Wait for conversion complete flag 	*/
	  adcResultInMv = read_adc_chx();       /* Get channel's conversion results in mv */

	  if (adcResultInMv > 3750) {           /* If result > 3.75V 		*/
		  PTD->PSOR |= 1<<PTD0 | 1<<PTD16;    /* turn off blue, green LEDs */
		  PTD->PCOR |= 1<<PTD15;              /* turn on red LED 			*/
	  }
	  else if (adcResultInMv > 2500) {      /* If result > 2.50V 		*/
		  PTD->PSOR |= 1<<PTD0 | 1<<PTD15;    /* turn off blue, red LEDs 	*/
		  PTD->PCOR |= 1<<PTD16;     	      /* turn on green LED 		*/
	  }
	  else if (adcResultInMv >1250) {       /* If result > 1.25V 		*/
		  PTD->PSOR |= 1<<PTD15 | 1<<PTD16;   /* turn off red, green LEDs  */
		  PTD->PCOR |= 1<<PTD0;     	      /* turn on blue LED 			*/
	  }
	  else {
		  PTD->PSOR |= 1<<PTD0 | 1<< PTD15 | 1<<PTD16; /* Turn off all LEDs */
	  }

	  convertAdcChan(29);                   /* Convert chan 29, Vrefsh 			*/
	  while(adc_complete()==0){}            /* Wait for conversion complete flag */
	  adcResultInMvVref = read_adc_chx();       /* Get channel's conversion results in mv */

	  FLEXCAN0_transmit_msg_ADCValues(adcResultInMv, adcResultInMvVref);
	  delayCycles(0xEFFFFF);
  }

在开发过程中,S32K144发送到CAN报文先用USB-CAN工具接收一下,查看通信是否正常。

image.png

MCXN947程序:

这部分的细节可以参考帖子:【S32K144EVB-Q100评测】-CAN报文接收方GUI设计 https://forum.eepw.com.cn/thread/390387/1

设计了两个任务,一个用于跑gui,一个用于接收can报文。优先级设计的是flexcan的优先级要高。

 /* Init smartdma. */
    BOARD_InitSmartDMA();

    stat = xTaskCreate(AppTask, "lvgl", configMINIMAL_STACK_SIZE + 800, NULL, tskIDLE_PRIORITY + 2, NULL);

    if (pdPASS != stat)
    {
        PRINTF("Failed to create lvgl task");
        while (1)
            ;
    }
		
		stat = xTaskCreate(AppFlexCan, "flexcan", configMINIMAL_STACK_SIZE + 200, NULL, tskIDLE_PRIORITY + 1, NULL);

    if (pdPASS != stat)
    {
        PRINTF("Failed to create flexcan task");
        while (1)
            ;
    }else{
			PRINTF("Good, success to create flexcan task");
		}		

    vTaskStartScheduler();


成果实物图

系统中黄色的开发板上本次测评的S32K144EVB-Q100,黑色开发板为MCXN947搭配一个LCD屏幕。

两块主控板都是挂载到CAN总线上。

image.png

image.png


项目视频链接:优酷  https://v.youku.com/video?vid=XNjQ1ODYyMTA5Ng%3D%3D

附往期帖子:

【S32K144EVB-Q100评测】-开箱贴 https://forum.eepw.com.cn/thread/390329/1

【S32K144EVB-Q100评测】-开发环境搭建 https://forum.eepw.com.cn/thread/390330/1

【S32K144EVB-Q100评测】-CAN测试 https://forum.eepw.com.cn/thread/390379/1

【S32K144EVB-Q100评测】-CAN报文接收方GUI设计 https://forum.eepw.com.cn/thread/390387/1



菜鸟
2025-02-27 13:47:53     打赏
2楼

EMC摸底测试整改方案找我呀!


院士
2025-03-01 11:49:50     打赏
3楼

真棒!

给大家在CAN应用上面开了好头


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]