CAN communication interruption problem with FRDM-KV11Z

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

CAN communication interruption problem with FRDM-KV11Z

Jump to solution
2,512 Views
HL_G
Contributor III

When testing the FRDM-KV11Z development board with the SDK provided by the official, it was found that the CAN communication could not enter the interrupt. The SDK routines are used with FreeMASTER software. I don't have this device around, so I ported it myself. The following is my code:

static void init_CAN(void)
{
status_t status;
flexcan_config_t flexcanConfig;
flexcan_timing_config_t timing_config;
uint32_t canSrcClock = CLOCK_GetFreq(kCLOCK_CoreSysClk);

/* Init FlexCAN module. */
/*
* flexcanConfig.clksrc=kFLEXCAN_ClkSrcOsc;
* flexcanConfig.baudRate = 1000000U;
* flexcanConfig.baudRateFD = 2000000U;
* flexcanConfig.maxMbNum = 16;
* flexcanConfig.enableLoopBack = false;
* flexcanConfig.enableSelfWakeup = false;
* flexcanConfig.enableIndividMask = false;
* flexcanConfig.enableDoze = false;
*/
FLEXCAN_GetDefaultConfig(&flexcanConfig);

flexcanConfig.clksrc=kFLEXCAN_ClkSrcPeri;
flexcanConfig.baudRate = 100000U;

/* Update the improved timing configuration */
if (FLEXCAN_CalculateImprovedTimingValues(CAN0, flexcanConfig.baudRate, canSrcClock, &timing_config))
flexcanConfig.timingConfig = timing_config;

FLEXCAN_Init(CAN0, &flexcanConfig, canSrcClock);
/* Enable CAN interrupt. */
EnableIRQ(CAN0_IRQn);

}

void CAN0_IRQHandler(void)
{
uint32_t isrFlags = FLEXCAN_GetStatusFlags(CAN0);
uint32_t isrFlagsMB = FLEXCAN_GetMbStatusFlags(CAN0, 0xFFFFFFFFUL);

count++;

if (isrFlags != 0U)
{
FLEXCAN_ClearStatusFlags(CAN0, isrFlags);
}

if (isrFlagsMB != 0U)
{
/* Read or Write */
if ((isrFlagsMB & (1UL << (FMSTR_FLEXCAN_RXMB))) != 0U)
{

/* Is any data received? */
if (FLEXCAN_GetMbStatusFlags(CAN0, 1UL << (FMSTR_FLEXCAN_RXMB)) == 0U)
{
return;
}
/* Try to read data, when successful, the MB is acknowledged and set for next receive */
status_t s = FLEXCAN_ReadRxMb(CAN0, FMSTR_FLEXCAN_RXMB, &CAN_Rxmsg);
}
if ((isrFlagsMB & (1UL << (FMSTR_FLEXCAN_TXMB))) != 0U)
{
/* Acknowledge frame transmission */
CAN_Txmsg.length = 0U;

}

/* Clear all interrupt flags */
FLEXCAN_ClearMbStatusFlags(CAN0, isrFlagsMB);

}
}

int main(void)
{
status_t status_can;

/* Init board hardware. */
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
init_CAN();
PRINTF("SPI DAM Init OK.\r\n");
CAN_Txmsg.format = 1; //扩展帧ID
CAN_Txmsg.timestamp = 1000; //超时时间
CAN_Txmsg.type = 0; //数据帧
CAN_Txmsg.length = 8; //数据长度
CAN_Txmsg.id = 0x123; //帧ID
/* 8位数据 */
CAN_Txmsg.dataByte0 = 0x0;
CAN_Txmsg.dataByte1 = 0x1;
CAN_Txmsg.dataByte2 = 0x2;
CAN_Txmsg.dataByte3 = 0x3;
CAN_Txmsg.dataByte4 = 0x4;
CAN_Txmsg.dataByte5 = 0x5;
CAN_Txmsg.dataByte6 = 0x6;
CAN_Txmsg.dataByte7 = 0x7;


/* 发送数据 */
FLEXCAN_WriteTxMb(CAN0, 0, &CAN_Txmsg);

while (1)
{
status_can = FLEXCAN_WriteTxMb(CAN0, 0, &CAN_Txmsg);
if(status_can != kStatus_Fail)
PRINTF("CAN Write success %d\r\n", count);
else
PRINTF("CAN Write fail %d\r\n", count);
SDK_DelayAtLeastUs(1000000, BOARD_BOOTCLOCKRUN_CORE_CLOCK); //延时1秒

}
}

The data can now be successfully sent. But there is no interrupt to enter, and there is no interrupt to receive data.

0 Kudos
Reply
1 Solution
2,455 Views
HL_G
Contributor III

您好 XuZhang

感谢您提供的支持。

我已经解决这个问题了

View solution in original post

0 Kudos
Reply
2 Replies
2,486 Views
Joey_z
NXP Employee
NXP Employee

hi,HL_G

Thank you for your interest in NXP Semiconductor products and the opportunity to serve you, I will gladly help you with this.

Please confirm whether the development board CAN connect to FreeMASTER through Freemaster-over-can. Please conduct connection test in the following way.

XuZhang_0-1728715517072.png

You can then Enable CAN interrupt by modifying the following program in the SDK's frdmkv11z_fmstr_example_can demo.

XuZhang_1-1728715528707.png

Besides, are you saying you don't have any FreeMaster tools? Below is the download link.

FreeMASTER tool 3.2 (includes Lite 1.3) – Windows installer (nxp.com.cn)

Wish it helps you.

If you still have question about it,please kindly let me know.

 

BR

Xu Zhang

0 Kudos
Reply
2,456 Views
HL_G
Contributor III

您好 XuZhang

感谢您提供的支持。

我已经解决这个问题了

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-1970880%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ECAN%20communication%20interruption%20problem%20with%20FRDM-KV11Z%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1970880%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EWhen%20testing%20the%20FRDM-KV11Z%20development%20board%20with%20the%20SDK%20provided%20by%20the%20official%2C%20it%20was%20found%20that%20the%20CAN%20communication%20could%20not%20enter%20the%20interrupt.%20The%20SDK%20routines%20are%20used%20with%20FreeMASTER%20software.%20I%20don't%20have%20this%20device%20around%2C%20so%20I%20ported%20it%20myself.%20The%20following%20is%20my%20code%3A%3C%2FP%3E%3CP%3E%3CFONT%20color%3D%22%23FF6600%22%3Estatic%20void%20init_CAN(void)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Estatus_t%20status%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eflexcan_config_t%20flexcanConfig%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eflexcan_timing_config_t%20timing_config%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Euint32_t%20canSrcClock%20%3D%20CLOCK_GetFreq(kCLOCK_CoreSysClk)%3B%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Init%20FlexCAN%20module.%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.clksrc%3DkFLEXCAN_ClkSrcOsc%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.baudRate%20%3D%201000000U%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.baudRateFD%20%3D%202000000U%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.maxMbNum%20%3D%2016%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.enableLoopBack%20%3D%20false%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.enableSelfWakeup%20%3D%20false%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.enableIndividMask%20%3D%20false%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%20flexcanConfig.enableDoze%20%3D%20false%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3EFLEXCAN_GetDefaultConfig(%26amp%3BflexcanConfig)%3B%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%20color%3D%22%23FF6600%22%3EflexcanConfig.clksrc%3DkFLEXCAN_ClkSrcPeri%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3EflexcanConfig.baudRate%20%3D%20100000U%3B%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Update%20the%20improved%20timing%20configuration%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20(FLEXCAN_CalculateImprovedTimingValues(CAN0%2C%20flexcanConfig.baudRate%2C%20canSrcClock%2C%20%26amp%3Btiming_config))%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3EflexcanConfig.timingConfig%20%3D%20timing_config%3B%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%20color%3D%22%23FF6600%22%3EFLEXCAN_Init(CAN0%2C%20%26amp%3BflexcanConfig%2C%20canSrcClock)%3B%3CBR%20%2F%3E%2F*%20Enable%20CAN%20interrupt.%20*%2F%3CBR%20%2F%3EEnableIRQ(CAN0_IRQn)%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%3E%3CFONT%20color%3D%22%23FF6600%22%3Evoid%20CAN0_IRQHandler(void)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Euint32_t%20isrFlags%20%3D%20FLEXCAN_GetStatusFlags(CAN0)%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Euint32_t%20isrFlagsMB%20%3D%20FLEXCAN_GetMbStatusFlags(CAN0%2C%200xFFFFFFFFUL)%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Ecount%2B%2B%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20(isrFlags%20!%3D%200U)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3EFLEXCAN_ClearStatusFlags(CAN0%2C%20isrFlags)%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20(isrFlagsMB%20!%3D%200U)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Read%20or%20Write%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20((isrFlagsMB%20%26amp%3B%20(1UL%20%26lt%3B%26lt%3B%20(FMSTR_FLEXCAN_RXMB)))%20!%3D%200U)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Is%20any%20data%20received%3F%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20(FLEXCAN_GetMbStatusFlags(CAN0%2C%201UL%20%26lt%3B%26lt%3B%20(FMSTR_FLEXCAN_RXMB))%20%3D%3D%200U)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Ereturn%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Try%20to%20read%20data%2C%20when%20successful%2C%20the%20MB%20is%20acknowledged%20and%20set%20for%20next%20receive%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Estatus_t%20s%20%3D%20FLEXCAN_ReadRxMb(CAN0%2C%20FMSTR_FLEXCAN_RXMB%2C%20%26amp%3BCAN_Rxmsg)%3B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3Eif%20((isrFlagsMB%20%26amp%3B%20(1UL%20%26lt%3B%26lt%3B%20(FMSTR_FLEXCAN_TXMB)))%20!%3D%200U)%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7B%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Acknowledge%20frame%20transmission%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3ECAN_Txmsg.length%20%3D%200U%3B%3C%2FFONT%3E%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%3E%3CFONT%20color%3D%22%23FF6600%22%3E%2F*%20Clear%20all%20interrupt%20flags%20*%2F%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3EFLEXCAN_ClearMbStatusFlags(CAN0%2C%20isrFlagsMB)%3B%3C%2FFONT%3E%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3CBR%20%2F%3E%3CFONT%20color%3D%22%23FF6600%22%3E%7D%3C%2FFONT%3E%3C%2FP%3E%3CP%3Eint%20main(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Estatus_t%20status_can%3B%3C%2FP%3E%3CP%3E%2F*%20Init%20board%20hardware.%20*%2F%3CBR%20%2F%3EBOARD_InitBootPins()%3B%3CBR%20%2F%3EBOARD_InitBootClocks()%3B%3CBR%20%2F%3EBOARD_InitDebugConsole()%3B%3CBR%20%2F%3Einit_CAN()%3B%3CBR%20%2F%3EPRINTF(%22SPI%20DAM%20Init%20OK.%5Cr%5Cn%22)%3B%3CBR%20%2F%3ECAN_Txmsg.format%20%3D%201%3B%20%2F%2F%E6%89%A9%E5%B1%95%E5%B8%A7ID%3CBR%20%2F%3ECAN_Txmsg.timestamp%20%3D%201000%3B%20%2F%2F%E8%B6%85%E6%97%B6%E6%97%B6%E9%97%B4%3CBR%20%2F%3ECAN_Txmsg.type%20%3D%200%3B%20%2F%2F%E6%95%B0%E6%8D%AE%E5%B8%A7%3CBR%20%2F%3ECAN_Txmsg.length%20%3D%208%3B%20%2F%2F%E6%95%B0%E6%8D%AE%E9%95%BF%E5%BA%A6%3CBR%20%2F%3ECAN_Txmsg.id%20%3D%200x123%3B%20%2F%2F%E5%B8%A7ID%3CBR%20%2F%3E%2F*%208%E4%BD%8D%E6%95%B0%E6%8D%AE%20*%2F%3CBR%20%2F%3ECAN_Txmsg.dataByte0%20%3D%200x0%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte1%20%3D%200x1%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte2%20%3D%200x2%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte3%20%3D%200x3%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte4%20%3D%200x4%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte5%20%3D%200x5%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte6%20%3D%200x6%3B%3CBR%20%2F%3ECAN_Txmsg.dataByte7%20%3D%200x7%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%3CFONT%3E%2F*%20%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%20*%2F%3CBR%20%2F%3EFLEXCAN_WriteTxMb(CAN0%2C%200%2C%20%26amp%3BCAN_Txmsg)%3B%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CFONT%3Ewhile%20(1)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Estatus_can%20%3D%20FLEXCAN_WriteTxMb(CAN0%2C%200%2C%20%26amp%3BCAN_Txmsg)%3B%3CBR%20%2F%3Eif(status_can%20!%3D%20kStatus_Fail)%3CBR%20%2F%3EPRINTF(%22CAN%20Write%20success%20%25d%5Cr%5Cn%22%2C%20count)%3B%3CBR%20%2F%3Eelse%3CBR%20%2F%3EPRINTF(%22CAN%20Write%20fail%20%25d%5Cr%5Cn%22%2C%20count)%3B%3CBR%20%2F%3ESDK_DelayAtLeastUs(1000000%2C%20BOARD_BOOTCLOCKRUN_CORE_CLOCK)%3B%20%2F%2F%E5%BB%B6%E6%97%B61%E7%A7%92%3C%2FFONT%3E%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3EThe%20data%20can%20now%20be%20successfully%20sent.%20But%20there%20is%20no%20interrupt%20to%20enter%2C%20and%20there%20is%20no%20interrupt%20to%20receive%20data.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1972575%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20CAN%20communication%20interruption%20problem%20with%20FRDM-KV11Z%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1972575%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CFONT%3Ehi%2C%3CSPAN%3EHL_G%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThank%20you%20for%20your%20interest%20in%20NXP%20Semiconductor%20products%20and%20the%20opportunity%20to%20serve%20you%2C%20I%20will%20gladly%20help%20you%20with%20this.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EPlease%20confirm%20whether%20the%20development%20board%20CAN%20connect%20to%20FreeMASTER%20through%20Freemaster-over-can.%20Please%20conduct%20connection%20test%20in%20the%20following%20way.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22XuZhang_0-1728715517072.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22XuZhang_0-1728715517072.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F304343iA53D7C4723A62707%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22XuZhang_0-1728715517072.png%22%20alt%3D%22XuZhang_0-1728715517072.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EYou%20can%20then%20Enable%20CAN%20interrupt%20by%20modifying%20the%20following%20program%20in%20the%20SDK's%20frdmkv11z_fmstr_example_can%20demo.%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22XuZhang_1-1728715528707.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22XuZhang_1-1728715528707.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F304344iD9B4AC99181D27E6%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22XuZhang_1-1728715528707.png%22%20alt%3D%22XuZhang_1-1728715528707.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EBesides%2C%20are%20you%20saying%20you%20don't%20have%20any%20FreeMaster%20tools%3F%20Below%20is%20the%20download%20link.%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com.cn%2Fwebapp%2Fsps%2Fdownload%2Flicense.jsp%3FcolCode%3DFMASTERSW%26amp%3BappType%3Dfile1%26amp%3BDOWNLOAD_ID%3Dnull%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EFreeMASTER%20tool%203.2%20(includes%20Lite%201.3)%20%E2%80%93%20Windows%20installer%20(nxp.com.cn)%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EWish%20it%20helps%20you.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EIf%20you%20still%20have%20question%20about%20it%2Cplease%20kindly%20let%20me%20know.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSPAN%3EBR%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EXu%20Zhang%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E