rp2040-Si5351
Loading...
Searching...
No Matches
Si5351.hpp
1#pragma once
2
3#include "hardware/i2c.h"
4
5#include <array>
6
7class Si5351
8{
9private:
10 i2c_inst_t* I2C_PORT;
11 const uint8_t I2C_ADDR;
12
16 void disableSpreadSpectrum() const;
17
24 std::array<uint32_t, 3> dividerParameters(const uint a, const uint b, const uint c) const;
25
29 void enableFanout();
30
36 uint8_t readByte(uint8_t reg) const;
37
44 std::array<uint8_t, 9> registerContent(const uint8_t address, const std::array<uint32_t, 3> &p) const;
45
55 std::array<uint8_t, 9> registerContent(const uint8_t address, const uint a, const uint b, const uint c) const;
56
62 void setChrystalLoadCapacitance(uint8_t cLoad);
63
67 void waitAfterPowerOn();
68
69public:
75 Si5351(i2c_inst* i2cPort = i2c0, uint8_t i2cAddr = 0x60, const uint8_t cLoad = 10);
76
80 void disableInterrupts();
81
85 void disableOEBPin();
86
91 void resetPll(const char pll) const;
92
96 void resetPll() const;
97
107 void setClkControl(const uint8_t clkIndex, bool powerDown, bool intMode, uint8_t inputSource, bool invert, uint8_t outputSource, uint8_t strength);
108
117 void setMultisynth0to5parameters(const uint8_t multisynth, const uint32_t integer, const uint32_t num, const uint32_t denom, uint8_t outDiv = 0) const;
118
124 void setOutputDisableState(uint8_t clkIndex, const uint8_t disState);
125
131 void setOutput(const uint8_t clkIndex, const bool enabled);
132
136 void setOutputsOff();
137
144 void setPllInputSource(const uint8_t inputDivider, const uint8_t sourceB=0, const uint8_t sourceA=0);
145
153 void setPllParameters(const char pll, const uint32_t integer, const uint32_t numerator, const uint32_t denominator);
154};
void setPllParameters(const char pll, const uint32_t integer, const uint32_t numerator, const uint32_t denominator)
Sets the PLL dividers.
Definition Si5351.cpp:273
void setMultisynth0to5parameters(const uint8_t multisynth, const uint32_t integer, const uint32_t num, const uint32_t denom, uint8_t outDiv=0) const
Configures the multisynth divider 0, 1, 2, 3, 4 or 5.
Definition Si5351.cpp:165
void setPllInputSource(const uint8_t inputDivider, const uint8_t sourceB=0, const uint8_t sourceA=0)
Sets the clock input divider.
Definition Si5351.cpp:250
Si5351(i2c_inst *i2cPort=i2c0, uint8_t i2cAddr=0x60, const uint8_t cLoad=10)
Definition Si5351.cpp:84
void setOutputDisableState(uint8_t clkIndex, const uint8_t disState)
Determins the state of a disabled output.
Definition Si5351.cpp:187
void setClkControl(const uint8_t clkIndex, bool powerDown, bool intMode, uint8_t inputSource, bool invert, uint8_t outputSource, uint8_t strength)
Definition Si5351.cpp:137
void disableOEBPin()
Disables the OEB pin.
Definition Si5351.cpp:106
void resetPll() const
Resets PLLA and PLLB.
Definition Si5351.cpp:131
void setOutput(const uint8_t clkIndex, const bool enabled)
Enables or disables a single output driver.
Definition Si5351.cpp:213
void disableInterrupts()
Disables the interrupt pin.
Definition Si5351.cpp:100
void setOutputsOff()
Disables all output drivers and powers them down.
Definition Si5351.cpp:236