From 662a2cb8fa1454a8d8adb0551da05724cbf524ea Mon Sep 17 00:00:00 2001 From: Gareth McMullin Date: Mon, 20 May 2013 09:50:18 +1200 Subject: [PATCH] sam: Add convenience function for clock setup using internal 4MHz. --- include/libopencm3/sam/pmc.h | 1 + lib/sam/common/pmc.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/libopencm3/sam/pmc.h b/include/libopencm3/sam/pmc.h index 5587a238..1c6a827a 100644 --- a/include/libopencm3/sam/pmc.h +++ b/include/libopencm3/sam/pmc.h @@ -140,6 +140,7 @@ void pmc_plla_config(u8 mul, u8 div); void pmc_peripheral_clock_enable(u8 pid); void pmc_peripheral_clock_disable(u8 pid); void pmc_clock_setup_in_xtal_12mhz_out_84mhz(void); +void pmc_clock_setup_in_rc_4mhz_out_84mhz(void); #endif diff --git a/lib/sam/common/pmc.c b/lib/sam/common/pmc.c index 97f1be67..01b4fc4c 100644 --- a/lib/sam/common/pmc.c +++ b/lib/sam/common/pmc.c @@ -79,3 +79,17 @@ void pmc_clock_setup_in_xtal_12mhz_out_84mhz(void) pmc_mck_frequency = 84000000; } +void pmc_clock_setup_in_rc_4mhz_out_84mhz(void) +{ + eefc_set_latency(4); + + /* Select as main oscillator */ + CKGR_MOR = CKGR_MOR_KEY | + (CKGR_MOR & ~(CKGR_MOR_MOSCSEL | CKGR_MOR_MOSCRCF_MASK)); + /* Multiply by 21 for 84MHz */ + pmc_plla_config(21, 1); + pmc_mck_set_source(MCK_SRC_PLLA); + + pmc_mck_frequency = 84000000; +} +