for uBITX v5

This commit is contained in:
phdlee 2019-02-15 19:32:07 +09:00
parent 450f57ae0f
commit 2c075d5236
7 changed files with 115 additions and 35 deletions

View File

@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
The latest version of this library can always be found at The latest version of this library can always be found at
http://arduiniana.org. http://arduiniana.org.
*/ */
#include <arduino.h> #include <Arduino.h>
//================================================================ //================================================================
//Public Variable //Public Variable

View File

@ -22,6 +22,9 @@
//============================================================================== //==============================================================================
// Compile Option // Compile Option
//============================================================================== //==============================================================================
//Ubitx Board Version
#define UBITX_BOARD_VERSION 4 //v1 ~ v4 : 4, v5: 5
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below. //Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
//You must select only one. //You must select only one.
//#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel) //#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel)
@ -330,5 +333,3 @@ extern void DisplayVersionInfo(const char* fwVersionInfo);
extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino
#endif //end of if header define #endif //end of if header define

View File

@ -6,7 +6,7 @@
// So I put + in the sense that it was improved one by one based on Original Firmware. // So I put + in the sense that it was improved one by one based on Original Firmware.
// This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others. // This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others.
#define FIRMWARE_VERSION_INFO F("+v1.110") #define FIRMWARE_VERSION_INFO F("+v1.120")
#define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4 #define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4
/** /**
@ -72,10 +72,19 @@
// the second oscillator should ideally be at 57 MHz, however, the crystal filter's center frequency // the second oscillator should ideally be at 57 MHz, however, the crystal filter's center frequency
// is shifted down a little due to the loading from the impedance matching L-networks on either sides // is shifted down a little due to the loading from the impedance matching L-networks on either sides
#define SECOND_OSC_USB (56995000l)
#define SECOND_OSC_LSB (32995000l) #if UBITX_BOARD_VERSION == 5
//these are the two default USB and LSB frequencies. The best frequencies depend upon your individual taste and filter shape #define SECOND_OSC_USB (56064200l)
#define INIT_USB_FREQ (11996500l) #define SECOND_OSC_LSB (33945800l)
#define INIT_USB_FREQ (11059200l)
#else
#define SECOND_OSC_USB (56995000l)
#define SECOND_OSC_LSB (32995000l)
//these are the two default USB and LSB frequencies. The best frequencies depend upon your individual taste and filter shape
#define INIT_USB_FREQ (11996500l)
#endif
// limits the tuning and working range of the ubitx between 3 MHz and 30 MHz // limits the tuning and working range of the ubitx between 3 MHz and 30 MHz
#define LOWEST_FREQ (3000000l) #define LOWEST_FREQ (3000000l)
#define HIGHEST_FREQ (30000000l) #define HIGHEST_FREQ (30000000l)
@ -345,6 +354,29 @@ void setTXFilters(unsigned long freq){
} }
} //end of for } //end of for
#else #else
#if UBITX_BOARD_VERSION == 5
if (freq > 21000000L){ // the default filter is with 35 MHz cut-off
digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
}
else if (freq >= 14000000L){ //thrown the KT1 relay on, the 30 MHz LPF is bypassed and the 14-18 MHz LPF is allowd to go through
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
}
else if (freq > 7000000L){
digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 0);
}
else {
digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 1);
}
#else
if (freq > 21000000L){ // the default filter is with 35 MHz cut-off if (freq > 21000000L){ // the default filter is with 35 MHz cut-off
digitalWrite(TX_LPF_A, 0); digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 0); digitalWrite(TX_LPF_B, 0);
@ -365,6 +397,8 @@ void setTXFilters(unsigned long freq){
digitalWrite(TX_LPF_B, 1); digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 1); digitalWrite(TX_LPF_C, 1);
} }
#endif
#endif #endif
} }
@ -1159,12 +1193,22 @@ void initSettings(){
if (vfoB_mode < 2) if (vfoB_mode < 2)
vfoB_mode = 3; vfoB_mode = 3;
#if UBITX_BOARD_VERSION == 5
//original code with modified by kd8cec
if (usbCarrier > 11060000l || usbCarrier < 11048000l)
usbCarrier = 11052000l;
if (cwmCarrier > 11060000l || cwmCarrier < 11048000l)
cwmCarrier = 11052000l;
#else
//original code with modified by kd8cec //original code with modified by kd8cec
if (usbCarrier > 12010000l || usbCarrier < 11990000l) if (usbCarrier > 12010000l || usbCarrier < 11990000l)
usbCarrier = 11997000l; usbCarrier = 11997000l;
if (cwmCarrier > 12010000l || cwmCarrier < 11990000l) if (cwmCarrier > 12010000l || cwmCarrier < 11990000l)
cwmCarrier = 11997000l; cwmCarrier = 11997000l;
#endif
if (vfoA > 35000000l || 3500000l > vfoA) { if (vfoA > 35000000l || 3500000l > vfoA) {
vfoA = 7150000l; vfoA = 7150000l;

View File

@ -1,3 +1,4 @@
#include "ubitx.h"
/** /**
* This procedure is only for those who have a signal generator/transceiver tuned to exactly 7.150 and a dummy load * This procedure is only for those who have a signal generator/transceiver tuned to exactly 7.150 and a dummy load
@ -27,14 +28,25 @@ void factory_alignment(){
printLine2("#2 BFO"); printLine2("#2 BFO");
delay(1000); delay(1000);
#if UBITX_BOARD_VERSION == 5
usbCarrier = 11053000l;
menuSetupCarrier(1);
if (usbCarrier == 11053000l){
printLine2("Setup Aborted");
return;
}
#else
usbCarrier = 11994999l; usbCarrier = 11994999l;
menuSetupCarrier(1); menuSetupCarrier(1);
if (usbCarrier == 11994999l){ if (usbCarrier == 11994999l){
printLine2("Setup Aborted"); printLine2("Setup Aborted");
return; return;
} }
#endif
printLine2("#3:Test 3.5MHz"); printLine2("#3:Test 3.5MHz");
cwMode = 0; cwMode = 0;
@ -88,4 +100,3 @@ void factory_alignment(){
updateDisplay(); updateDisplay();
} }

View File

@ -1041,7 +1041,7 @@ void SendUbitxData(void)
EEPROM.get(EXTERNAL_DEVICE_OPT1, nextionDisplayOption); EEPROM.get(EXTERNAL_DEVICE_OPT1, nextionDisplayOption);
SendCommandUL(CMD_DISP_OPTION2, nextionDisplayOption); SendCommandUL(CMD_DISP_OPTION2, nextionDisplayOption);
SendCommandStr(CMD_VERSION, (char *)("+v1.110")); //Version SendCommandStr(CMD_VERSION, (char *)("+v1.120")); //Version
SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0); SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0);
/* /*

View File

@ -1662,6 +1662,15 @@ void menuSetupCarrier(int btn){
delay_background(1000, 0); delay_background(1000, 0);
//usbCarrier = 11995000l; //Remarked by KD8CEC, Suggest from many user, if entry routine factoryrest //usbCarrier = 11995000l; //Remarked by KD8CEC, Suggest from many user, if entry routine factoryrest
/*
//for uBITX V5.0, but not used by KD8CEC, if you want default value of carrier on Calibration, delete remark symbols
#if UBITX_BOARD_VERSION == 5
usbCarrier = 11053000l;
#else
usbCarrier = 11995000l;
#endif
*/
si5351bx_setfreq(0, usbCarrier); si5351bx_setfreq(0, usbCarrier);
printCarrierFreq(usbCarrier); printCarrierFreq(usbCarrier);
@ -1705,4 +1714,3 @@ void menuSetupCarrier(int btn){
//menuOn = 0; //menuOn = 0;
menuClearExit(0); menuClearExit(0);
} }

View File

@ -13,6 +13,7 @@
* The output clock channel that controls the frequency is connected to the PLL-B. * The output clock channel that controls the frequency is connected to the PLL-B.
* The WSPR protocol is generated by changing the clock of the PLL-B. * The WSPR protocol is generated by changing the clock of the PLL-B.
************************************************************************************/ ************************************************************************************/
#include "ubitx.h"
// ************* SI5315 routines - tks Jerry Gaffke, KE7ER *********************** // ************* SI5315 routines - tks Jerry Gaffke, KE7ER ***********************
// An minimalist standalone set of Si5351 routines. // An minimalist standalone set of Si5351 routines.
@ -58,7 +59,13 @@ uint8_t SI5351BX_ADDR; // I2C address of Si5351 (variable f
// User program may have reason to poke new values into these 3 RAM variables // User program may have reason to poke new values into these 3 RAM variables
uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate
uint8_t si5351bx_rdiv = 0; // 0-7, CLK pin sees fout/(2**rdiv) uint8_t si5351bx_rdiv = 0; // 0-7, CLK pin sees fout/(2**rdiv)
#if UBITX_BOARD_VERSION == 5
uint8_t si5351bx_drive[3] = {3, 3, 3}; // 0=2ma 1=4ma 2=6ma 3=8ma for CLK 0,1,2
#else
uint8_t si5351bx_drive[3] = {1, 1, 1}; // 0=2ma 1=4ma 2=6ma 3=8ma for CLK 0,1,2 uint8_t si5351bx_drive[3] = {1, 1, 1}; // 0=2ma 1=4ma 2=6ma 3=8ma for CLK 0,1,2
#endif
uint8_t si5351bx_clken = 0xFF; // Private, all CLK output drivers off uint8_t si5351bx_clken = 0xFF; // Private, all CLK output drivers off
int32_t calibration = 0; int32_t calibration = 0;
@ -92,6 +99,18 @@ void si5351bx_init() { // Call once at power-up, start PLLA
i2cWriten(26, si5351Val, 8); // Write to 8 PLLA msynth regs i2cWriten(26, si5351Val, 8); // Write to 8 PLLA msynth regs
i2cWrite(177, 0x20); // Reset PLLA (0x80 resets PLLB) i2cWrite(177, 0x20); // Reset PLLA (0x80 resets PLLB)
#if UBITX_BOARD_VERSION == 5
//why? TODO : CHECK by KD8CEC
//initializing the ppl2 as well
i2cWriten(34, si5351Val, 8); // Write to 8 PLLA msynth regs
i2cWrite(177, 0xa0); // Reset PLLA & PPLB (0x80 resets PLLB)
#else
//
#endif
} }
void si5351bx_setfreq(uint8_t clknum, uint32_t fout) { // Set a CLK to fout Hz void si5351bx_setfreq(uint8_t clknum, uint32_t fout) { // Set a CLK to fout Hz
@ -169,6 +188,3 @@ void TXSubFreq(unsigned long P2)
i2cWrite(40, (P2 & 65280) >> 8); i2cWrite(40, (P2 & 65280) >> 8);
i2cWrite(41, P2 & 255); i2cWrite(41, P2 & 255);
} }