Skip to content

Commit

Permalink
Fix Tx DC/IQ calibration (not all rx was set to defaults)
Browse files Browse the repository at this point in the history
  • Loading branch information
rjonaitis committed Apr 7, 2019
1 parent 35060d2 commit 5ba685c
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 118 deletions.
96 changes: 48 additions & 48 deletions build/mcu_program/calibrationsLMS7_MCU.hex
Expand Up @@ -146,7 +146,7 @@
:10090300241FC39FD39400407612365CFFC3741E2A
:1009130095362FF53BFC120367AB35AA34A933A8F0
:100923003212004D12039B7B3D7A00E4FDFC12382A
:100933002CEF25E0FFEE33FE74A92FF582743E3EC3
:100933002CEF25E0FFEE33FE74B12FF582743E3EBB
:10094300F583E493F53C740193F53D540FF9F53EBB
:10095300E53CC4F854F0C8E53DC4540F48541FFFA8
:10096300F53F12365CB53F07123663653E6010747F
Expand Down Expand Up @@ -357,7 +357,7 @@
:1016330022AD69AF68AE6712332C227F207E001281
:1016430039008E2B8F2CE52C540364017006FBFAB2
:101653007D448005E4FBFA7D337F82FE12332C7ECA
:101663003D7FB1123101120003123222A907E96052
:101663003D7FB9123101120003123222A907E9604A
:1016730001227B0112237C12332C1237AAD20412CB
:101683002809C004C005C006C0071223511223C194
:10169300D007D006D005D0041200497B007A247904
Expand Down Expand Up @@ -421,7 +421,7 @@
:101A3300FF740293FD22740493FFAD3EED3395E0F2
:101A4300FC22AB38AA37A936A83502013E7D107FA8
:101A5300137E01227D857F147E01227F207E00126A
:101A630039008E4A8F4B7E3E7F8B123101E54B54FA
:101A630039008E4A8F4B7E3E7F93123101E54B54F2
:101A73000364017006FBFA7D228005E4FBFA7D1105
:101A83007F82FE12332C300327E51213135401FF18
:101A9300C374029FF54CFB12241212332C122445FB
Expand Down Expand Up @@ -515,8 +515,8 @@
:1020130004368F4E8E4D8D4C8C4BAF4EAE4DAD4C2A
:10202300AC4B22E4F549F54A7F20FE1239008E4D70
:102033008F4E20030A9003E8E54DF0A3E54EF079B7
:1020430024E9605225E02421F582E4343FF583E45A
:1020530093F54B740193F54CE925E02423F582E4D1
:1020430024E9605225E02429F582E4343FF583E452
:1020530093F54B740193F54CE925E0242BF582E4C9
:10206300343FF583C3740193954CE493954B40221D
:1020730030030512211A80081220FBECF0A3EDF0C7
:10208300054AE54A70020549054CE54C70CA054B03
Expand Down Expand Up @@ -572,7 +572,7 @@
:1023A300F018A4FFE92400FDE43405CD2FFFED353B
:1023B300F0FE227B017A007DFF7FC07E0522A80408
:1023C300A905AA06AB07227D227B017A007F0C7E3A
:1023D3000422D3903E9D740193954EE493954D2230
:1023D3000422D3903EA5740193954EE493954D2228
:1023E3007B407A54790912004D8F538E528D518C54
:1023F3005022C3E568956AE567956922C3E543956D
:1024030045E5429544227B017D667F1C7E01227A4D
Expand Down Expand Up @@ -835,7 +835,7 @@
:10341300227F207E001239008E408F41E4F54279ED
:1034230002E4F543E54154FCFFE540FCEF4543FD71
:103433007F207E00123A28E543C39405502DE543CF
:1034430025E0249F30011012367A123689E0FCA35E
:1034430025E024A730011012367A123689E0FCA356
:10345300E0FD123A28800E12367A123900123689AC
:10346300EEF0A3EFF00542054380CC19E970B2AD4D
:1034730041AC407F207E00023A2812306A8F5F8E73
Expand Down Expand Up @@ -889,9 +889,9 @@
:10377300008F828E837F207E00123900AD07AC0656
:10378300ED5403640170084305145382EB80064330
:1037930005285382F57F207E00123A28AD82AC8340
:1037A3007F827E00023A287907E925E0246BF582BF
:1037A3007F827E00023A287907E925E02473F582B7
:1037B300E4343FF583E493FE740193FFE925E024A9
:1037C30079F582E4343FF583E493FC740193FD12AD
:1037C30081F582E4343FF583E493FC740193FD12A5
:1037D3003A28D9D57BFF7AB97DF87F207E01023361
:1037E3002CA905123900AC06AD07E9C4540F04FF38
:1037F30074FFFEA807088005C333CE33CED8F9F48F
Expand Down Expand Up @@ -977,43 +977,43 @@
:103CF300FEFEFE67FDE5FD8CFD6EFD9AFE1AFEF3EA
:103D03000022019D03540530071608E80A890BDEDB
:103D13000CCD0D4903FF008000080084008500AE30
:103D23000101011302000201020202080400000162
:103D3300F0000001001C000C07FF07FF0000F8FF64
:103D43000007F0001801003C000C07FF07FFF10B10
:103D5300010C011201150116011701180119011AAD
:103D63000400040104020403040404050406040714
:103D730004080409040A040C0440044204430081B7
:103D830088E5403200058180280C218C31802E0289
:103D9300008107FF07FF400000000000000007004C
:103DA3000000000010012098002000000000FF3DEB
:103DB3001DFF3D2FFF3D4109FF3D53FF3D83181775
:103DC3000084008500AE010C010D011301150119DA
:103DD30004000001F00000000040000C000000009F
:103DE300F8FF0007F000001A0040003CC00080000C
:103DF300010001010102010301040105010601079C
:103E030001080109010A020002010202020802403C
:103E130004000401040204030407040A040C04401C
:103E230005C005CB02030204020502060207024194
:103E330004040405040604080409044105C105C279
:103E430005C305C405C505C605C705C805C905CA13
:103E530005CC00813408600131800A120088000714
:103E6300318C318C042661C1104C008D07FF07FF94
:103E730020700020008107FF07FF400007001000AB
:103E83002098002000FF2020FF3DC3FF3DD3FF3DCE
:103E9300E308FF3DF3FF3E57321A70000081010F24
:103EA3000126040A040C0001001100210002001283
:103EB30000220032001300230033004300240034A7
:103EC3000044005400350045005500650046005687
:103ED3000066007600570067007700870068007867
:103EE3000088009800790089009900A900AA00BA07
:103EF30000CA00DA00DB00EB00FB010B011B012B06
:103F0300013B014B015B016B017B018B019B01AB0E
:103F130001BB01CB01DB01EB01FB01FC01FD01FE58
:103F230001FF0021002F00810082008400840085AE
:103F330000850086008C009200A700A800A800ADB1
:103F430000AE010001040105010A010C0114011571
:103F5300011A0200020C024002610400040F044033
:103F63000461050005A705C005C0011C011D011E54
:103F7300011F012101220123AD43040007803640C4
:063F83003404033F067B3D
:103D23000101020002010202020804000001F00086
:103D33000001000C07FF07FF0000F8FF0007F00079
:103D43001801000C07FF07FFF10B010C010D010E19
:103D5300010F0110011101120113011401150116C4
:103D6300011701180119011A0400040104020403D4
:103D73000407040A040C04400441044204430409F4
:103D83000408040604050404008188E5009E20401D
:103D930030C609940083403203DF008D0005818023
:103DA300280C218C31802E02008107FF07FF400081
:103DB300070010012098FF3D1DFF3D2DFF3D3D08ED
:103DC300FF3D4DFF3D8D20160084008500AE010CA4
:103DD300010D01130115011904000001F000000099
:103DE3000040000C00000000F8FF0007F000001A7C
:103DF3000040003CC00080000100010101020103FA
:103E0300010401050106010701080109010A020075
:103E13000201020202080240040004010402040336
:103E23000407040A040C044005C005CB0203020482
:103E330002050206020702410404040504060408FD
:103E43000409044105C105C205C305C405C505C66A
:103E530005C705C805C905CA05CC0081340860013A
:103E630031800A1200880007318C318C042661C12D
:103E7300104C008D07FF07FF20700020008107FF13
:103E830007FF4000070010002098002000FF2020BB
:103E9300FF3DCBFF3DDBFF3DEB08FF3DFBFF3E5FFF
:103EA300321A70000081010F0126040A040C00017C
:103EB300001100210002001200220032001300232F
:103EC300003300430024003400440054003500450F
:103ED30000550065004600560066007600570067EF
:103EE30000770087006800780088009800790089CF
:103EF300009900A900AA00BA00CA00DA00DB00EBAF
:103F030000FB010B011B012B013B014B015B016B0F
:103F1300017B018B019B01AB01BB01CB01DB01EBFE
:103F230001FB01FC01FD01FE01FF0021002F0081C7
:103F3300008200840084008500850086008C009246
:103F430000A700A800A800AD00AE01000104010510
:103F5300010A010C01140115011A0200020C0240AE
:103F630002610400040F04400461050005A705C0B5
:103F730005C0011C011D011E011F01210122012396
:0E3F8300AD430400078036403404033F067B44
:00000001FF
45 changes: 24 additions & 21 deletions mcu_program/common_src/lms7002m_calibrations.c
Expand Up @@ -22,8 +22,11 @@
#include <stdio.h>
#include <sstream>

#ifdef DRAW_GNU_PLOTS
#define PUSH_GMEASUREMENT_VALUES(value, rssi) gMeasurements.push_back({value, rssi})

#else
#define PUSH_GMEASUREMENT_VALUES(value, rssi)
#endif
#include <gnuPlotPipe.h>
GNUPlotPipe saturationPlot;
GNUPlotPipe IQImbalancePlot;
Expand Down Expand Up @@ -714,15 +717,15 @@ uint8_t CalibrateTxSetup(bool extLoopback)
Modify_SPI_Reg_bits(DC_BYP_TXTSP, 0);
Modify_SPI_Reg_bits(GC_BYP_TXTSP, 0);
Modify_SPI_Reg_bits(PH_BYP_TXTSP, 0);
Modify_SPI_Reg_bits(GCORRI_TXTSP.address, GCORRI_TXTSP.msblsb , 2047);
Modify_SPI_Reg_bits(GCORRQ_TXTSP.address, GCORRQ_TXTSP.msblsb, 2047);
Modify_SPI_Reg_bits(GCORRI_TXTSP, 2047);
Modify_SPI_Reg_bits(GCORRQ_TXTSP, 2047);
Modify_SPI_Reg_bits(CMIX_SC_TXTSP, 0);
Modify_SPI_Reg_bits(LMS7param(CMIX_GAIN_TXTSP), 0);
Modify_SPI_Reg_bits(LMS7param(CMIX_GAIN_TXTSP_R3), 0);
Modify_SPI_Reg_bits(CMIX_GAIN_TXTSP, 0);
Modify_SPI_Reg_bits(CMIX_GAIN_TXTSP_R3, 0);
//RXTSP
SetDefaults(SECTION_RxTSP);
SetDefaults(SECTION_RxNCO);
//SetDefaults(SECTION_RxNCO);
Modify_SPI_Reg_bits(GFIR3_BYP_RXTSP, 0);
Modify_SPI_Reg_bits(GFIR2_BYP_RXTSP, 1);
Modify_SPI_Reg_bits(GFIR1_BYP_RXTSP, 1);
Expand Down Expand Up @@ -765,11 +768,11 @@ uint8_t CalibrateTxSetup(bool extLoopback)
else
Modify_SPI_Reg_bits(PD_RX_AFE2, 0);
{
ROM const uint16_t TxSetupAddr[] = {0x0084, 0x0085,0x00AE,0x0101,0x0113,0x0200,0x0201,0x0202,0x0208};
ROM const uint16_t TxSetupData[] = {0x0400, 0x0001,0xF000,0x0001,0x001C,0x000C,0x07FF,0x07FF,0x0000};
ROM const uint16_t TxSetupMask[] = {0xF8FF, 0x0007,0xF000,0x1801,0x003C,0x000C,0x07FF,0x07FF,0xF10B};
ROM const uint16_t TxSetupWrOnlyAddr[] = {0x010C,0x0112,0x0115,0x0116,0x0117,0x0118,0x0119,0x011A,0x0400,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,0x0408,0x0409,0x040A,0x040C,0x0440,0x0442,0x0443, 0x0081};
ROM const uint16_t TxSetupWrOnlyData[] = {0x88E5,0x4032,0x0005,0x8180,0x280C,0x218C,0x3180,0x2E02,0x0081,0x07FF,0x07FF,0x4000,0x0000,0x0000,0x0000,0x0700,0x0000,0x0000,0x1001,0x2098,0x0020,0x0000,0x0000};
ROM const uint16_t TxSetupAddr[] = {0x0084, 0x0085,0x00AE,0x0101,0x0200,0x0201,0x0202,0x0208};
ROM const uint16_t TxSetupData[] = {0x0400, 0x0001,0xF000,0x0001,0x000C,0x07FF,0x07FF,0x0000};
ROM const uint16_t TxSetupMask[] = {0xF8FF, 0x0007,0xF000,0x1801,0x000C,0x07FF,0x07FF,0xF10B};
ROM const uint16_t TxSetupWrOnlyAddr[] = {0x010C,0x010D,0x010E,0x010F,0x0110,0x0111,0x0112,0x0113,0x0114,0x0115,0x0116,0x0117,0x0118,0x0119,0x011A,0x0400,0x0401,0x0402,0x0403,0x0407,0x040A,0x040C,0x0440, 0x0441, 0x0442, 0x0443 ,0x0409,0x0408,0x0406,0x0405,0x0404,0x0081};
ROM const uint16_t TxSetupWrOnlyData[] = {0x88E5,0x009E,0x2040,0x30C6,0x0994,0x0083,0x4032,0x03DF,0x008D,0x0005,0x8180,0x280C,0x218C,0x3180,0x2E02,0x0081,0x07FF,0x07FF,0x4000,0x0700,0x1001,0x2098}; // rest of values will be written as zeros
ROM const RegisterBatch batch = {
TxSetupAddr, TxSetupData, TxSetupMask, sizeof(TxSetupAddr)/sizeof(uint16_t),
TxSetupWrOnlyAddr, TxSetupWrOnlyData, sizeof(TxSetupWrOnlyAddr)/sizeof(uint16_t), sizeof(TxSetupWrOnlyData)/sizeof(uint16_t)};
Expand Down Expand Up @@ -962,8 +965,8 @@ uint8_t CalibrateRxSetup(bool extLoopback)
Modify_SPI_Reg_bits(0x010C, 7 << 4 | 7, 0); //PD_LNA 0
//RBB
Modify_SPI_Reg_bits(0x0115, MSBLSB(15, 14), 0); //Loopback switches disable
Modify_SPI_Reg_bits(0x0119, MSBLSB(15, 15), 0); //OSW_PGA 0
Modify_SPI_Reg_bits(0x0115, MSB_LSB(15, 14), 0); //Loopback switches disable
Modify_SPI_Reg_bits(0x0119, MSB_LSB(15, 15), 0); //OSW_PGA 0
//TRF
//reset TRF to defaults
Expand All @@ -989,23 +992,23 @@ uint8_t CalibrateRxSetup(bool extLoopback)
Modify_SPI_Reg_bits(ICT_IAMP_GG_FRP_TBB, 6);
//XBUF
Modify_SPI_Reg_bits(0x0085, MSBLSB(2, 0), 1); //PD_XBUF_RX 0, PD_XBUF_TX 0, EN_G_XBUF 1
Modify_SPI_Reg_bits(0x0085, MSB_LSB(2, 0), 1); //PD_XBUF_RX 0, PD_XBUF_TX 0, EN_G_XBUF 1
//TXTSP
SetDefaults(SECTION_TxTSP);
SetDefaults(SECTION_TxNCO);
//SetDefaults(SECTION_TxNCO);
Modify_SPI_Reg_bits(TSGFCW_TXTSP, 1);
Modify_SPI_Reg_bits(TSGMODE_TXTSP, 0x1);
Modify_SPI_Reg_bits(INSEL_TXTSP, 1);
Modify_SPI_Reg_bits(0x0208, MSBLSB(6, 4), 0x7); //GFIR3_BYP 1, GFIR2_BYP 1, GFIR1_BYP 1
Modify_SPI_Reg_bits(0x0208, MSB_LSB(6, 4), 0x7); //GFIR3_BYP 1, GFIR2_BYP 1, GFIR1_BYP 1
Modify_SPI_Reg_bits(CMIX_GAIN_TXTSP, 0);
Modify_SPI_Reg_bits(CMIX_SC_TXTSP, 1);
Modify_SPI_Reg_bits(CMIX_BYP_TXTSP, 0);
//RXTSP
SetDefaults(SECTION_RxTSP);
SetDefaults(SECTION_RxNCO);
Modify_SPI_Reg_bits(0x040C, MSBLSB(5, 3), 0x3); //GFIR2_BYP, GFIR1_BYP
//SetDefaults(SECTION_RxNCO);
Modify_SPI_Reg_bits(0x040C, MSB_LSB(5, 3), 0x3); //GFIR2_BYP, GFIR1_BYP
Modify_SPI_Reg_bits(HBD_OVR_RXTSP, 4);
Modify_SPI_Reg_bits(AGC_MODE_RXTSP, 1);
Expand All @@ -1025,10 +1028,10 @@ uint8_t CalibrateRxSetup(bool extLoopback)
EndBatch();
//BIAS
{
uint16_t rp_calib_bias = Get_SPI_Reg_bits(0x0084, MSBLSB(10, 6));
uint16_t rp_calib_bias = Get_SPI_Reg_bits(0x0084, MSB_LSB(10, 6));
SetDefaults(SECTION_BIAS);
Modify_SPI_Reg_bits(0x0084, MSBLSB(10, 6), rp_calib_bias);
}*/
Modify_SPI_Reg_bits(0x0084, MSB_LSB(10, 6), rp_calib_bias);
}
/*if(!extLoopback)
{
Expand Down

0 comments on commit 5ba685c

Please sign in to comment.