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:
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.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=""${workspace_loc:/${ProjName}/STM32L4xx_FLASH.ld}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/STM32L4xx_FLASH.ld}""/>
|
||||||
</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>
|
||||||
|
@ -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_ */
|
||||||
|
@ -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;
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "TXPowerSettings.h"
|
#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;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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()
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user