Skip to content

Commit 4142de8

Browse files
committed
tests: espressif: rtc_clk: update to keep nominal tests usage
Update the test case to use the nominal clock_subsys and print calibration deviation. Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
1 parent ee34c5f commit 4142de8

File tree

1 file changed

+46
-14
lines changed

1 file changed

+46
-14
lines changed

tests/boards/espressif/rtc_clk/src/rtc_clk_test.c

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -141,27 +141,43 @@ ZTEST(rtc_clk, test_rtc_fast_src)
141141
{
142142
struct esp32_clock_config clk_cfg = {0};
143143
int ret = 0;
144-
uint32_t cpu_rate = 0;
144+
uint32_t nominal_rate = 0;
145+
uint32_t calibrated_rate = 0;
145146

146147
clk_cfg.cpu.xtal_freq = (DT_PROP(DT_INST(0, DT_CPU_COMPAT), xtal_freq) / MHZ(1));
147148

148149
for (uint8_t i = 0; i < ARRAY_SIZE(rtc_rtc_fast_clk_src); i++) {
149150
clk_cfg.rtc.rtc_fast_clock_src = rtc_rtc_fast_clk_src[i];
150151

151-
TC_PRINT("Testing RTC FAST CLK freq: %d MHz\n", rtc_rtc_fast_clk_src_freq_mhz[i]);
152+
TC_PRINT("Testing RTC FAST CLK source: %d\n", rtc_rtc_fast_clk_src_freq_mhz[i]);
152153

153154
ret = clock_control_configure(
154155
clk_dev, (clock_control_subsys_t)ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST,
155156
&clk_cfg);
156-
zassert_false(ret, "Failed to set CPU clock source");
157+
zassert_false(ret, "Failed to set RTC fast clock source");
157158

159+
/* Verify nominal frequency matches expected value for selected source */
160+
ret = clock_control_get_rate(
161+
clk_dev,
162+
(clock_control_subsys_t)ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST_NOMINAL,
163+
&nominal_rate);
164+
zassert_false(ret, "Failed to get RTC_FAST nominal clock rate");
165+
zassert_equal(nominal_rate, rtc_rtc_fast_clk_src_freq_mhz[i],
166+
"Nominal rate mismatch (%d != %d)", nominal_rate,
167+
rtc_rtc_fast_clk_src_freq_mhz[i]);
168+
169+
/* Also retrieve calibrated value for informational purposes */
158170
ret = clock_control_get_rate(
159171
clk_dev, (clock_control_subsys_t)ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST,
160-
&cpu_rate);
161-
zassert_false(ret, "Failed to get RTC_FAST clock rate");
162-
zassert_equal(cpu_rate, rtc_rtc_fast_clk_src_freq_mhz[i],
163-
"CPU clock rate is not equal to configured frequency (%d != %d)",
164-
cpu_rate, rtc_rtc_fast_clk_src_freq_mhz[i]);
172+
&calibrated_rate);
173+
zassert_false(ret, "Failed to get RTC_FAST calibrated clock rate");
174+
175+
int32_t diff = (int32_t)calibrated_rate - (int32_t)nominal_rate;
176+
int32_t deviation_tenths = (diff * 1000) / (int32_t)nominal_rate;
177+
178+
TC_PRINT("Nominal: %d Hz, Calibrated: %d Hz (deviation: %d.%d%%)\n", nominal_rate,
179+
calibrated_rate, deviation_tenths / 10,
180+
(deviation_tenths < 0 ? -deviation_tenths : deviation_tenths) % 10);
165181
}
166182
}
167183

@@ -199,7 +215,8 @@ ZTEST(rtc_clk, test_rtc_slow_src)
199215
{
200216
struct esp32_clock_config clk_cfg = {0};
201217
int ret = 0;
202-
uint32_t cpu_rate = 0;
218+
uint32_t nominal_rate = 0;
219+
uint32_t calibrated_rate = 0;
203220

204221
clk_cfg.cpu.xtal_freq = (DT_PROP(DT_INST(0, DT_CPU_COMPAT), xtal_freq) / MHZ(1));
205222

@@ -213,13 +230,28 @@ ZTEST(rtc_clk, test_rtc_slow_src)
213230
&clk_cfg);
214231
zassert_false(ret, "Failed to set CPU clock source");
215232

233+
/* Verify nominal frequency matches expected value for selected source */
234+
ret = clock_control_get_rate(
235+
clk_dev,
236+
(clock_control_subsys_t)ESP32_CLOCK_CONTROL_SUBSYS_RTC_SLOW_NOMINAL,
237+
&nominal_rate);
238+
zassert_false(ret, "Failed to get RTC_SLOW nominal clock rate");
239+
zassert_equal(nominal_rate, rtc_rtc_slow_clk_src_freq[i],
240+
"Nominal rate mismatch (%d != %d)", nominal_rate,
241+
rtc_rtc_slow_clk_src_freq[i]);
242+
243+
/* Also retrieve calibrated value for informational purposes */
216244
ret = clock_control_get_rate(
217245
clk_dev, (clock_control_subsys_t)ESP32_CLOCK_CONTROL_SUBSYS_RTC_SLOW,
218-
&cpu_rate);
219-
zassert_false(ret, "Failed to get RTC_SLOW clock rate");
220-
zassert_equal(cpu_rate, rtc_rtc_slow_clk_src_freq[i],
221-
"CPU clock rate is not equal to configured frequency (%d != %d)",
222-
cpu_rate, rtc_rtc_slow_clk_src_freq[i]);
246+
&calibrated_rate);
247+
zassert_false(ret, "Failed to get RTC_SLOW calibrated clock rate");
248+
249+
int32_t diff = (int32_t)calibrated_rate - (int32_t)nominal_rate;
250+
int32_t deviation_tenths = (diff * 1000) / (int32_t)nominal_rate;
251+
252+
TC_PRINT("Nominal: %d Hz, Calibrated: %d Hz (deviation: %d.%d%%)\n", nominal_rate,
253+
calibrated_rate, deviation_tenths / 10,
254+
(deviation_tenths < 0 ? -deviation_tenths : deviation_tenths) % 10);
223255
}
224256
}
225257

0 commit comments

Comments
 (0)