2929#include " mbed.h"
3030#include " MbedTester.h"
3131#include " pinmap.h"
32+ #include " hal/static_pinmap.h"
3233#include " test_utils.h"
3334#include " pwm_fpga_test.h"
3435
3536using namespace utest ::v1;
3637
37-
3838#define pwm_debug_printf (...)
3939
4040typedef enum {
@@ -74,7 +74,7 @@ void fpga_pwm_init_free(PinName pin)
7474}
7575
7676
77- void fpga_pwm_period_fill_test (PinName pin, uint32_t period_ms, uint32_t fill_prc, pwm_api_test_t api_test)
77+ void fpga_pwm_period_fill_test (PinName pin, uint32_t period_ms, uint32_t fill_prc, pwm_api_test_t api_test, bool init_direct )
7878{
7979 pwm_debug_printf (" PWM test on pin = %s (%i)\r\n " , pinmap_ff_default_pin_to_string (pin), pin);
8080 pwm_debug_printf (" Testing period = %lu ms, duty-cycle = %lu %%\r\n " , period_ms, fill_prc);
@@ -86,7 +86,12 @@ void fpga_pwm_period_fill_test(PinName pin, uint32_t period_ms, uint32_t fill_pr
8686
8787 pwmout_t pwm_out;
8888
89- pwmout_init (&pwm_out, pin);
89+ if (init_direct) {
90+ const PinMap pinmap = get_pwm_pinmap (pin);
91+ pwmout_init_direct (&pwm_out, &pinmap);
92+ } else {
93+ pwmout_init (&pwm_out, pin);
94+ }
9095
9196 core_util_critical_section_enter ();
9297
@@ -156,10 +161,10 @@ void fpga_pwm_period_fill_test(PinName pin, uint32_t period_ms, uint32_t fill_pr
156161 pwmout_free (&pwm_out);
157162}
158163
159- template <uint32_t period_ms, uint32_t fill_prc, pwm_api_test_t api_test>
164+ template <uint32_t period_ms, uint32_t fill_prc, pwm_api_test_t api_test, bool init_direct >
160165void fpga_pwm_period_fill_test (PinName pin)
161166{
162- fpga_pwm_period_fill_test (pin, period_ms, fill_prc, api_test);
167+ fpga_pwm_period_fill_test (pin, period_ms, fill_prc, api_test, init_direct );
163168}
164169
165170
@@ -168,48 +173,49 @@ Case cases[] = {
168173 Case (" PWM - init/free test" , all_ports<PWMPort, DefaultFormFactor, fpga_pwm_init_free>),
169174
170175 // This will be run for single pin
171- Case (" PWM - period: 10 ms, fill: 10%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_WRITE> >),
172-
173- Case (" PWM - period: 10 ms, fill: 10%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_MS_WRITE> >),
174- Case (" PWM - period: 10 ms, fill: 10%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_US_WRITE> >),
175- Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH> >),
176- Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH_MS> >),
177- Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH_US> >),
178-
179- Case (" PWM - period: 10 ms, fill: 50%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_WRITE> >),
180- Case (" PWM - period: 10 ms, fill: 50%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_MS_WRITE> >),
181- Case (" PWM - period: 10 ms, fill: 50%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_US_WRITE> >),
182- Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH> >),
183- Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH_MS> >),
184- Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH_US> >),
185-
186- Case (" PWM - period: 10 ms, fill: 90%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_WRITE> >),
187- Case (" PWM - period: 10 ms, fill: 90%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_MS_WRITE> >),
188- Case (" PWM - period: 10 ms, fill: 90%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_US_WRITE> >),
189- Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH> >),
190- Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH_MS> >),
191- Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH_US> >),
192-
193- Case (" PWM - period: 30 ms, fill: 10%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_WRITE> >),
194- Case (" PWM - period: 30 ms, fill: 10%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_MS_WRITE> >),
195- Case (" PWM - period: 30 ms, fill: 10%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_US_WRITE> >),
196- Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH> >),
197- Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH_MS> >),
198- Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH_US> >),
199-
200- Case (" PWM - period: 30 ms, fill: 50%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_WRITE> >),
201- Case (" PWM - period: 30 ms, fill: 50%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_MS_WRITE> >),
202- Case (" PWM - period: 30 ms, fill: 50%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_US_WRITE> >),
203- Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH> >),
204- Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH_MS> >),
205- Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH_US> >),
206-
207- Case (" PWM - period: 30 ms, fill: 90%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_WRITE> >),
208- Case (" PWM - period: 30 ms, fill: 90%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_MS_WRITE> >),
209- Case (" PWM - period: 30 ms, fill: 90%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_US_WRITE> >),
210- Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH> >),
211- Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH_MS> >),
212- Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH_US> >)
176+ Case (" PWM - period: 10 ms, fill: 10%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_WRITE, false > >),
177+ Case (" PWM (direct init) - period: 10 ms, fill: 10%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_WRITE, true > >),
178+
179+ Case (" PWM - period: 10 ms, fill: 10%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_MS_WRITE, false > >),
180+ Case (" PWM - period: 10 ms, fill: 10%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_US_WRITE, false > >),
181+ Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH, false > >),
182+ Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH_MS, false > >),
183+ Case (" PWM - period: 10 ms, fill: 10%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 10 , PERIOD_PULSEWIDTH_US, false > >),
184+
185+ Case (" PWM - period: 10 ms, fill: 50%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_WRITE, false > >),
186+ Case (" PWM - period: 10 ms, fill: 50%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_MS_WRITE, false > >),
187+ Case (" PWM - period: 10 ms, fill: 50%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_US_WRITE, false > >),
188+ Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH, false > >),
189+ Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH_MS, false > >),
190+ Case (" PWM - period: 10 ms, fill: 50%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 50 , PERIOD_PULSEWIDTH_US, false > >),
191+
192+ Case (" PWM - period: 10 ms, fill: 90%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_WRITE, false > >),
193+ Case (" PWM - period: 10 ms, fill: 90%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_MS_WRITE, false > >),
194+ Case (" PWM - period: 10 ms, fill: 90%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_US_WRITE, false > >),
195+ Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH, false > >),
196+ Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH_MS, false > >),
197+ Case (" PWM - period: 10 ms, fill: 90%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<10 , 90 , PERIOD_PULSEWIDTH_US, false > >),
198+
199+ Case (" PWM - period: 30 ms, fill: 10%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_WRITE, false > >),
200+ Case (" PWM - period: 30 ms, fill: 10%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_MS_WRITE, false > >),
201+ Case (" PWM - period: 30 ms, fill: 10%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_US_WRITE, false > >),
202+ Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH, false > >),
203+ Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH_MS, false > >),
204+ Case (" PWM - period: 30 ms, fill: 10%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 10 , PERIOD_PULSEWIDTH_US, false > >),
205+
206+ Case (" PWM - period: 30 ms, fill: 50%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_WRITE, false > >),
207+ Case (" PWM - period: 30 ms, fill: 50%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_MS_WRITE, false > >),
208+ Case (" PWM - period: 30 ms, fill: 50%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_US_WRITE, false > >),
209+ Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH, false > >),
210+ Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH_MS, false > >),
211+ Case (" PWM - period: 30 ms, fill: 50%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 50 , PERIOD_PULSEWIDTH_US, false > >),
212+
213+ Case (" PWM - period: 30 ms, fill: 90%, api: period/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_WRITE, false > >),
214+ Case (" PWM - period: 30 ms, fill: 90%, api: period_ms/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_MS_WRITE, false > >),
215+ Case (" PWM - period: 30 ms, fill: 90%, api: period_us/write" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_US_WRITE, false > >),
216+ Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH, false > >),
217+ Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width_ms" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH_MS, false > >),
218+ Case (" PWM - period: 30 ms, fill: 90%, api: period/pulse_width_us" , one_peripheral<PWMPort, DefaultFormFactor, fpga_pwm_period_fill_test<30 , 90 , PERIOD_PULSEWIDTH_US, false > >)
213219};
214220
215221utest::v1::status_t greentea_test_setup (const size_t number_of_cases)
0 commit comments