Remove prediv*2, set loadper=1 and allow 1 divider to extent frequency range
This commit is contained in:
parent
e608ff8936
commit
9e757ea566
3 changed files with 429 additions and 416 deletions
764
src/gpio.cpp
764
src/gpio.cpp
File diff suppressed because it is too large
Load diff
|
@ -44,9 +44,10 @@ phasedmasync::phasedmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Number
|
||||||
fprintf(stderr,"PWM Mult %d Frac %d Div %d\n",IntMultiply,FracMultiply,clkgpio::PllFixDivider);
|
fprintf(stderr,"PWM Mult %d Frac %d Div %d\n",IntMultiply,FracMultiply,clkgpio::PllFixDivider);
|
||||||
|
|
||||||
|
|
||||||
pwmgpio::clk.gpioreg[PWMCLK_DIV] = 0x5A000000 | ((clkgpio::PllFixDivider)<<12); // PWM clock input divider
|
pwmgpio::clk.gpioreg[PWMCLK_DIV] = 0x5A000000 | ((clkgpio::PllFixDivider)<<12) |pwmgpio::pllnumber; // PWM clock input divider
|
||||||
usleep(100);
|
usleep(100);
|
||||||
pwmgpio::clk.gpioreg[PWMCLK_CNTL]= 0x5A000000 | (pwmgpio::Mash << 9) | pwmgpio::pllnumber|(1 << 4) ; //4 is START CLK
|
|
||||||
|
pwmgpio::clk.gpioreg[PWMCLK_CNTL]= 0x5A000000 | (pwmgpio::Mash << 9) | ((clkgpio::PllFixDivider)<<12)| pwmgpio::pllnumber|(1 << 4) ; //4 is START CLK
|
||||||
usleep(100);
|
usleep(100);
|
||||||
pwmgpio::SetPrediv(32); //SetMode should be called before
|
pwmgpio::SetPrediv(32); //SetMode should be called before
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,6 @@ serialdmasync::serialdmasync(uint32_t SampleRate,int Channel,uint32_t FifoSize,b
|
||||||
SetDmaAlgo();
|
SetDmaAlgo();
|
||||||
|
|
||||||
|
|
||||||
// Note : Spurious are at +/-(19.2MHZ/2^20)*Div*N : (N=1,2,3...) So we need to have a big div to spurious away BUT
|
|
||||||
// Spurious are ALSO at +/-(19.2MHZ/2^20)*(2^20-Div)*N
|
|
||||||
// Max spurious avoid is to be in the center ! Theory shoud be that spurious are set away at 19.2/2= 9.6Mhz ! But need to get account of div of PLLClock
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
serialdmasync::~serialdmasync()
|
serialdmasync::~serialdmasync()
|
||||||
|
|
Loading…
Reference in a new issue