## TI Confidential - NDA Restrictions ## ## Copyright 2018 Texas Instruments Incorporated. All rights reserved. ## ## IMPORTANT: Your use of this Software is limited to those specific rights ## granted under the terms of a software license agreement between the user who ## downloaded the software, his/her employer (which must be your employer) and ## Texas Instruments Incorporated (the License). You may not use this Software ## unless you agree to abide by the terms of the License. The License limits your ## use, and you acknowledge, that the Software may not be modified, copied or ## distributed unless embedded on a Texas Instruments microcontroller which is ## integrated into your product. Other than for the foregoing purpose, you may ## not use, reproduce, copy, prepare derivative works of, modify, distribute, ## perform, display or sell this Software and/or its documentation for any ## purpose. ## ## YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE ## PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, ## INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, ## NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS ## INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT, ## NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL ## EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT ## LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL ## DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS, ## TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT ## LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. ## ## Should you have any questions regarding your right to use this Software, ## contact Texas Instruments Incorporated at http://www.TI.com . ## ## DS90xx98x-Q1 Auto Script Generation Output ## Tool Version 5.2 import time ## Serializer: DS90Ux983-Q1 ## User Inputs: ## Serializer I2C Address= 0x30 ## Max DP Lane Count = 4 ## Max DP Lane Rate = 2.7Gbps ## DPRX SSC Mode Enabled ## DP SST Mode Enabled ## DP Mode Enabled ## FPD-Link Configuration: FPD-Link III Dual ## FPD SSCG Enabled: ## Spread Type: Center ## fMOD = 33kHz ## fDEV = 0.3% ## Number of Displays = 1 ## Video Processor 0 (Stream 0) Properties: ## Total Horizontal Pixels = 4044 ## Total Vertical Lines = 760 ## Active Horizontal Pixels = 3840 ## Active Vertical Lines = 720 ## Horizontal Back Porch = 96 ## Vertical Back Porch = 24 ## Horizontal Sync = 12 ## Vertical Sync = 10 ## Horizontal Front Porch = 96 ## Vertical Front Porch = 6 ## Horizontal Sync Polarity = Negative ## Vertical Sync Polarity = Negative ## Bits per pixel = 24 ## Pixel Clock = 184.41MHz ## PATGEN Enabled ## ********************************************* ## Set up Variables ## ********************************************* serAddr = 0x30 desAddr0 = 0x70 desAlias0 = 0x70 board.WriteI2C(serAddr,0x70,desAddr0) board.WriteI2C(serAddr,0x78,desAlias0) board.WriteI2C(serAddr,0x88,0x0) board.WriteI2C(serAddr,0x3a,0x88) #Disable remote contorller on FPD port 0 and port 1 - comment out if there is an I2C controller on the remote side ## ********************************************* ## Check MODE Strapping ## ********************************************* FPD4_Strap_Rate_P0 = 0 FPD4_Strap_Rate_P1 = 0 SSCG_FDEV_STRAP = 0 SSCG_FMOD_STRAP = 0 SSCG_TYPE_STRAP = "none" TX_MODE_STS = board.ReadI2C(serAddr,0x27,1) if TX_MODE_STS == 0: print "Error: No Serializer Detected" GENERAL_CFG = board.ReadI2C(serAddr,0x7,1) if GENERAL_CFG & 0x01 == 1: print "MODE Strapped for FPD III Mode" FPD4_Strap_Rate_P0 = 0 FPD4_Strap_Rate_P1 = 0 TX_MODE_STRAP = "FPD3" else: if TX_MODE_STS & 0x0F == 0x0F: print "MODE Strapped for FPD III Mode" FPD4_Strap_Rate_P0 = 0 FPD4_Strap_Rate_P1 = 0 print "MODE Strapped for Independent Mode" TX_MODE_STRAP = "Independent" if TX_MODE_STS & 0x0F == 0x08: print "MODE Strapped for FPD IV 10.8Gbps" FPD4_Strap_Rate_P0 = 10.8 FPD4_Strap_Rate_P1 = 10.8 print "MODE Strapped for Dual Mode" TX_MODE_STRAP = "Dual" if TX_MODE_STS & 0x0F == 0x09: print "MODE Strapped for FPD IV 10.8Gbps" FPD4_Strap_Rate_P0 = 10.8 FPD4_Strap_Rate_P1 = 10.8 print "MODE Strapped for Independent Mode" TX_MODE_STRAP = "Independent" if TX_MODE_STS & 0x0F == 0x0A: print "MODE Strapped for FPD IV 13.5Gbps" FPD4_Strap_Rate_P0 = 13.5 FPD4_Strap_Rate_P1 = 13.5 print "MODE Strapped for Dual Mode" TX_MODE_STRAP = "Dual" if TX_MODE_STS & 0x0F == 0x0B: print "MODE Strapped for FPD IV 13.5Gbps" FPD4_Strap_Rate_P0 = 13.5 FPD4_Strap_Rate_P1 = 13.5 print "MODE Strapped for Independent Mode" TX_MODE_STRAP = "Independent" if TX_MODE_STS & 0x0F == 0x0C: print "MODE Strapped for FPD IV 6.75Gbps" FPD4_Strap_Rate_P0 = 6.75 FPD4_Strap_Rate_P1 = 6.75 print "MODE Strapped for Dual Mode" TX_MODE_STRAP = "Dual" if TX_MODE_STS & 0x0F == 0x0D: print "MODE Strapped for FPD IV 6.75Gbps" FPD4_Strap_Rate_P0 = 6.75 FPD4_Strap_Rate_P1 = 6.75 print "MODE Strapped for Independent Mode" TX_MODE_STRAP = "Independent" if TX_MODE_STS & 0x0F == 0x0E: print "MODE Strapped for FPD IV 3.375Gbps" FPD4_Strap_Rate_P0 = 3.375 FPD4_Strap_Rate_P1 = 3.375 print "MODE Strapped for Independent Mode" TX_MODE_STRAP = "Independent" ## ********************************************* ## Set DP Config ## ********************************************* board.WriteI2C(serAddr,0x40,0x24) #DP FIFO Errata Step 1 board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0x80) board.WriteI2C(serAddr,0x41,0x3) board.WriteI2C(serAddr,0x42,0x7) board.WriteI2C(serAddr,0x41,0x2c) board.WriteI2C(serAddr,0x42,0x33) #Override to 2.7G board.WriteI2C(serAddr,0x41,0x2d) board.WriteI2C(serAddr,0x42,0x1f) #Override to 4 Lanes board.WriteI2C(serAddr,0x1,0x40) #DPRX Reset time.sleep(0.01) # Critical Delay (10ms)! Do not remove board.WriteI2C(serAddr,0x41,0x2) board.WriteI2C(serAddr,0x42,0x67) board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0xc0) board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0x40) board.WriteI2C(serAddr,0x40,0x24) #DP FIFO Errata Step 2 - Force HPD Low to configure 983 DP Settings board.WriteI2C(serAddr,0x41,0x1) board.WriteI2C(serAddr,0x42,0x2) board.WriteI2C(serAddr,0x48,0x1) #Enable APB Interface board.WriteI2C(serAddr,0x49,0x74) #Set max advertised link rate = 2.7Gbps board.WriteI2C(serAddr,0x4a,0x0) board.WriteI2C(serAddr,0x4b,0xa) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x49,0x70) #Set max advertised lane count = 4 board.WriteI2C(serAddr,0x4a,0x0) board.WriteI2C(serAddr,0x4b,0x4) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x49,0x14) #Request min VOD swing of 0x02 board.WriteI2C(serAddr,0x4a,0x2) board.WriteI2C(serAddr,0x4b,0x2) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x49,0x18) #Set SST/MST mode and DP/eDP Mode board.WriteI2C(serAddr,0x4a,0x0) board.WriteI2C(serAddr,0x4b,0x14) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x40,0x10) #DP FIFO Errata Step 3 board.WriteI2C(serAddr,0x41,0xa3) board.WriteI2C(serAddr,0x42,0xc) board.WriteI2C(serAddr,0x41,0x23) board.WriteI2C(serAddr,0x42,0xc) board.WriteI2C(serAddr,0x41,0xa3) board.WriteI2C(serAddr,0x42,0xc) time.sleep(0.001) board.WriteI2C(serAddr,0x41,0xa3) board.WriteI2C(serAddr,0x42,0x0) board.WriteI2C(serAddr,0x40,0x14) board.WriteI2C(serAddr,0x41,0x23) board.WriteI2C(serAddr,0x42,0x0) board.WriteI2C(serAddr,0x41,0xa3) board.WriteI2C(serAddr,0x42,0x0) board.WriteI2C(serAddr,0x40,0x24) board.WriteI2C(serAddr,0x41,0x2c) board.WriteI2C(serAddr,0x42,0x3) #Release Override time.sleep(0.001) board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0x0) board.WriteI2C(serAddr,0x40,0x24) #DP FIFO Errata Step 4 - Force HPD high to trigger link training board.WriteI2C(serAddr,0x41,0x1) board.WriteI2C(serAddr,0x42,0x0) #time.sleep(0.5) # Allow time after HPD is pulled high for the source to train and provide video (may need to adjust based on source properties) ## ********************************************* ## Set FPD Port Configuration ## ********************************************* GENERAL_CFG = board.ReadI2C(serAddr,0x7,1) FPD3Mask = 0x01 GENERAL_CFG_REG = GENERAL_CFG | FPD3Mask board.WriteI2C(serAddr,0x07,GENERAL_CFG_REG) # Set FPD III Mode FPD4_CFG = board.ReadI2C(serAddr,0x5,1) TX_MODE_MASK = 0xC3 FPD4_CFG_REG = FPD4_CFG & TX_MODE_MASK board.WriteI2C(serAddr,0x05,FPD4_CFG_REG) # Set FPD III Mode board.WriteI2C(serAddr,0x59,0x63) #Set FPD3_TX_MODE to FPD III Dual with DUAL_ALIGN_DE and DISABLE_DUAL_SWAP ## ********************************************* ## Program PLLs ## ********************************************* board.WriteI2C(serAddr,0x2,0x11) #Set HALFRATE_MODE Override board.WriteI2C(serAddr,0x2,0xd1) #Set HALFRATE_MODE board.WriteI2C(serAddr,0x2,0xd0) #Unset HALFRATE_MODE Override # Program PLL for Port 0: FPD III Mode 3227.175Mbps board.WriteI2C(serAddr,0x40,0x8) board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0x9) #Set fractional mash order board.WriteI2C(serAddr,0x41,0x13) board.WriteI2C(serAddr,0x42,0xe0) #Set VCO Post Div = 4, VCO Auto Sel for CS2.0 board.WriteI2C(serAddr,0x40,0xa) board.WriteI2C(serAddr,0x41,0x5) board.WriteI2C(serAddr,0x42,0x77) #Set NDIV = 119 board.WriteI2C(serAddr,0x42,0x0) #Set NDIV = 119 board.WriteI2C(serAddr,0x41,0x18) board.WriteI2C(serAddr,0x42,0xf0) #Set DEN = 16777200 board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x41,0x1e) board.WriteI2C(serAddr,0x42,0x5e) #Set NUM = 8808030 board.WriteI2C(serAddr,0x42,0x66) board.WriteI2C(serAddr,0x42,0x86) board.WriteI2C(serAddr,0x41,0x14) board.WriteI2C(serAddr,0x42,0x99) #Set Spread Type = Center and Set RAMPX_INC = 14745 board.WriteI2C(serAddr,0x41,0x15) board.WriteI2C(serAddr,0x42,0x73) board.WriteI2C(serAddr,0x41,0x16) board.WriteI2C(serAddr,0x42,0xcc) #Set RAMPX_STOP = 204 board.WriteI2C(serAddr,0x41,0x17) board.WriteI2C(serAddr,0x42,0x40) board.WriteI2C(serAddr,0x41,0x4) board.WriteI2C(serAddr,0x42,0x9) #Set PLL Order to Fractional # Program PLL for Port 1: FPD III Mode 3227.175Mbps board.WriteI2C(serAddr,0x40,0x8) board.WriteI2C(serAddr,0x41,0x44) board.WriteI2C(serAddr,0x42,0x9) #Set fractional mash order board.WriteI2C(serAddr,0x41,0x53) board.WriteI2C(serAddr,0x42,0xe0) #Set VCO Post Div = 4, VCO Auto Sel for CS2.0 board.WriteI2C(serAddr,0x40,0xa) board.WriteI2C(serAddr,0x41,0x45) board.WriteI2C(serAddr,0x42,0x77) #Set NDIV = 119 board.WriteI2C(serAddr,0x42,0x0) #Set NDIV = 119 board.WriteI2C(serAddr,0x41,0x58) board.WriteI2C(serAddr,0x42,0xf0) #Set DEN = 16777200 board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x41,0x5e) board.WriteI2C(serAddr,0x42,0x5e) #Set NUM = 8808030 board.WriteI2C(serAddr,0x42,0x66) board.WriteI2C(serAddr,0x42,0x86) board.WriteI2C(serAddr,0x41,0x54) board.WriteI2C(serAddr,0x42,0x99) #Set Spread Type = Center and Set RAMPX_INC = 14745 board.WriteI2C(serAddr,0x41,0x55) board.WriteI2C(serAddr,0x42,0x73) board.WriteI2C(serAddr,0x41,0x56) board.WriteI2C(serAddr,0x42,0xcc) #Set RAMPX_STOP = 204 board.WriteI2C(serAddr,0x41,0x57) board.WriteI2C(serAddr,0x42,0x40) board.WriteI2C(serAddr,0x41,0x44) board.WriteI2C(serAddr,0x42,0x9) #Set PLL Order to Fractional if FPD4_Strap_Rate_P0 != 0 or FPD4_Strap_Rate_P1 != 0: board.WriteI2C(serAddr,0x40,0x4) #Set FPD Page to configure BC Settings for Port 0 and Port 1 board.WriteI2C(serAddr,0x41,0x6) board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x41,0xd) board.WriteI2C(serAddr,0x42,0x70) board.WriteI2C(serAddr,0x41,0xe) board.WriteI2C(serAddr,0x42,0x37) board.WriteI2C(serAddr,0x41,0x26) board.WriteI2C(serAddr,0x42,0xff) board.WriteI2C(serAddr,0x41,0x2d) board.WriteI2C(serAddr,0x42,0x70) board.WriteI2C(serAddr,0x41,0x2e) board.WriteI2C(serAddr,0x42,0x70) board.WriteI2C(serAddr,0x1,0x30) #Reset PLLs time.sleep(0.1) ## ********************************************* ## Enable I2C Passthrough ## ********************************************* print("Enable I2C Passthrough") I2C_PASS_THROUGH = board.ReadI2C(serAddr,0x7,1) I2C_PASS_THROUGH_MASK = 0x08 I2C_PASS_THROUGH_REG = I2C_PASS_THROUGH | I2C_PASS_THROUGH_MASK board.WriteI2C(serAddr,0x07,I2C_PASS_THROUGH_REG) #Enable I2C Passthrough ## ********************************************* ## Program VP Configs ## ********************************************* print("Configure Video Processors") # Configure VP 0 board.WriteI2C(serAddr,0x40,0x32) board.WriteI2C(serAddr,0x41,0x1) board.WriteI2C(serAddr,0x42,0xa8) #Set VP_SRC_SELECT to Stream 0 for SST Mode board.WriteI2C(serAddr,0x41,0x2) board.WriteI2C(serAddr,0x42,0x0) #VID H Active board.WriteI2C(serAddr,0x42,0xf) #VID H Active board.WriteI2C(serAddr,0x41,0x10) board.WriteI2C(serAddr,0x42,0x0) #Horizontal Active board.WriteI2C(serAddr,0x42,0xf) #Horizontal Active board.WriteI2C(serAddr,0x42,0x60) #Horizontal Back Porch board.WriteI2C(serAddr,0x42,0x0) #Horizontal Back Porch board.WriteI2C(serAddr,0x42,0xc) #Horizontal Sync board.WriteI2C(serAddr,0x42,0x0) #Horizontal Sync board.WriteI2C(serAddr,0x42,0xcc) #Horizontal Total board.WriteI2C(serAddr,0x42,0xf) #Horizontal Total board.WriteI2C(serAddr,0x42,0xd0) #Vertical Active board.WriteI2C(serAddr,0x42,0x2) #Vertical Active board.WriteI2C(serAddr,0x42,0x18) #Vertical Back Porch board.WriteI2C(serAddr,0x42,0x0) #Vertical Back Porch board.WriteI2C(serAddr,0x42,0xa) #Vertical Sync board.WriteI2C(serAddr,0x42,0x0) #Vertical Sync board.WriteI2C(serAddr,0x42,0x6) #Vertical Front Porch board.WriteI2C(serAddr,0x42,0x0) #Vertical Front Porch board.WriteI2C(serAddr,0x41,0x27) board.WriteI2C(serAddr,0x42,0x6) #HSYNC Polarity = -, VSYNC Polarity = - ## ********************************************* ## Enable PATGEN ## ********************************************* board.WriteI2C(serAddr,0x40,0x30) board.WriteI2C(serAddr,0x41,0x29) board.WriteI2C(serAddr,0x42,0x8) #Set PATGEN Color Depth to 24bpp for VP0 board.WriteI2C(serAddr,0x41,0x28) print("Enable PATGEN on VP0") board.WriteI2C(serAddr,0x42,0x95) #Enable PATGEN on VP0 - Comment out this line to disable PATGEN and enable end to end video ## ********************************************* ## Disable Frame Reset ## ********************************************* board.WriteI2C(serAddr,0x48,0x1) #Enable APB Interface board.WriteI2C(serAddr,0x49,0x18) #Check for Video board.WriteI2C(serAddr,0x4a,0xa) board.WriteI2C(serAddr,0x48,0x3) apbData0 = board.ReadI2C(serAddr,0x4b,1) apbData1 = board.ReadI2C(serAddr,0x4c,1) apbData2 = board.ReadI2C(serAddr,0x4d,1) apbData3 = board.ReadI2C(serAddr,0x4e,1) apbData = (apbData3<<24) | (apbData2<<16) | (apbData1<<8) | (apbData0<<0) if apbData & 0x01 != 0x01: print("Warning! Video is not available from the DP source yet. Disable frame reset command will not be applied!") else: print("Disable Frame Reset") board.WriteI2C(serAddr,0x49,0x18) #Disable Frame Reset for VS0 board.WriteI2C(serAddr,0x4a,0xa) board.WriteI2C(serAddr,0x4b,0x5) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x49,0x14) #Disable DTG for VS0 board.WriteI2C(serAddr,0x4a,0xa) board.WriteI2C(serAddr,0x4b,0x0) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) board.WriteI2C(serAddr,0x49,0x14) #Enable DTG for VS0 board.WriteI2C(serAddr,0x4a,0xa) board.WriteI2C(serAddr,0x4b,0x1) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) ## ********************************************* ## Enable VPs ## ********************************************* print("Enable Video Processors") board.WriteI2C(serAddr,0x43,0x0) #Set number of VPs used = 1 board.WriteI2C(serAddr,0x44,0x1) #Enable video processors ## ********************************************* ## Check if VP is synchronized to DP input ## ********************************************* time.sleep(0.1) # Delay for VPs to sync to DP source retry = 0 board.WriteI2C(serAddr,0x40,0x31) #Select VP Page board.WriteI2C(serAddr,0x41,0x28) PATGEN_VP0 = board.ReadI2C(serAddr,0x42,1) if ((PATGEN_VP0 & 0x01) == 1): print "VP0 sync status bypassed since PATGEN is enabled" VP0sts = 1 else: board.WriteI2C(serAddr,0x41,0x30) VP0sts = board.ReadI2C(serAddr,0x42,1) print "VP0sts =",(VP0sts & 0x01) while ((VP0sts & 0x01) == 0) and retry < 10: print "VP0 Not Synced - Delaying 100ms. Retry =", retry time.sleep(0.1) board.WriteI2C(serAddr,0x41,0x30) VP0sts = board.ReadI2C(serAddr,0x42,1) retry = retry + 1 if ((VP0sts & 0x01) == 1) and retry < 10: print "VP0 Syned" else: print "Unable to achieve VP0 sync" if VP0sts & 0x01 == 0: print("VPs not synchronized - performing video input reset") board.WriteI2C(serAddr,0x49,0x54) # Video Input Reset if VP is not syncronized board.WriteI2C(serAddr,0x4a,0x0) board.WriteI2C(serAddr,0x4b,0x1) board.WriteI2C(serAddr,0x4c,0x0) board.WriteI2C(serAddr,0x4d,0x0) board.WriteI2C(serAddr,0x4e,0x0) ## ********************************************* ## Set FPD3 Stream Mapping ## ********************************************* board.WriteI2C(serAddr,0x2d,0x1) #Select FPD TX Port 0 board.WriteI2C(serAddr,0x57,0x0) #Set FPD TX Port 0 Stream Source = VP0 board.WriteI2C(serAddr,0x2d,0x12) #Select FPD TX Port 1 board.WriteI2C(serAddr,0x57,0x0) #Set FPD TX Port 1 Stream Source = VP0 board.WriteI2C(serAddr,0x5b,0x2b) #Enable FPD III FIFO ## ********************************************* ## Clear CRC errors from initial link process ## ********************************************* print("Clear CRC errors from initial link process") Reg_value = board.ReadI2C(serAddr,0x2,1) Reg_value = Reg_value | 0x20 board.WriteI2C(serAddr,0x2,Reg_value) #CRC Error Reset Reg_value = board.ReadI2C(serAddr,0x2,1) Reg_value = Reg_value & 0xdf board.WriteI2C(serAddr,0x2,Reg_value) #CRC Error Reset Clear board.WriteI2C(serAddr,0x2d,0x1)