1
0
mirror of https://github.com/peterantypas/maiana.git synced 2025-05-16 07:20:08 -07:00

Detecting RF IC initialization error

This commit is contained in:
Peter Antypas 2023-09-26 21:02:07 -07:00
parent d97310ad0a
commit 964de69df0
7 changed files with 64 additions and 15 deletions

View File

@ -189,8 +189,8 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.8556468" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.8556468" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork.1656747017" name="Thumb interwork (-mthumb-interwork)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork.1656747017" name="Thumb interwork (-mthumb-interwork)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness.553987836" name="Endianness" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness.553987836" name="Endianness" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.1689973915" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.1689973915" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1585028559" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1585028559" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess.1126478922" name="Unaligned access" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess.1126478922" name="Unaligned access" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family.1267265532" name="AArch64 family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family" useByScannerDiscovery="false"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family.1267265532" name="AArch64 family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family" useByScannerDiscovery="false"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc.2146715394" name="Feature crc" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc" useByScannerDiscovery="false"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc.2146715394" name="Feature crc" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc" useByScannerDiscovery="false"/>
@ -241,7 +241,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.440656042" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" useByScannerDiscovery="true"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.440656042" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1231559104" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab" useByScannerDiscovery="false"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1231559104" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab" useByScannerDiscovery="false"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.191104395" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.191104395" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/ais_bootloader}/Debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.2101099789" incrementalBuildTarget="all maiana-bootloader.bin maiana-bootloader.siz" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder buildPath="${workspace_loc:/ais_bootloader}/Debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.2101099789" incrementalBuildTarget="all maiana-bootloader.bin maiana-bootloader.siz" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" parallelBuildOn="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1930397255" name="GNU ARM Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1930397255" name="GNU ARM Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1902215475" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1902215475" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1602741297" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/> <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1602741297" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
@ -264,10 +264,11 @@
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.2102917721" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.2102917721" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/STM32L4xx_FLASH.ld}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/STM32L4xx_FLASH.ld}&quot;"/>
</option> </option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other.1569588490" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other" useByScannerDiscovery="false" value="--specs=rdimon.specs" valueType="string"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other.1569588490" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other" useByScannerDiscovery="false" value="" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.937300021" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.937300021" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnosys.1552580303" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnosys" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnosys.1552580303" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnosys" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.strip.223731707" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.strip" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.strip.223731707" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.strip" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usescanffloat.812177626" name="Use float with nano scanf (-u _scanf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usescanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.2124413648" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input"> <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.2124413648" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
@ -625,6 +626,7 @@
</configuration> </configuration>
<configuration configurationName="L432-Debug"/> <configuration configurationName="L432-Debug"/>
<configuration configurationName="L432"/> <configuration configurationName="L432"/>
<configuration configurationName="L431"/>
<configuration configurationName="L422-Release"> <configuration configurationName="L422-Release">
<resource resourceType="PROJECT" workspacePath="/ais_bootloader"/> <resource resourceType="PROJECT" workspacePath="/ais_bootloader"/>
</configuration> </configuration>

View File

@ -48,12 +48,13 @@ public:
void setRSSIAdjustment(short rssiAdj); void setRSSIAdjustment(short rssiAdj);
uint16_t partNumber(); uint16_t partNumber();
bool isResponsive();
protected: protected:
virtual void configure(); virtual void configure();
bool sendCmd(uint8_t cmd, void* params, uint8_t paramLen, void* result, uint8_t resultLen); bool sendCmd(uint8_t cmd, void* params, uint8_t paramLen, void* result, uint8_t resultLen);
bool sendCmdNoWait(uint8_t cmd, void* params, uint8_t paramLen); bool sendCmdNoWait(uint8_t cmd, void* params, uint8_t paramLen);
bool isInitialized(); bool isInitialized();
void powerOnReset(); bool powerOnReset();
bool isReceiving(); bool isReceiving();
uint8_t readRSSI(); uint8_t readRSSI();
bool checkStatus(); bool checkStatus();
@ -76,6 +77,7 @@ protected:
uint32_t mChipID; uint32_t mChipID;
bool mCTSPending = false; bool mCTSPending = false;
uint16_t mPartNumber; uint16_t mPartNumber;
bool mPORSuccess = false;
}; };
#endif /* RFIC_HPP_ */ #endif /* RFIC_HPP_ */

View File

@ -54,6 +54,7 @@ private:
RadioManager(); RadioManager();
void spiOff(); void spiOff();
void configureInterrupts(); void configureInterrupts();
void reportError(int chipId);
private: private:
Transceiver *mTransceiverIC; Transceiver *mTransceiverIC;
Receiver *mReceiverIC; Receiver *mReceiverIC;

View File

@ -25,7 +25,7 @@
#include "TXPowerSettings.h" #include "TXPowerSettings.h"
#define FW_REV "4.1.0" #define FW_REV "4.2.0"
/* /*

View File

@ -49,7 +49,11 @@ RFIC::RFIC(GPIO_TypeDef *sdnPort,
mChipID = chipID; mChipID = chipID;
if ( !isInitialized() ) if ( !isInitialized() )
powerOnReset(); {
mPORSuccess = powerOnReset();
}
else
mPORSuccess = true;
} }
@ -67,6 +71,11 @@ inline void RFIC::spiOff()
HAL_GPIO_WritePin(mCSPort, mCSPin, GPIO_PIN_SET); HAL_GPIO_WritePin(mCSPort, mCSPin, GPIO_PIN_SET);
} }
bool RFIC::isResponsive()
{
return mPORSuccess;
}
bool RFIC::sendCmd(uint8_t cmd, void* params, uint8_t paramLen, void* result, uint8_t resultLen) bool RFIC::sendCmd(uint8_t cmd, void* params, uint8_t paramLen, void* result, uint8_t resultLen)
{ {
if ( mCTSPending ) if ( mCTSPending )
@ -205,7 +214,7 @@ bool RFIC::isInitialized()
} }
} }
void RFIC::powerOnReset() bool RFIC::powerOnReset()
{ {
// Pull SDN high to shut down the IC // Pull SDN high to shut down the IC
HAL_GPIO_WritePin(mSDNP, mSDNPin, GPIO_PIN_SET); HAL_GPIO_WritePin(mSDNP, mSDNPin, GPIO_PIN_SET);
@ -216,8 +225,14 @@ void RFIC::powerOnReset()
// Pull SDN low and poll the status of GPIO1 // Pull SDN low and poll the status of GPIO1
HAL_GPIO_WritePin(mSDNP, mSDNPin, GPIO_PIN_RESET); HAL_GPIO_WritePin(mSDNP, mSDNPin, GPIO_PIN_RESET);
while ( HAL_GPIO_ReadPin(mDataPort, mDataPin) == GPIO_PIN_RESET ) uint32_t start = HAL_GetTick();
; while ( HAL_GetTick() - start < 1000 )
{
if ( HAL_GPIO_ReadPin(mDataPort, mDataPin) == GPIO_PIN_SET )
return true;
}
return false;
} }
/** /**

View File

@ -55,15 +55,31 @@ void RadioManager::init()
CS1_PORT, CS1_PIN, CS1_PORT, CS1_PIN,
TRX_IC_DATA_PORT, TRX_IC_DATA_PIN, TRX_IC_DATA_PORT, TRX_IC_DATA_PIN,
TRX_IC_CLK_PORT, TRX_IC_CLK_PIN, 0); TRX_IC_CLK_PORT, TRX_IC_CLK_PIN, 0);
mTransceiverIC->init();
if ( mTransceiverIC->isResponsive() )
{
mTransceiverIC->init();
}
else
{
reportError(1);
}
mReceiverIC = new Receiver(SDN2_PORT, SDN2_PIN, mReceiverIC = new Receiver(SDN2_PORT, SDN2_PIN,
CS2_PORT, CS2_PIN, CS2_PORT, CS2_PIN,
RX_IC_DATA_PORT, RX_IC_DATA_PIN, RX_IC_DATA_PORT, RX_IC_DATA_PIN,
RX_IC_CLK_PORT, RX_IC_CLK_PIN, 1); RX_IC_CLK_PORT, RX_IC_CLK_PIN, 1);
mReceiverIC->init(); if ( mReceiverIC->isResponsive() )
{
mReceiverIC->init();
}
else
{
reportError(2);
}
mInitializing = false; if ( mReceiverIC->isResponsive() && mTransceiverIC->isResponsive() )
mInitializing = false;
} }
void RadioManager::transmitCW(VHFChannel channel) void RadioManager::transmitCW(VHFChannel channel)
@ -88,6 +104,16 @@ void RadioManager::stop()
// TODO: Implement this // TODO: Implement this
} }
void RadioManager::reportError(int chipId)
{
Event *e = EventPool::instance().newEvent(PROPR_NMEA_SENTENCE);
if ( !e )
return;
sprintf(e->nmeaBuffer.sentence, "$PAIERR,RFIC,%d*", chipId);
Utils::completeNMEA(e->nmeaBuffer.sentence);
EventQueue::instance().push(e);
}
void RadioManager::configureInterrupts() void RadioManager::configureInterrupts()
{ {

View File

@ -65,8 +65,11 @@ void mainLoop()
if ( !cliBootMode ) if ( !cliBootMode )
{ {
GPS::instance().enable(); if ( RadioManager::instance().initialized() )
RadioManager::instance().start(); {
GPS::instance().enable();
RadioManager::instance().start();
}
} }
else else
{ {