Skip to content

Latest commit

 

History

History
125 lines (85 loc) · 4.31 KB

File metadata and controls

125 lines (85 loc) · 4.31 KB

Sysclock

System clock driver support for hardware abstraction layer.

This driver manage all clock providers.

Minimalist code

// init sysclock
sysclock_setClock(120000000); // set clock to 120MHz

uint32_t timer_freq = sysclock_periphFreq();

API

Global clock to set performance

sysclock_setClock

int sysclock_setClock(uint32_t fosc);

Sets the system clock of the CPU, the system clock may be different of CPU

Peripheral clocks and tree clocks

sysclock_periphFreq

uint32_t sysclock_periphFreq(SYSCLOCK_CLOCK busClock);

Gets the actual frequency on a particular peripheral bus clock

sysclock_setClockDiv

int sysclock_setClockDiv(SYSCLOCK_CLOCK busClock, uint16_t div);

Change the divisor of the busClock given as argument

Source clock

sysclock_sourceFreq

int32_t sysclock_sourceFreq(SYSCLOCK_SOURCE source);

Return the actual frequency of the clock source

sysclock_setSourceFreq

int sysclock_setSourceFreq(SYSCLOCK_SOURCE source, uint32_t freq);

Change a frequency of a source if it can be modified

sysclock_source

SYSCLOCK_SOURCE sysclock_source();

Return the actual clock source for system clock

sysclock_switchSourceTo

int sysclock_switchSourceTo(SYSCLOCK_SOURCE source);

Switch the source clock of sysclock to another one and wait for the change effective

Development status

  • Works well on all dsPICEP

TODO

  • Clarify API

Supported architectures

Header file : sysclock.h

Family Implementation file
pic24f sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
pic24fj sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
pic24ep sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
pic24hj sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
dspic30f sysclock_dspic30f.c / sysclock_dspic30f.h
dspic33fj sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
dspic33ep sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
dspic33ev sysclock_pic24_dspic33.c / sysclock_pic24_dspic33.h
dspic33ch sysclock_dspic33c.c / sysclock_dspic33c.h
dspic33ck sysclock_dspic33c.c / sysclock_dspic33c.h
pic32mm sysclock_pic32mm.c / sysclock_pic32mm.h
pic32mk sysclock_pic32mz_mk.c / sysclock_pic32mz_mk.h
pic32mx sysclock_pic32mx.c / sysclock_pic32mx.h
pic32mzec sysclock_pic32mz_mk.c / sysclock_pic32mz_mk.h
pic32mzef sysclock_pic32mz_mk.c / sysclock_pic32mz_mk.h
pic32mzda sysclock_pic32mz_mk.c / sysclock_pic32mz_mk.h

Device specific

FRC OSCTUNE

  • dsPIC33EPxxxGS20X/50X/70X/80X : 7.37 +/- 0.047%
  • dsPIC33EPxxxGM00X/10X : 7.3728 +/- 0.048%
  • dsPIC33EPxxxGM30X/60X/70X : 7.3728 +/- 0.047%
  • PIC24EP/dsPIC33EP GP/MC20X/50X : 7.37 +/- 0.047%
  • PIC24EP/dsPIC33EP GP/MC/MU/GU80X : 7.37 +/- 0.375%
  • dsPIC33FJxxxGS40X/60X : 7.37 +/- 0.0938%
  • dsPIC33FJxxxGP/MC10X : 7.37 +/- 0.047%
  • dsPIC33FJxxxGS00X/10X/20X : 7.37 +/- 0.375%
  • dsPIC33FJxxxGP/MC : 7.37 +/- 0.375%
  • PIC24F/FJ: 8 +/- 0.05%
  • PIC24HJ: 7.37 +/- 0.375%