Compare commits

...

8 Commits

Author SHA1 Message Date
Rob French 295c49969f Updated the README.md with a KC4UPR note. I will now be creating a kc4upr branch. 2020-10-28 13:50:39 -05:00
phdlee 262ef3947a
Merge pull request #46 from phdlee/version1.20
changed version number for nextion lcd protocol
2019-04-06 16:38:44 +09:00
phdlee a4d9f6e6c5 changed version number for nextion lcd protocol 2019-04-06 16:35:46 +09:00
phdlee 395dd42459
Update README.md 2019-04-02 23:20:04 +09:00
phdlee f25bf57556
Update README.md 2019-04-02 23:18:54 +09:00
phdlee 171f889f4a
Merge pull request #45 from phdlee/version1.20
Version1.20
2019-04-02 23:16:03 +09:00
phdlee 05de66a038 uBITX V5 suppoort and SDR Frequency Change 2019-04-02 23:09:18 +09:00
phdlee 2c075d5236 for uBITX v5 2019-02-15 19:32:07 +09:00
8 changed files with 168 additions and 41 deletions

View File

@ -1,6 +1,15 @@
#KC4UPR'S NOTE
----------------------------------------------------------------------------
This is a fork of the KD8CEC firmware that will be specific to my uBITX V5
installation. My intent is to remove unnecessary code, as well as make some
GPIO changes based on my use of the Nextion LCD. Specifically, I'd like to
eliminate the use of analog I/O for reading the CW keys, and possibly enable
control of accessories such as filters using the extra GPIO pins that are
now available.
#NOTICE
----------------------------------------------------------------------------
- Now Release Version 1.08 on my blog (http://www.hamskey.com)
- Now Release Version 1.20 on my blog (http://www.hamskey.com)
- You can download and compiled hex file and uBITX Manager application on release section (https://github.com/phdlee/ubitx/releases)
- For more information, see my blog (http://www.hamskey.com)
@ -17,13 +26,17 @@ The copyright information of the original is below.
KD8CEC
----------------------------------------------------------------------------
Prepared or finished tasks for the next version
- Nextion LCD
- Add TTS module
- Remote control on another MCU
- Direct control for Student
----------------------------------------------------------------------------
## REVISION RECORD
1.20
- Support uBITX V5
- Change to SDR Frequency (Remove just RTL-SDR's error Frequency (2390Hz))
1.12
- Support Custom LPF Control
- Other Minor Bugs
1.1
- Support Nextion LCD, TJC LCD
- Read & Backup uBITX, ADC Monitoring, ATT, IF-Shift and more on Nextion LCD (TJC LCD)

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
http://arduiniana.org.
*/
#include <arduino.h>
#include <Arduino.h>
//================================================================
//Public Variable

View File

@ -22,6 +22,9 @@
//==============================================================================
// Compile Option
//==============================================================================
//Ubitx Board Version
#define UBITX_BOARD_VERSION 2 //v1 ~ v4 : 4, v5: 5
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
//You must select only one.
//#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel)
@ -36,7 +39,7 @@
#define I2C_LCD_SECOND_ADDRESS_DEFAULT 0x3F //0x27 //only using Dual LCD Mode
//Select betwen Analog S-Meter and DSP (I2C) Meter
//#define USE_I2CSMETER
#define USE_I2CSMETER
#define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
@ -330,5 +333,3 @@ extern void DisplayVersionInfo(const char* fwVersionInfo);
extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino
#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.
// 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.200")
#define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4
/**
@ -72,10 +72,43 @@
// 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
#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)
#if UBITX_BOARD_VERSION == 5
//For Test //45005000
//#define SECOND_OSC_USB (56064200l)
//#define SECOND_OSC_LSB (33945800l)
/*
//For Test //4500000
#define SECOND_OSC_USB (56059200l)
#define SECOND_OSC_LSB (33940800l)
*/
/*
//For Test // V1.121 44991500(LSB), 44998500 (USB), abs : 7k
#define SECOND_OSC_USB (56057700l)
#define SECOND_OSC_LSB (33932300l)
*/
//==============================================================================================================================
//For Test // V1.200 V1.122 45002500 (LSB), 45002000 (USB) (Change Default BFO Frequency 11056xxx, adjust bfo and ifshift ), abs: 0.5k
//Best, Test 3 uBITX V5
//Last Value, If more data is collected, it can be changed to a better value.
#define SECOND_OSC_USB (56058700l)
#define SECOND_OSC_LSB (33945800l)
//Not used, Just comment (Default)
#define INIT_USB_FREQ (11056500l)
//-----------------------------------------------------------------------------------------------------------------------------
#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
//Not used, Just comment (Default)
#define INIT_USB_FREQ (11996500l)
#endif
// limits the tuning and working range of the ubitx between 3 MHz and 30 MHz
#define LOWEST_FREQ (3000000l)
#define HIGHEST_FREQ (30000000l)
@ -345,26 +378,51 @@ void setTXFilters(unsigned long freq){
}
} //end of for
#else
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, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 0);
}
else {
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 1);
}
#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
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, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 0);
}
else {
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 1);
}
#endif
#endif
}
@ -445,13 +503,23 @@ void setFrequency(unsigned long f){
moveFrequency = (f % 1000000);
}
#if UBITX_BOARD_VERSION == 5
si5351bx_setfreq(2, 45002000 + if1AdjustValue + f);
si5351bx_setfreq(1, 45002000
+ if1AdjustValue
+ SDR_Center_Freq
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
+ moveFrequency);
// + 2390); //RTL-SDR Frequency Error, Do not add another SDR because the error is different. V1.3
#else
si5351bx_setfreq(2, 44991500 + if1AdjustValue + f);
si5351bx_setfreq(1, 44991500
+ if1AdjustValue
+ SDR_Center_Freq
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
+ moveFrequency
+ 2390);
+ moveFrequency );
//+ 2390); Do not add another SDR because the error is different. V1.3
#endif
}
else
{
@ -1159,12 +1227,22 @@ void initSettings(){
if (vfoB_mode < 2)
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
if (usbCarrier > 12010000l || usbCarrier < 11990000l)
usbCarrier = 11997000l;
if (cwmCarrier > 12010000l || cwmCarrier < 11990000l)
cwmCarrier = 11997000l;
#endif
if (vfoA > 35000000l || 3500000l > vfoA) {
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
@ -27,14 +28,25 @@ void factory_alignment(){
printLine2("#2 BFO");
delay(1000);
#if UBITX_BOARD_VERSION == 5
usbCarrier = 11053000l;
menuSetupCarrier(1);
if (usbCarrier == 11053000l){
printLine2("Setup Aborted");
return;
}
#else
usbCarrier = 11994999l;
menuSetupCarrier(1);
if (usbCarrier == 11994999l){
printLine2("Setup Aborted");
return;
}
#endif
printLine2("#3:Test 3.5MHz");
cwMode = 0;
@ -88,4 +100,3 @@ void factory_alignment(){
updateDisplay();
}

View File

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

View File

@ -1662,6 +1662,15 @@ void menuSetupCarrier(int btn){
delay_background(1000, 0);
//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);
printCarrierFreq(usbCarrier);
@ -1705,4 +1714,3 @@ void menuSetupCarrier(int btn){
//menuOn = 0;
menuClearExit(0);
}

View File

@ -13,6 +13,7 @@
* 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.
************************************************************************************/
#include "ubitx.h"
// ************* SI5315 routines - tks Jerry Gaffke, KE7ER ***********************
// 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
uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate
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
#endif
uint8_t si5351bx_clken = 0xFF; // Private, all CLK output drivers off
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
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
@ -169,6 +188,3 @@ void TXSubFreq(unsigned long P2)
i2cWrite(40, (P2 & 65280) >> 8);
i2cWrite(41, P2 & 255);
}