Skip to content

Commit d9338aa

Browse files
robert-hhdpgeorge
authored andcommitted
samd: Change the symbol names for the peripheral clocks.
From APB_FREQ to DFLL48M_FREQ, and from apb_freq to peripheral_freq.
1 parent e9a7631 commit d9338aa

File tree

9 files changed

+19
-18
lines changed

9 files changed

+19
-18
lines changed

ports/samd/clock_config.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
void init_clocks(uint32_t cpu_freq);
3030
void set_cpu_freq(uint32_t cpu_freq);
3131
uint32_t get_cpu_freq(void);
32-
uint32_t get_apb_freq(void);
32+
uint32_t get_peripheral_freq(void);
3333
void check_usb_recovery_mode(void);
3434
void enable_sercom_clock(int id);

ports/samd/machine_i2c.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ mp_obj_t machine_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n
185185
// baud = peripheral_freq / (2 * baudrate) - 5 - (rise_time * peripheral_freq) / 2
186186
// Just set the minimal configuration for standard and fast mode.
187187
// Set Baud. Assume ~300ns rise time. Maybe set later by a keyword argument.
188-
i2c->I2CM.BAUD.reg = get_apb_freq() / (2 * self->freq) - 5 - (get_apb_freq() / 1000000) * RISETIME_NS / 2000;
188+
i2c->I2CM.BAUD.reg = get_peripheral_freq() / (2 * self->freq) - 5 - (get_peripheral_freq() / 1000000) * RISETIME_NS / 2000;
189189

190190
// Enable interrupts
191191
sercom_register_irq(self->id, &common_i2c_irq_handler);

ports/samd/machine_pwm.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "py/runtime.h"
2929
#include "py/mphal.h"
3030
#include "modmachine.h"
31+
#include "clock_config.h"
3132

3233
#include "sam.h"
3334
#include "pin_af.h"
@@ -50,7 +51,7 @@ typedef struct _machine_pwm_obj_t {
5051
#define PWM_NOT_INIT (0)
5152
#define PWM_CLK_READY (1)
5253
#define PWM_TCC_ENABLED (2)
53-
#define PWM_MASTER_CLK (48000000)
54+
#define PWM_MASTER_CLK (get_peripheral_freq())
5455
#define PWM_FULL_SCALE (65536)
5556

5657
static Tcc *tcc_instance[] = TCC_INSTS;

ports/samd/machine_spi.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ STATIC void machine_spi_init(mp_obj_base_t *self_in, size_t n_args, const mp_obj
206206
spi->SPI.CTRLC.reg = 1; // 1 clock cycle character spacing
207207
#endif
208208

209-
// SPI is driven by the clock of GCLK Generator 2, freq in bus_freq
209+
// SPI is driven by the clock of GCLK Generator 2, freq by get_peripheral_freq()
210210
// baud = bus_freq / (2 * baudrate) - 1
211-
uint32_t baud = get_apb_freq() / (2 * self->baudrate) - 1;
211+
uint32_t baud = get_peripheral_freq() / (2 * self->baudrate) - 1;
212212
spi->SPI.BAUD.reg = baud; // Set Baud
213213

214214
// Enable RXC interrupt only if miso is defined

ports/samd/machine_uart.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ STATIC mp_obj_t machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args
276276
while (uart->USART.SYNCBUSY.bit.CTRLB) {
277277
}
278278

279-
// USART is driven by the clock of GCLK Generator 2, freq by get_apb_freq()
279+
// USART is driven by the clock of GCLK Generator 2, freq by get_peripheral_freq()
280280
// baud rate; 65536 * (1 - 16 * 115200/bus_freq)
281-
uint32_t baud = 65536 - ((uint64_t)(65536 * 16) * self->baudrate + get_apb_freq() / 2) / get_apb_freq();
281+
uint32_t baud = 65536 - ((uint64_t)(65536 * 16) * self->baudrate + get_peripheral_freq() / 2) / get_peripheral_freq();
282282
uart->USART.BAUD.bit.BAUD = baud; // Set Baud
283283

284284
sercom_register_irq(self->id, &common_uart_irq_handler);

ports/samd/mcu/samd21/clock_config.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "samd_soc.h"
3434

3535
static uint32_t cpu_freq = CPU_FREQ;
36-
static uint32_t apb_freq = APB_FREQ;
36+
static uint32_t peripheral_freq = DFLL48M_FREQ;
3737
static uint32_t dfll48m_calibration;
3838

3939
int sercom_gclk_id[] = {
@@ -46,8 +46,8 @@ uint32_t get_cpu_freq(void) {
4646
return cpu_freq;
4747
}
4848

49-
uint32_t get_apb_freq(void) {
50-
return apb_freq;
49+
uint32_t get_peripheral_freq(void) {
50+
return peripheral_freq;
5151
}
5252

5353
void set_cpu_freq(uint32_t cpu_freq_arg) {

ports/samd/mcu/samd21/mpconfigmcu.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#define MICROPY_HW_UART_TXBUF (1)
1717

1818
#define CPU_FREQ (48000000)
19-
#define APB_FREQ (48000000)
19+
#define DFLL48M_FREQ (48000000)
2020

2121
#define IRQ_PRI_PENDSV ((1 << __NVIC_PRIO_BITS) - 1)
2222

ports/samd/mcu/samd51/clock_config.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "samd_soc.h"
3434

3535
static uint32_t cpu_freq = CPU_FREQ;
36-
static uint32_t apb_freq = APB_FREQ;
36+
static uint32_t peripheral_freq = DFLL48M_FREQ;
3737
static uint32_t dfll48m_calibration;
3838

3939
int sercom_gclk_id[] = {
@@ -49,8 +49,8 @@ uint32_t get_cpu_freq(void) {
4949
return cpu_freq;
5050
}
5151

52-
uint32_t get_apb_freq(void) {
53-
return apb_freq;
52+
uint32_t get_peripheral_freq(void) {
53+
return peripheral_freq;
5454
}
5555

5656
void set_cpu_freq(uint32_t cpu_freq_arg) {
@@ -181,7 +181,7 @@ void init_clocks(uint32_t cpu_freq) {
181181
while (GCLK->PCHCTRL[0].bit.CHEN == 0) {
182182
}
183183
// Step 2: Set the multiplication values. The offset of 16384 to the freq is for rounding.
184-
OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL((APB_FREQ + DPLLx_REF_FREQ / 2) / DPLLx_REF_FREQ) |
184+
OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL((DFLL48M_FREQ + DPLLx_REF_FREQ / 2) / DPLLx_REF_FREQ) |
185185
OSCCTRL_DFLLMUL_FSTEP(1) | OSCCTRL_DFLLMUL_CSTEP(1);
186186
while (OSCCTRL->DFLLSYNC.bit.DFLLMUL == 1) {
187187
}
@@ -200,7 +200,7 @@ void init_clocks(uint32_t cpu_freq) {
200200
#else // MICROPY_HW_XOSC32K
201201

202202
// Derive GCLK1 from DFLL48M at DPLL0_REF_FREQ as defined in mpconfigboard.h (e.g. 32768 Hz)
203-
GCLK->GENCTRL[1].reg = ((APB_FREQ + DPLLx_REF_FREQ / 2) / DPLLx_REF_FREQ) << GCLK_GENCTRL_DIV_Pos
203+
GCLK->GENCTRL[1].reg = ((DFLL48M_FREQ + DPLLx_REF_FREQ / 2) / DPLLx_REF_FREQ) << GCLK_GENCTRL_DIV_Pos
204204
| GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_DFLL;
205205
while (GCLK->SYNCBUSY.bit.GENCTRL1) {
206206
}
@@ -236,7 +236,7 @@ void init_clocks(uint32_t cpu_freq) {
236236

237237
set_cpu_freq(cpu_freq);
238238

239-
apb_freq = APB_FREQ; // To be changed if CPU_FREQ < 48M
239+
peripheral_freq = DFLL48M_FREQ; // To be changed if CPU_FREQ < 48M
240240

241241
// Setup GCLK2 for DPLL1 output (48 MHz)
242242
GCLK->GENCTRL[2].reg = GCLK_GENCTRL_DIV(1) | GCLK_GENCTRL_RUNSTDBY | GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_DFLL;

ports/samd/mcu/samd51/mpconfigmcu.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ unsigned long trng_random_u32(void);
2929
#define MICROPY_HW_UART_TXBUF (1)
3030

3131
#define CPU_FREQ (120000000)
32-
#define APB_FREQ (48000000)
32+
#define DFLL48M_FREQ (48000000)
3333
#define DPLLx_REF_FREQ (32768)
3434

3535
#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003)

0 commit comments

Comments
 (0)