mirror of
https://github.com/peterantypas/maiana.git
synced 2025-05-15 15:00:08 -07:00
Detecting RF IC initialization error
This commit is contained in:
parent
d97310ad0a
commit
964de69df0
@ -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.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.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.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.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" 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.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"/>
|
||||
@ -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.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"/>
|
||||
<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">
|
||||
<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"/>
|
||||
@ -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">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/STM32L4xx_FLASH.ld}""/>
|
||||
</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.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.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">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
@ -625,6 +626,7 @@
|
||||
</configuration>
|
||||
<configuration configurationName="L432-Debug"/>
|
||||
<configuration configurationName="L432"/>
|
||||
<configuration configurationName="L431"/>
|
||||
<configuration configurationName="L422-Release">
|
||||
<resource resourceType="PROJECT" workspacePath="/ais_bootloader"/>
|
||||
</configuration>
|
||||
|
@ -48,12 +48,13 @@ public:
|
||||
|
||||
void setRSSIAdjustment(short rssiAdj);
|
||||
uint16_t partNumber();
|
||||
bool isResponsive();
|
||||
protected:
|
||||
virtual void configure();
|
||||
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 isInitialized();
|
||||
void powerOnReset();
|
||||
bool powerOnReset();
|
||||
bool isReceiving();
|
||||
uint8_t readRSSI();
|
||||
bool checkStatus();
|
||||
@ -76,6 +77,7 @@ protected:
|
||||
uint32_t mChipID;
|
||||
bool mCTSPending = false;
|
||||
uint16_t mPartNumber;
|
||||
bool mPORSuccess = false;
|
||||
};
|
||||
|
||||
#endif /* RFIC_HPP_ */
|
||||
|
@ -54,6 +54,7 @@ private:
|
||||
RadioManager();
|
||||
void spiOff();
|
||||
void configureInterrupts();
|
||||
void reportError(int chipId);
|
||||
private:
|
||||
Transceiver *mTransceiverIC;
|
||||
Receiver *mReceiverIC;
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "TXPowerSettings.h"
|
||||
|
||||
|
||||
#define FW_REV "4.1.0"
|
||||
#define FW_REV "4.2.0"
|
||||
|
||||
|
||||
/*
|
||||
|
@ -49,7 +49,11 @@ RFIC::RFIC(GPIO_TypeDef *sdnPort,
|
||||
mChipID = chipID;
|
||||
|
||||
if ( !isInitialized() )
|
||||
powerOnReset();
|
||||
{
|
||||
mPORSuccess = powerOnReset();
|
||||
}
|
||||
else
|
||||
mPORSuccess = true;
|
||||
|
||||
}
|
||||
|
||||
@ -67,6 +71,11 @@ inline void RFIC::spiOff()
|
||||
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)
|
||||
{
|
||||
if ( mCTSPending )
|
||||
@ -205,7 +214,7 @@ bool RFIC::isInitialized()
|
||||
}
|
||||
}
|
||||
|
||||
void RFIC::powerOnReset()
|
||||
bool RFIC::powerOnReset()
|
||||
{
|
||||
// Pull SDN high to shut down the IC
|
||||
HAL_GPIO_WritePin(mSDNP, mSDNPin, GPIO_PIN_SET);
|
||||
@ -216,8 +225,14 @@ void RFIC::powerOnReset()
|
||||
// Pull SDN low and poll the status of GPIO1
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -55,15 +55,31 @@ void RadioManager::init()
|
||||
CS1_PORT, CS1_PIN,
|
||||
TRX_IC_DATA_PORT, TRX_IC_DATA_PIN,
|
||||
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,
|
||||
CS2_PORT, CS2_PIN,
|
||||
RX_IC_DATA_PORT, RX_IC_DATA_PIN,
|
||||
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)
|
||||
@ -88,6 +104,16 @@ void RadioManager::stop()
|
||||
// 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()
|
||||
{
|
||||
|
@ -65,8 +65,11 @@ void mainLoop()
|
||||
|
||||
if ( !cliBootMode )
|
||||
{
|
||||
GPS::instance().enable();
|
||||
RadioManager::instance().start();
|
||||
if ( RadioManager::instance().initialized() )
|
||||
{
|
||||
GPS::instance().enable();
|
||||
RadioManager::instance().start();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user