diff --git a/ADF7021.cpp b/ADF7021.cpp index fa795f8..681144e 100644 --- a/ADF7021.cpp +++ b/ADF7021.cpp @@ -142,6 +142,12 @@ void CIO::ifConf() uint32_t ADF7021_REG4 = 0; uint32_t ADF7021_REG13 = 0; + // Toggle CE pin for ADF7021 reset + CE_pin(LOW); + delay_rx(); + CE_pin(HIGH); + delay_rx(); + // Check frequency band if( (m_frequency_tx >= VHF1_MIN) && (m_frequency_tx < VHF1_MAX) ) { ADF7021_REG1 = ADF7021_REG1_VHF1; // VHF1, external VCO diff --git a/IO.cpp b/IO.cpp index f26920e..7a3ff86 100644 --- a/IO.cpp +++ b/IO.cpp @@ -39,6 +39,7 @@ m_watchdog(0U) { Init(); + CE_pin(HIGH); LED_pin(HIGH); PTT_pin(LOW); DSTAR_pin(LOW); diff --git a/IO.h b/IO.h index cd5b67f..49b3809 100644 --- a/IO.h +++ b/IO.h @@ -50,6 +50,7 @@ public: void SDATA_pin(bool on); bool SREAD_pin(void); void SLE_pin(bool on); + void CE_pin(bool on); bool RXD_pin(void); #if defined(BIDIR_DATA_PIN) diff --git a/IOArduino.cpp b/IOArduino.cpp index e80673b..cc476d5 100644 --- a/IOArduino.cpp +++ b/IOArduino.cpp @@ -30,6 +30,7 @@ #define PIN_SREAD PB7 #define PIN_SDATA PB6 #define PIN_SLE PB8 +#define PIN_CE PC14 #define PIN_RXD PB4 #define PIN_TXD PB3 #define PIN_CLKOUT PA15 @@ -49,6 +50,7 @@ #define PIN_SDATA 4 // 2 in Arduino Zero Pro #define PIN_SREAD 5 #define PIN_SLE 6 +#define PIN_CE 12 #define PIN_RXD 7 #define PIN_TXD 8 #define PIN_CLKOUT 2 // 4 in Arduino Zero Pro @@ -92,6 +94,7 @@ void CIO::Init() pinMode(PIN_SDATA, OUTPUT); pinMode(PIN_SREAD, INPUT); pinMode(PIN_SLE, OUTPUT); + pinMode(PIN_CE, OUTPUT); pinMode(PIN_RXD, INPUT); pinMode(PIN_CLKOUT, INPUT); pinMode(PIN_LED, OUTPUT); @@ -164,6 +167,11 @@ void CIO::SLE_pin(bool on) digitalWrite(PIN_SLE, on ? HIGH : LOW); } +void CIO::CE_pin(bool on) +{ + digitalWrite(PIN_CE, on ? HIGH : LOW); +} + bool CIO::RXD_pin() { return digitalRead(PIN_RXD) == HIGH; diff --git a/IOSTM.cpp b/IOSTM.cpp index 7e8b403..c521974 100644 --- a/IOSTM.cpp +++ b/IOSTM.cpp @@ -36,6 +36,9 @@ #define PIN_SLE GPIO_Pin_8 #define PORT_SLE GPIOB +#define PIN_CE GPIO_Pin_14 +#define PORT_CE GPIOC + #define PIN_RXD GPIO_Pin_4 #define PORT_RXD GPIOB @@ -180,6 +183,12 @@ void CIO::Init() GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(PORT_SLE, &GPIO_InitStruct); + // Pin CE + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStruct.GPIO_Pin = PIN_CE; + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_Init(PORT_CE, &GPIO_InitStruct); + // Pin RXD GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_Pin = PIN_RXD; @@ -327,6 +336,11 @@ void CIO::SLE_pin(bool on) GPIO_WriteBit(PORT_SLE, PIN_SLE, on ? Bit_SET : Bit_RESET); } +void CIO::CE_pin(bool on) +{ + GPIO_WriteBit(PORT_CE, PIN_CE, on ? Bit_SET : Bit_RESET); +} + bool CIO::RXD_pin() { return GPIO_ReadInputDataBit(PORT_RXD, PIN_RXD) == Bit_SET;