kopia lustrzana https://github.com/OpenRTX/OpenRTX
Began refactoring of HR-C5000 driver
rodzic
46f68ebca6
commit
88ea167804
|
@ -106,29 +106,37 @@ void C5000_init()
|
||||||
gpio_setMode(DMR_SLEEP, OUTPUT);
|
gpio_setMode(DMR_SLEEP, OUTPUT);
|
||||||
|
|
||||||
gpio_setPin(DMR_CS);
|
gpio_setPin(DMR_CS);
|
||||||
gpio_setPin(DMR_SLEEP);
|
gpio_clearPin(DMR_SLEEP); /* Exit from sleep pulling down DMR_SLEEP */
|
||||||
|
|
||||||
|
_writeReg(0x00, 0x0A, 0x80); /* Internal clock connected to crystal */
|
||||||
|
_writeReg(0x00, 0x0B, 0x28); /* PLL M register (multiplier) */
|
||||||
|
_writeReg(0x00, 0x0C, 0x33); /* PLL input and output dividers */
|
||||||
OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
||||||
gpio_clearPin(DMR_SLEEP);
|
_writeReg(0x00, 0x0A, 0x00); /* Internal clock connected to PLL */
|
||||||
C5000_dmrMode();
|
_writeReg(0x00, 0xBA, 0x22); /* Built-in codec clock freq. (HR_C6000) */
|
||||||
OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
_writeReg(0x00, 0xBB, 0x11); /* Output clock operating freq. (HR_C6000) */
|
||||||
C5000_fmMode();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void C5000_terminate()
|
void C5000_terminate()
|
||||||
{
|
{
|
||||||
|
gpio_setPin(DMR_SLEEP);
|
||||||
|
gpio_setMode(DMR_CS, INPUT);
|
||||||
|
gpio_setMode(DMR_CLK, INPUT);
|
||||||
|
gpio_setMode(DMR_MOSI, INPUT);
|
||||||
|
gpio_setMode(DMR_MISO, INPUT);
|
||||||
|
gpio_setMode(DMR_SLEEP, INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C5000_dmrMode()
|
void C5000_dmrMode()
|
||||||
{
|
{
|
||||||
_writeReg(0x00, 0x0A, 0x80);
|
// _writeReg(0x00, 0x0A, 0x80);
|
||||||
_writeReg(0x00, 0x0B, 0x28);
|
// _writeReg(0x00, 0x0B, 0x28);
|
||||||
_writeReg(0x00, 0x0C, 0x33);
|
// _writeReg(0x00, 0x0C, 0x33);
|
||||||
OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
// OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
||||||
_writeReg(0x00, 0x0A, 0x00);
|
// _writeReg(0x00, 0x0A, 0x00);
|
||||||
_writeReg(0x00, 0xB9, 0x32);
|
_writeReg(0x00, 0xB9, 0x32);
|
||||||
_writeReg(0x00, 0xBA, 0x22);
|
// _writeReg(0x00, 0xBA, 0x22);
|
||||||
_writeReg(0x00, 0xBB, 0x11);
|
// _writeReg(0x00, 0xBB, 0x11);
|
||||||
_writeReg(0x00, 0x10, 0x4F);
|
_writeReg(0x00, 0x10, 0x4F);
|
||||||
_writeReg(0x00, 0x40, 0x43);
|
_writeReg(0x00, 0x40, 0x43);
|
||||||
_writeReg(0x00, 0x41, 0x40);
|
_writeReg(0x00, 0x41, 0x40);
|
||||||
|
@ -182,24 +190,17 @@ void C5000_dmrMode()
|
||||||
|
|
||||||
void C5000_fmMode()
|
void C5000_fmMode()
|
||||||
{
|
{
|
||||||
_writeReg(0x00, 0x0A, 0x80);
|
_writeReg(0x00, 0xB9, 0x33); /* System clock frequency (HR_C6000) */
|
||||||
_writeReg(0x00, 0x0B, 0x28);
|
_writeReg(0x00, 0x10, 0x80); /* FM modulator mode */
|
||||||
_writeReg(0x00, 0x0C, 0x33);
|
_writeReg(0x00, 0x07, 0x0E); /* IF frequency - upper 8 bits */
|
||||||
OSTimeDly(1, OS_OPT_TIME_DLY, &e);
|
_writeReg(0x00, 0x08, 0x10); /* IF frequency - middle 8 bits */
|
||||||
_writeReg(0x00, 0x0A, 0x00);
|
_writeReg(0x00, 0x09, 0x00); /* IF frequency - lower 8 bits */
|
||||||
_writeReg(0x00, 0xB9, 0x33);
|
|
||||||
_writeReg(0x00, 0xBA, 0x22);
|
|
||||||
_writeReg(0x00, 0xBB, 0x11);
|
|
||||||
_writeReg(0x00, 0x10, 0x80);
|
|
||||||
_writeReg(0x00, 0x07, 0x0E);
|
|
||||||
_writeReg(0x00, 0x08, 0x10);
|
|
||||||
_writeReg(0x00, 0x09, 0x00);
|
|
||||||
_sendSequence(initSeq1, sizeof(initSeq1));
|
_sendSequence(initSeq1, sizeof(initSeq1));
|
||||||
_writeReg(0x00, 0x06, 0x00);
|
_writeReg(0x00, 0x06, 0x00); /* VoCoder control */
|
||||||
_sendSequence(initSeq2, sizeof(initSeq2));
|
_sendSequence(initSeq2, sizeof(initSeq2));
|
||||||
_writeReg(0x00, 0x48, 0x00);
|
_writeReg(0x00, 0x48, 0x00); /* Two-point bias, upper value */
|
||||||
_writeReg(0x00, 0x47, 0x1F); /* This is 0x7F - freq_adj_mid */
|
_writeReg(0x00, 0x47, 0x1F); /* Two-point bias. This is 0x7F - freq_adj_mid */
|
||||||
_writeReg(0x00, 0x0D, 0x8C);
|
_writeReg(0x00, 0x0D, 0x8C); /* Codec control */
|
||||||
_writeReg(0x00, 0x0E, 0x44);
|
_writeReg(0x00, 0x0E, 0x44);
|
||||||
_writeReg(0x00, 0x0F, 0xC8);
|
_writeReg(0x00, 0x0F, 0xC8);
|
||||||
_writeReg(0x00, 0x25, 0x0E);
|
_writeReg(0x00, 0x25, 0x0E);
|
||||||
|
@ -214,10 +215,6 @@ void C5000_fmMode()
|
||||||
|
|
||||||
void C5000_activateAnalogTx()
|
void C5000_activateAnalogTx()
|
||||||
{
|
{
|
||||||
delayMs(51);
|
|
||||||
_writeReg(0x00, 0x25, 0x0E);
|
|
||||||
|
|
||||||
delayMs(15);
|
|
||||||
_writeReg(0x00, 0x0D, 0x8C);
|
_writeReg(0x00, 0x0D, 0x8C);
|
||||||
_writeReg(0x00, 0x0E, 0x44);
|
_writeReg(0x00, 0x0E, 0x44);
|
||||||
_writeReg(0x00, 0x0F, 0xC8);
|
_writeReg(0x00, 0x0F, 0xC8);
|
||||||
|
@ -237,21 +234,11 @@ void C5000_activateAnalogTx()
|
||||||
_writeReg(0x01, 0x51, 0x00);
|
_writeReg(0x01, 0x51, 0x00);
|
||||||
_writeReg(0x00, 0x81, 0x00);
|
_writeReg(0x00, 0x81, 0x00);
|
||||||
_writeReg(0x00, 0x60, 0x80);
|
_writeReg(0x00, 0x60, 0x80);
|
||||||
|
|
||||||
delayMs(15);
|
|
||||||
_writeReg(0x00, 0x0E, 0x40);
|
|
||||||
|
|
||||||
delayMs(350);
|
|
||||||
_writeReg(0x00, 0x0E, 0x44);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void C5000_shutdownAnalogTx()
|
void C5000_shutdownAnalogTx()
|
||||||
{
|
{
|
||||||
delayMs(50);
|
_writeReg(0x00, 0x60, 0x00);
|
||||||
_writeReg(0x00, 0x60, 0x80);
|
|
||||||
delayMs(270);
|
|
||||||
_writeReg(0x00, 0x0E, 0x44);
|
|
||||||
_writeReg(0x00, 0x60, 0x80);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void C5000_writeReg(uint8_t reg, uint8_t val)
|
void C5000_writeReg(uint8_t reg, uint8_t val)
|
||||||
|
|
|
@ -195,6 +195,7 @@ void rtx_setOpmode(enum opmode mode)
|
||||||
case FM:
|
case FM:
|
||||||
gpio_clearPin(DMR_SW);
|
gpio_clearPin(DMR_SW);
|
||||||
gpio_setPin(FM_SW);
|
gpio_setPin(FM_SW);
|
||||||
|
C5000_fmMode();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DMR:
|
case DMR:
|
||||||
|
|
|
@ -34,9 +34,9 @@
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
platform_init();
|
// platform_init();
|
||||||
toneGen_init();
|
// toneGen_init();
|
||||||
toneGen_setToneFreq(77.0f);
|
// toneGen_setToneFreq(77.0f);
|
||||||
|
|
||||||
gpio_setMode(SPK_MUTE, OUTPUT);
|
gpio_setMode(SPK_MUTE, OUTPUT);
|
||||||
gpio_setMode(AMP_EN, OUTPUT);
|
gpio_setMode(AMP_EN, OUTPUT);
|
||||||
|
@ -47,7 +47,7 @@ int main(void)
|
||||||
gpio_clearPin(SPK_MUTE); /* Unmute speaker */
|
gpio_clearPin(SPK_MUTE); /* Unmute speaker */
|
||||||
|
|
||||||
rtx_init();
|
rtx_init();
|
||||||
rtx_setTxFreq(432950000.0f);
|
rtx_setTxFreq(430100000.0f);
|
||||||
rtx_setBandwidth(BW_25);
|
rtx_setBandwidth(BW_25);
|
||||||
rtx_setOpmode(FM);
|
rtx_setOpmode(FM);
|
||||||
rtx_setFuncmode(OFF);
|
rtx_setFuncmode(OFF);
|
||||||
|
|
Ładowanie…
Reference in New Issue