<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MIMXRT1060-EVK backlight control in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998323#M148056</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jing,&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&amp;nbsp;Thanks, started to look at the PWM demo. The backlight on GPIO_B1_15 is PWM4_PWMA03. Trying to figure out how to plumb that. I have the following but I'm not seeing anything on my scope.&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*&lt;BR /&gt; * Copyright (c) 2015, Freescale Semiconductor, Inc.&lt;BR /&gt; * Copyright 2016-2017 NXP&lt;BR /&gt; * All rights reserved.&lt;BR /&gt; * &lt;BR /&gt; * SPDX-License-Identifier: BSD-3-Clause&lt;BR /&gt; */&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "fsl_pwm.h"&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#include "pin_mux.h"&lt;BR /&gt;#include "fsl_xbara.h"&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;/* The PWM base address */&lt;BR /&gt;#define BOARD_PWM_BASEADDR PWM4 //PWM1 mls&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#define PWM_SRC_CLK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk)&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Prototypes&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Variables&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;static void PWM_DRV_Init3PhPwm(void)&lt;BR /&gt;{&lt;BR /&gt; uint16_t deadTimeVal;&lt;BR /&gt; pwm_signal_param_t pwmSignal[2];&lt;BR /&gt; uint32_t pwmSourceClockInHz;&lt;BR /&gt; uint32_t pwmFrequencyInHz = 1000;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSourceClockInHz = PWM_SRC_CLK_FREQ;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set deadtime count, we set this to about 650ns */&lt;BR /&gt; deadTimeVal = ((uint64_t)pwmSourceClockInHz * 650) / 1000000000;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSignal[0].pwmChannel = kPWM_PwmA;&lt;BR /&gt; pwmSignal[0].level = kPWM_HighTrue;&lt;BR /&gt; pwmSignal[0].dutyCyclePercent = 50; /* 1 percent dutycycle */&lt;BR /&gt; pwmSignal[0].deadtimeValue = deadTimeVal;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSignal[1].pwmChannel = kPWM_PwmB;&lt;BR /&gt; pwmSignal[1].level = kPWM_HighTrue;&lt;BR /&gt; /* Dutycycle field of PWM B does not matter as we are running in PWM A complementary mode */&lt;BR /&gt; pwmSignal[1].dutyCyclePercent = 50;&lt;BR /&gt; pwmSignal[1].deadtimeValue = deadTimeVal;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM0 - phase A, configuration, setup 2 channel as an example ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_0, pwmSignal, 2, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM1 - phase B configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_1, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM2 - phase C configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_2, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM3 - phase C configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_3, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief Main function&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; /* Structure of initialize PWM */&lt;BR /&gt; pwm_config_t pwmConfig;&lt;BR /&gt; static uint16_t delay;&lt;BR /&gt; uint32_t pwmVal = 4;&lt;BR /&gt; uint16_t i;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Board pin, clock, debug console init */&lt;BR /&gt; BOARD_ConfigMPU();&lt;BR /&gt; BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */&lt;BR /&gt; CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the PWM Fault inputs to a low value */&lt;BR /&gt; XBARA_Init(XBARA1);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault2);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault3);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;PRINTF("FlexPWM driver example\n");&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*&lt;BR /&gt; * pwmConfig.enableDebugMode = false;&lt;BR /&gt; * pwmConfig.enableWait = false;&lt;BR /&gt; * pwmConfig.reloadSelect = kPWM_LocalReload;&lt;BR /&gt; * pwmConfig.faultFilterCount = 0;&lt;BR /&gt; * pwmConfig.faultFilterPeriod = 0;&lt;BR /&gt; * pwmConfig.clockSource = kPWM_BusClock;&lt;BR /&gt; * pwmConfig.prescale = kPWM_Prescale_Divide_1;&lt;BR /&gt; * pwmConfig.initializationControl = kPWM_Initialize_LocalSync;&lt;BR /&gt; * pwmConfig.forceTrigger = kPWM_Force_Local;&lt;BR /&gt; * pwmConfig.reloadFrequency = kPWM_LoadEveryOportunity;&lt;BR /&gt; * pwmConfig.reloadLogic = kPWM_ReloadImmediate;&lt;BR /&gt; * pwmConfig.pairOperation = kPWM_Independent;&lt;BR /&gt; */&lt;BR /&gt; PWM_GetDefaultConfig(&amp;amp;pwmConfig);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Use full cycle reload */&lt;BR /&gt; pwmConfig.reloadLogic = kPWM_ReloadPwmFullCycle;&lt;BR /&gt; /* PWM A &amp;amp; PWM B form a complementary PWM pair */&lt;BR /&gt; pwmConfig.pairOperation = kPWM_ComplementaryPwmA;&lt;BR /&gt; pwmConfig.enableDebugMode = true;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 0 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_0, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 1 */&lt;BR /&gt; pwmConfig.clockSource = kPWM_Submodule0Clock;&lt;BR /&gt; pwmConfig.initializationControl = kPWM_Initialize_MasterSync;&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_1, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 2 the same way as submodule 1 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_2, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 3 the same way as submodule 1 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_3, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt; /* Call the init function with demo configuration */&lt;BR /&gt; PWM_DRV_Init3PhPwm();&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the load okay bit for all submodules to load registers from their buffer */&lt;BR /&gt; PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3, true);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Start the PWM generation from Submodules 0, 1 and 2 */&lt;BR /&gt; PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;delay = 0x0fffU;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;while (1U)&lt;BR /&gt; {&lt;BR /&gt; for (i = 0U; i &amp;lt; delay; i++)&lt;BR /&gt; {&lt;BR /&gt; __ASM volatile("nop");&lt;BR /&gt; }&lt;BR /&gt; pwmVal = pwmVal + 4;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Reset the duty cycle percentage */&lt;BR /&gt; if (pwmVal &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; pwmVal = 4;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Update duty cycles for all 3 PWM signals */&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmA, kPWM_SignedCenterAligned, pwmVal);&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_1, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 1));&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_2, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 2));&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_3, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 3));&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the load okay bit for all submodules to load registers from their buffer */&lt;BR /&gt; PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3, true);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 04 Nov 2019 16:01:13 GMT</pubDate>
    <dc:creator>mspenard603</dc:creator>
    <dc:date>2019-11-04T16:01:13Z</dc:date>
    <item>
      <title>MIMXRT1060-EVK backlight control</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998321#M148054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is there demo code to control the LCD backlight on the IMXRT1060-EVK?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 02 Nov 2019 21:30:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998321#M148054</guid>
      <dc:creator>mspenard603</dc:creator>
      <dc:date>2019-11-02T21:30:18Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT1060-EVK backlight control</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998322#M148055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;There is no direct backlight demo. In all lcd demo, GPIO_B1_15 works as gpio. In backlight circuit, UM1661 support PWM dimming control. Please refer to the PWM demo in SDK.&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Nov 2019 06:08:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998322#M148055</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2019-11-04T06:08:46Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT1060-EVK backlight control</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998323#M148056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jing,&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&amp;nbsp;Thanks, started to look at the PWM demo. The backlight on GPIO_B1_15 is PWM4_PWMA03. Trying to figure out how to plumb that. I have the following but I'm not seeing anything on my scope.&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*&lt;BR /&gt; * Copyright (c) 2015, Freescale Semiconductor, Inc.&lt;BR /&gt; * Copyright 2016-2017 NXP&lt;BR /&gt; * All rights reserved.&lt;BR /&gt; * &lt;BR /&gt; * SPDX-License-Identifier: BSD-3-Clause&lt;BR /&gt; */&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "fsl_pwm.h"&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#include "pin_mux.h"&lt;BR /&gt;#include "fsl_xbara.h"&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;/* The PWM base address */&lt;BR /&gt;#define BOARD_PWM_BASEADDR PWM4 //PWM1 mls&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;#define PWM_SRC_CLK_FREQ CLOCK_GetFreq(kCLOCK_IpgClk)&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Prototypes&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Variables&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;static void PWM_DRV_Init3PhPwm(void)&lt;BR /&gt;{&lt;BR /&gt; uint16_t deadTimeVal;&lt;BR /&gt; pwm_signal_param_t pwmSignal[2];&lt;BR /&gt; uint32_t pwmSourceClockInHz;&lt;BR /&gt; uint32_t pwmFrequencyInHz = 1000;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSourceClockInHz = PWM_SRC_CLK_FREQ;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set deadtime count, we set this to about 650ns */&lt;BR /&gt; deadTimeVal = ((uint64_t)pwmSourceClockInHz * 650) / 1000000000;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSignal[0].pwmChannel = kPWM_PwmA;&lt;BR /&gt; pwmSignal[0].level = kPWM_HighTrue;&lt;BR /&gt; pwmSignal[0].dutyCyclePercent = 50; /* 1 percent dutycycle */&lt;BR /&gt; pwmSignal[0].deadtimeValue = deadTimeVal;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;pwmSignal[1].pwmChannel = kPWM_PwmB;&lt;BR /&gt; pwmSignal[1].level = kPWM_HighTrue;&lt;BR /&gt; /* Dutycycle field of PWM B does not matter as we are running in PWM A complementary mode */&lt;BR /&gt; pwmSignal[1].dutyCyclePercent = 50;&lt;BR /&gt; pwmSignal[1].deadtimeValue = deadTimeVal;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM0 - phase A, configuration, setup 2 channel as an example ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_0, pwmSignal, 2, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM1 - phase B configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_1, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM2 - phase C configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_2, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*********** PWMA_SM3 - phase C configuration, setup PWM A channel only ************/&lt;BR /&gt; PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_3, pwmSignal, 1, kPWM_SignedCenterAligned, pwmFrequencyInHz,&lt;BR /&gt; pwmSourceClockInHz);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief Main function&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; /* Structure of initialize PWM */&lt;BR /&gt; pwm_config_t pwmConfig;&lt;BR /&gt; static uint16_t delay;&lt;BR /&gt; uint32_t pwmVal = 4;&lt;BR /&gt; uint16_t i;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Board pin, clock, debug console init */&lt;BR /&gt; BOARD_ConfigMPU();&lt;BR /&gt; BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */&lt;BR /&gt; CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the PWM Fault inputs to a low value */&lt;BR /&gt; XBARA_Init(XBARA1);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault2);&lt;BR /&gt; XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault3);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;PRINTF("FlexPWM driver example\n");&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/*&lt;BR /&gt; * pwmConfig.enableDebugMode = false;&lt;BR /&gt; * pwmConfig.enableWait = false;&lt;BR /&gt; * pwmConfig.reloadSelect = kPWM_LocalReload;&lt;BR /&gt; * pwmConfig.faultFilterCount = 0;&lt;BR /&gt; * pwmConfig.faultFilterPeriod = 0;&lt;BR /&gt; * pwmConfig.clockSource = kPWM_BusClock;&lt;BR /&gt; * pwmConfig.prescale = kPWM_Prescale_Divide_1;&lt;BR /&gt; * pwmConfig.initializationControl = kPWM_Initialize_LocalSync;&lt;BR /&gt; * pwmConfig.forceTrigger = kPWM_Force_Local;&lt;BR /&gt; * pwmConfig.reloadFrequency = kPWM_LoadEveryOportunity;&lt;BR /&gt; * pwmConfig.reloadLogic = kPWM_ReloadImmediate;&lt;BR /&gt; * pwmConfig.pairOperation = kPWM_Independent;&lt;BR /&gt; */&lt;BR /&gt; PWM_GetDefaultConfig(&amp;amp;pwmConfig);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Use full cycle reload */&lt;BR /&gt; pwmConfig.reloadLogic = kPWM_ReloadPwmFullCycle;&lt;BR /&gt; /* PWM A &amp;amp; PWM B form a complementary PWM pair */&lt;BR /&gt; pwmConfig.pairOperation = kPWM_ComplementaryPwmA;&lt;BR /&gt; pwmConfig.enableDebugMode = true;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 0 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_0, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 1 */&lt;BR /&gt; pwmConfig.clockSource = kPWM_Submodule0Clock;&lt;BR /&gt; pwmConfig.initializationControl = kPWM_Initialize_MasterSync;&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_1, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 2 the same way as submodule 1 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_2, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Initialize submodule 3 the same way as submodule 1 */&lt;BR /&gt; if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_3, &amp;amp;pwmConfig) == kStatus_Fail)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("PWM initialization failed\n");&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;BR /&gt; /* Call the init function with demo configuration */&lt;BR /&gt; PWM_DRV_Init3PhPwm();&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the load okay bit for all submodules to load registers from their buffer */&lt;BR /&gt; PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3, true);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Start the PWM generation from Submodules 0, 1 and 2 */&lt;BR /&gt; PWM_StartTimer(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3);&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;delay = 0x0fffU;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;while (1U)&lt;BR /&gt; {&lt;BR /&gt; for (i = 0U; i &amp;lt; delay; i++)&lt;BR /&gt; {&lt;BR /&gt; __ASM volatile("nop");&lt;BR /&gt; }&lt;BR /&gt; pwmVal = pwmVal + 4;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Reset the duty cycle percentage */&lt;BR /&gt; if (pwmVal &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; pwmVal = 4;&lt;BR /&gt; }&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Update duty cycles for all 3 PWM signals */&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmA, kPWM_SignedCenterAligned, pwmVal);&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_1, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 1));&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_2, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 2));&lt;BR /&gt; PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_3, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal &amp;gt;&amp;gt; 3));&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;/* Set the load okay bit for all submodules to load registers from their buffer */&lt;BR /&gt; PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2 | kPWM_Control_Module_3, true);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Nov 2019 16:01:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998323#M148056</guid>
      <dc:creator>mspenard603</dc:creator>
      <dc:date>2019-11-04T16:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT1060-EVK backlight control</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998324#M148057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;have you change the pin configuration in BOARD_InitPins()?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Nov 2019 09:17:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/998324#M148057</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2019-11-07T09:17:44Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT1060-EVK backlight control</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/2166177#M240632</link>
      <description>&lt;P&gt;Hi NXP,&lt;/P&gt;&lt;P&gt;I'm using RT1060 for our product. I am also having issues with&amp;nbsp;GPIO_B1_15 to generate PWM for backlight. I have some questions.&lt;/P&gt;&lt;P&gt;1- What XBARA is used with GPIO_B1_15_FLEXPWM4_PWMA03? 1, 2, 3?&lt;/P&gt;&lt;P&gt;2- Can you write for us a simple code to configure for properly? I'm trying one day but I cannot configure successfully although, the SDK example is working well on board.&lt;/P&gt;</description>
      <pubDate>Tue, 09 Sep 2025 22:30:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIMXRT1060-EVK-backlight-control/m-p/2166177#M240632</guid>
      <dc:creator>ToNato</dc:creator>
      <dc:date>2025-09-09T22:30:43Z</dc:date>
    </item>
  </channel>
</rss>

