Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rda0deea71ed5770d98a00943369b9c17321e139f -r8f4a39b5e2161444c61d3fa52734d218259ee001 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision da0deea71ed5770d98a00943369b9c17321e139f) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 8f4a39b5e2161444c61d3fa52734d218259ee001) @@ -102,6 +102,16 @@ #define FPGA_READ_V3_START_BYTE_NUM 256 ///< FPGA V3 read sensors start byte number. #define FPGA_READ_V3_END_BYTE_NUM 430 ///< FPGA V3 read sensors end byte number. +/* + * NOTE: in MS5839-02BA manufacturing information as well as the CRC of the mfg information is stored in the manufacturing register. + * 1. Bits 0..4 are the mfg information + * 2. Bits 5..11 are the version (not used) + * 3. Bits 12..15 are the CRC + */ +#define FPGA_BARO_SENSOR_MFG_INFO_BITS 0x0FFF ///< FPGA baro sensor manufacturing information first 12 bits. +#define FPGA_BARO_SENSOR_CRC_BITS 0xF000 ///< FPGA baro sensor CRC 4 bits. +#define FPGA_BARO_SENSOR_CRC_BIT_SHIFT 12 ///< FPGA baro sensor CRC bit shit value. + /// FPGA size of V3 read bytes. #define FPGA_SIZE_OF_V3_READ_BYTES ( FPGA_READ_V3_END_BYTE_NUM - FPGA_READ_V3_START_BYTE_NUM ) @@ -236,7 +246,7 @@ U16 fpgaBaroPROMCoeff4; ///< Reg 444. Barometric sensor PROM coefficient 4 U16 fpgaBaroPROMCoeff5; ///< Reg 446. Barometric sensor PROM coefficient 5 U16 fpgaBaroPROMCoeff6; ///< Reg 448. Barometric sensor PROM coefficient 6 - U16 fpgaBaroPROMCRC; ///< Reg 450. Barometric sensor PROM CRC + U16 unused; ///< Reg 450. Unused register U32 fpgaBaroPressure; ///< Reg 452. Barometric sensor pressure value U32 fpgaBaroTemperature; ///< Reg 456. Barometric sensor temperature sensor U08 fpgaTHdRTDReadCount; ///< Reg 460. THD RTD read count @@ -2384,7 +2394,7 @@ *************************************************************************/ U16 getFPGABaroMfgInfo( void ) { - return fpgaSensorReadings.fpgaBaroManufacInfo; + return fpgaSensorReadings.fpgaBaroManufacInfo & FPGA_BARO_SENSOR_MFG_INFO_BITS; } /*********************************************************************//** @@ -2475,7 +2485,8 @@ *************************************************************************/ U16 getFPGABaroCoeffsCRC( void ) { - return fpgaSensorReadings.fpgaBaroPROMCRC; + // Shift the CRC bit by 12 bits to become LSB + return ( fpgaSensorReadings.fpgaBaroManufacInfo & FPGA_BARO_SENSOR_CRC_BITS ) >> FPGA_BARO_SENSOR_CRC_BIT_SHIFT; } /*********************************************************************//**