I need to genertae pwm signal 4 mhz using nrf54l15 .

I need to generate PWM siganl around 4 mhz frequency but i did not get proper pwm signal and i got only millivolt range voltage    this issue cuase i did not get proper audio , my bclk is 256khz mclk 8khz , actually mclk us issue like above , I have doubt in here it is when i configure 4 mhz we didnt get proper pwm shape why ?? I am change 1 mhz that time good pwm shape is got

Parents
  • int pwm_4mhz_configure(void)
    {
        int ret;
        uint32_t period_ns = PWM_PERIOD_NS;
        uint32_t pulse_ns = PWM_PULSE_NS;

        if (!pwm_is_ready_dt(&mclk))
    •     {
      int pwm_4mhz_configure(void)
      {
          int ret;
          uint32_t period_ns = PWM_PERIOD_NS;
          uint32_t pulse_ns = PWM_PULSE_NS;
      
          if (!pwm_is_ready_dt(&mclk))
          {
             // printk("PWM device not ready: %s\n", DT_ALIAS(mclk));
              return -ENODEV;
          }
      
          // Set 4 MHz clock: period = 250 ns, 50% duty cycle = 125 ns
        //  ret = pwm_set_dt(&mclk, PWM_HZ(4000000), PWM_HZ(4000000) / 2);
          ret=  pwm_set_dt(&mclk,period_ns,pulse_ns);
          if (ret != 0)
          {
              printk("Failed to configure PWM: ret=%d\n", ret);
              return ret;
          }
      
          printk("PWM configured: period=%dns, pulse=%dns\n", period_ns, pulse_ns);
      
          return ret;
      }
      
           // printk("PWM device not ready: %s\n", DT_ALIAS(mclk));
            return -ENODEV;
        }

        // Set 4 MHz clock: period = 250 ns, 50% duty cycle = 125 ns
      //  ret = pwm_set_dt(&mclk, PWM_HZ(4000000), PWM_HZ(4000000) / 2);
        ret=  pwm_set_dt(&mclk,period_ns,pulse_ns);
        if (ret != 0)
        {
            printk("Failed to configure PWM: ret=%d\n", ret);
            return ret;
        }

        printk("PWM configured: period=%dns, pulse=%dns\n", period_ns, pulse_ns);

        return ret;
    }
     use this 
Reply
  • int pwm_4mhz_configure(void)
    {
        int ret;
        uint32_t period_ns = PWM_PERIOD_NS;
        uint32_t pulse_ns = PWM_PULSE_NS;

        if (!pwm_is_ready_dt(&mclk))
    •     {
      int pwm_4mhz_configure(void)
      {
          int ret;
          uint32_t period_ns = PWM_PERIOD_NS;
          uint32_t pulse_ns = PWM_PULSE_NS;
      
          if (!pwm_is_ready_dt(&mclk))
          {
             // printk("PWM device not ready: %s\n", DT_ALIAS(mclk));
              return -ENODEV;
          }
      
          // Set 4 MHz clock: period = 250 ns, 50% duty cycle = 125 ns
        //  ret = pwm_set_dt(&mclk, PWM_HZ(4000000), PWM_HZ(4000000) / 2);
          ret=  pwm_set_dt(&mclk,period_ns,pulse_ns);
          if (ret != 0)
          {
              printk("Failed to configure PWM: ret=%d\n", ret);
              return ret;
          }
      
          printk("PWM configured: period=%dns, pulse=%dns\n", period_ns, pulse_ns);
      
          return ret;
      }
      
           // printk("PWM device not ready: %s\n", DT_ALIAS(mclk));
            return -ENODEV;
        }

        // Set 4 MHz clock: period = 250 ns, 50% duty cycle = 125 ns
      //  ret = pwm_set_dt(&mclk, PWM_HZ(4000000), PWM_HZ(4000000) / 2);
        ret=  pwm_set_dt(&mclk,period_ns,pulse_ns);
        if (ret != 0)
        {
            printk("Failed to configure PWM: ret=%d\n", ret);
            return ret;
        }

        printk("PWM configured: period=%dns, pulse=%dns\n", period_ns, pulse_ns);

        return ret;
    }
     use this 
Children
No Data
Related