This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/LM96063: LM96063 PWM can not output

Part Number: LM96063
Other Parts Discussed in Thread: LM63

Tool/software: Linux

Hi,

   We have LM96063 for the fan controller "without" remote diode connection design. Currently encounter a problem that cannot directly output PWM by setting reg 0x4c. So far we don't conduct the manual LUT algorithm , only want to directly output PWM. Do we need to configure other registers before setting 0x4c for outputing PWM? Below is our current setting of registers,

[ 50.208985] Reg 0x0 ==> 0x22
[ 50.209674] Reg 0x1 ==> 0x7f
[ 50.211942] Reg 0x2 ==> 0x96
[ 50.214537] Reg 0x3 ==> 0x80
[ 50.217496] Reg 0x4 ==> 0x8
[ 50.220165] Reg 0x5 ==> 0x46
[ 50.222773] Reg 0x6 ==> 0x0
[ 50.225897] Reg 0x7 ==> 0x69
[ 50.228325] Reg 0x8 ==> 0x0
[ 50.231733] Reg 0x9 ==> 0x80
[ 50.234115] Reg 0xa ==> 0x8
[ 50.237354] Reg 0xb ==> 0x46
[ 50.239680] Reg 0xc ==> 0x0
[ 50.242966] Reg 0xd ==> 0x69
[ 50.245341] Reg 0xe ==> 0x0
[ 50.248370] Reg 0xf ==> 0x0
[ 50.251097] Reg 0x10 ==> 0x0
[ 50.254110] Reg 0x11 ==> 0x0
[ 50.257013] Reg 0x12 ==> 0x0
[ 50.259729] Reg 0x13 ==> 0x0
[ 50.263027] Reg 0x14 ==> 0x0
[ 50.265516] Reg 0x15 ==> 0x0
[ 50.268321] Reg 0x16 ==> 0xa4
[ 50.271059] Reg 0x0 ==> 0x22
[ 50.274103] Reg 0x1 ==> 0x7f
[ 50.277124] Reg 0x2 ==> 0x96
[ 50.279758] Reg 0x3 ==> 0x80
[ 50.282908] Reg 0x4 ==> 0x8
[ 50.285741] Reg 0x5 ==> 0x46
[ 50.287993] Reg 0x6 ==> 0x0
[ 50.291145] Reg 0x7 ==> 0x69
[ 50.293580] Reg 0x8 ==> 0x0
[ 50.296772] Reg 0x9 ==> 0x80
[ 50.299359] Reg 0xa ==> 0x8
[ 50.303389] Reg 0xb ==> 0x46
[ 50.305200] Reg 0xc ==> 0x0
[ 50.308165] Reg 0xd ==> 0x69
[ 50.310626] Reg 0xe ==> 0x0
[ 50.313947] Reg 0xf ==> 0x0
[ 50.316352] Reg 0x10 ==> 0x0
[ 50.319064] Reg 0x11 ==> 0x0
[ 50.322145] Reg 0x12 ==> 0x0
[ 50.325262] Reg 0x13 ==> 0x0
[ 50.327960] Reg 0x14 ==> 0x0
[ 50.331066] Reg 0x15 ==> 0x0
[ 50.333755] Reg 0x16 ==> 0xa4
[ 50.336614] Reg 0x19 ==> 0x6e
[ 50.339082] Reg 0x21 ==> 0xa
[ 50.342492] Reg 0x30 ==> 0x0
[ 50.345435] Reg 0x31 ==> 0xff
[ 50.348181] Reg 0x32 ==> 0x0
[ 50.351096] Reg 0x33 ==> 0x0
[ 50.354022] Reg 0x45 ==> 0x0
[ 50.356901] Reg 0x46 ==> 0x0
[ 50.359779] Reg 0x47 ==> 0x0
[ 50.362978] Reg 0x48 ==> 0xff
[ 50.365531] Reg 0x49 ==> 0xff
[ 50.368320] Reg 0x4a ==> 0x30
[ 50.371324] Reg 0x4b ==> 0x3f
[ 50.374804] Reg 0x4c ==> 0x0
[ 50.377311] Reg 0x4d ==> 0x17
[ 50.380131] Reg 0x4e ==> 0x0
[ 50.383556] Reg 0x4f ==> 0x4
[ 50.386084] Reg 0x50 ==> 0x7f
[ 50.388808] Reg 0x51 ==> 0x3f
[ 50.391900] Reg 0x52 ==> 0x7f
[ 50.394575] Reg 0x53 ==> 0x3f
[ 50.397716] Reg 0x54 ==> 0x7f
[ 50.400546] Reg 0x55 ==> 0x3f
[ 50.403517] Reg 0x56 ==> 0x7f
[ 50.406486] Reg 0x57 ==> 0x3f
[ 50.409386] Reg 0x58 ==> 0x7f
[ 50.412522] Reg 0x59 ==> 0x3f
[ 50.415252] Reg 0x5a ==> 0x7f
[ 50.418210] Reg 0x5b ==> 0x3f
[ 50.421117] Reg 0x5c ==> 0x7f
[ 50.424080] Reg 0x5d ==> 0x3f
[ 50.427224] Reg 0x5e ==> 0x7f
[ 50.429632] Reg 0x5f ==> 0x3f
[ 50.433154] Reg 0x60 ==> 0x7f
[ 50.435919] Reg 0x61 ==> 0x3f
[ 50.438852] Reg 0x62 ==> 0x7f
[ 50.441955] Reg 0x63 ==> 0x3f
[ 50.444720] Reg 0x64 ==> 0x7f
[ 50.447756] Reg 0x65 ==> 0x3f
[ 50.451045] Reg 0x66 ==> 0x7f
[ 50.453794] Reg 0x67 ==> 0x3f
[ 50.456723] Reg 0xBF ==> 0x0
[ 50.459781] Reg 0xFE ==> 0x1
[ 50.462625] Reg 0xFF ==> 0x49

regards,

Sean

  • Hi,

    We are using linux kernel 4.9 sys file to set pwm1 with value 8, the duty cycle will be set to 1 in 0x4c,but no PWM output. Below is the setting

    [ 3431.226286] Reg 0x0 ==> 0x1c
    [ 3431.227114] Reg 0x1 ==> 0x7f
    [ 3431.228944] Reg 0x2 ==> 0x96
    [ 3431.231780] Reg 0x3 ==> 0x80
    [ 3431.234791] Reg 0x4 ==> 0x8
    [ 3431.237565] Reg 0x5 ==> 0x46
    [ 3431.239939] Reg 0x6 ==> 0x0
    [ 3431.243221] Reg 0x7 ==> 0x69
    [ 3431.245737] Reg 0x8 ==> 0x0
    [ 3431.248753] Reg 0x9 ==> 0x80
    [ 3431.251315] Reg 0xa ==> 0x8
    [ 3431.254423] Reg 0xb ==> 0x46
    [ 3431.256924] Reg 0xc ==> 0x0
    [ 3431.260005] Reg 0xd ==> 0x69
    [ 3431.262647] Reg 0xe ==> 0x0
    [ 3431.265972] Reg 0xf ==> 0x0
    [ 3431.268352] Reg 0x10 ==> 0x0
    [ 3431.270761] Reg 0x11 ==> 0x0
    [ 3431.274321] Reg 0x12 ==> 0x0
    [ 3431.276970] Reg 0x13 ==> 0x0
    [ 3431.279849] Reg 0x14 ==> 0x0
    [ 3431.283028] Reg 0x15 ==> 0x0
    [ 3431.285526] Reg 0x16 ==> 0xa4
    [ 3431.288391] Reg 0x0 ==> 0x1c
    [ 3431.291070] Reg 0x1 ==> 0x7f
    [ 3431.294255] Reg 0x2 ==> 0x96
    [ 3431.297105] Reg 0x3 ==> 0x80
    [ 3431.299986] Reg 0x4 ==> 0x8
    [ 3431.302945] Reg 0x5 ==> 0x46
    [ 3431.305389] Reg 0x6 ==> 0x0
    [ 3431.308563] Reg 0x7 ==> 0x69
    [ 3431.311095] Reg 0x8 ==> 0x0
    [ 3431.314250] Reg 0x9 ==> 0x80
    [ 3431.316656] Reg 0xa ==> 0x8
    [ 3431.319759] Reg 0xb ==> 0x46
    [ 3431.322484] Reg 0xc ==> 0x0
    [ 3431.325357] Reg 0xd ==> 0x69
    [ 3431.327878] Reg 0xe ==> 0x0
    [ 3431.330876] Reg 0xf ==> 0x0
    [ 3431.333620] Reg 0x10 ==> 0x0
    [ 3431.336324] Reg 0x11 ==> 0x0
    [ 3431.339500] Reg 0x12 ==> 0x0
    [ 3431.342503] Reg 0x13 ==> 0x0
    [ 3431.345231] Reg 0x14 ==> 0x0
    [ 3431.348064] Reg 0x15 ==> 0x0
    [ 3431.351013] Reg 0x16 ==> 0xa4
    [ 3431.353743] Reg 0x19 ==> 0x6e
    [ 3431.356719] Reg 0x21 ==> 0xa
    [ 3431.359594] Reg 0x30 ==> 0x0
    [ 3431.362906] Reg 0x31 ==> 0xff
    [ 3431.365444] Reg 0x32 ==> 0x0
    [ 3431.368301] Reg 0x33 ==> 0x0
    [ 3431.371210] Reg 0x45 ==> 0x0
    [ 3431.374070] Reg 0x46 ==> 0x0
    [ 3431.376919] Reg 0x47 ==> 0x0
    [ 3431.379490] Reg 0x48 ==> 0xff
    [ 3431.382805] Reg 0x49 ==> 0xff
    [ 3431.385564] Reg 0x4a ==> 0x30
    [ 3431.388559] Reg 0x4b ==> 0x3f
    [ 3431.391618] Reg 0x4c ==> 0x1
    [ 3431.394412] Reg 0x4d ==> 0x17
    [ 3431.397330] Reg 0x4e ==> 0x0
    [ 3431.400184] Reg 0x4f ==> 0x4
    [ 3431.403462] Reg 0x50 ==> 0x7f
    [ 3431.406268] Reg 0x51 ==> 0x3f
    [ 3431.408911] Reg 0x52 ==> 0x7f
    [ 3431.412098] Reg 0x53 ==> 0x3f
    [ 3431.414825] Reg 0x54 ==> 0x7f
    [ 3431.417767] Reg 0x55 ==> 0x3f
    [ 3431.420734] Reg 0x56 ==> 0x7f
    [ 3431.423787] Reg 0x57 ==> 0x3f
    [ 3431.426689] Reg 0x58 ==> 0x7f
    [ 3431.429766] Reg 0x59 ==> 0x3f
    [ 3431.432710] Reg 0x5a ==> 0x7f
    [ 3431.435483] Reg 0x5b ==> 0x3f
    [ 3431.438410] Reg 0x5c ==> 0x7f
    [ 3431.441491] Reg 0x5d ==> 0x3f
    [ 3431.444279] Reg 0x5e ==> 0x7f
    [ 3431.447228] Reg 0x5f ==> 0x3f
    [ 3431.450179] Reg 0x60 ==> 0x7f
    [ 3431.452997] Reg 0x61 ==> 0x3f
    [ 3431.456128] Reg 0x62 ==> 0x7f
    [ 3431.458743] Reg 0x63 ==> 0x3f
    [ 3431.462337] Reg 0x64 ==> 0x7f
    [ 3431.464996] Reg 0x65 ==> 0x3f
    [ 3431.467956] Reg 0x66 ==> 0x7f
    [ 3431.471088] Reg 0x67 ==> 0x3f
    [ 3431.473846] Reg 0xBF ==> 0x0
    [ 3431.476760] Reg 0xFE ==> 0x1
    [ 3431.479770] Reg 0xFF ==> 0x49

    regards,

    Sean
  • Hello Sean,

    Let me check what is the configuration required to get PWM output w/o the Remote Diodes connected for the LM96063.
  • Hi Amit,

         Attach our current FAN controller circuit schematic for your reference. Thanks.

     regards,

    Sean

  • Hello Sean,

    Thank you for sharing the schematic. I do not see any pull up on the I2C line from the level shifter and the LM96063 on the signal lines FAN_I2C_SCL_3P3 and FAN_I2C_SDA_3P3. Can you please confirm if there are pull up resistors and when in Idle state of the system, the SCL and SDA are indeed "Logic High"?

    If possible can you please send a snapshot of the I2C bus transaction to make sure that the address and data written by the controller to the LM96063 is being ACK'ed?
  • Hi Amit,

    The dumped values of registers that post in previous reply are read from i2c transaction. You can check the register 0xFF for the chip id 0x49. Will re-measure the i2c bus transaction and send you the wave form for the reference,before this,do you have any suggestion on the register configuration without remote diode design?

    regards,
    Sean
  • Hi Amit,

         Check with hardware team the FAN_I2C_SCL_3P3 and FAN_I2C_SDA_3P3 are Logical high in idle state and does not pull high in current schematic. Attached the wave form that access the reg 0x4c for writing 0x0b.

    regards,

    Sean

  • Hello Sean,

    I am in the process of setting up an LM96063 and hence the delay in the response. A quick question on the PWM output: Is it high or low continuously?
  • Hi Amit,

        Default is high,can make FAN on. After setting PWOP of reg 0x4A, FAN off.

    regards,

    Sean

  • Hello Sean,

    I wrote the following sequence to start the FAN's PWM output. Can you please check the same on your side

    Reg 0x03:Write 0x44
    Reg 0x4A:Write 0x30
    Reg 0x4B:Write 0x0F
    Reg 0x4D:Write 0x12
    Reg 0x4C:Write 0x1B

    At this point I see the PWM output at ~10 kHz with a duty cycle of ~25%
  • Hi Amit,

    I got stuck on reg 0x03. It's weird that the value of reg 0x03 is 0x00 while going process init function. But the value will be changed to 0x80 for awhile and currently cannot find in which code location that the ALERT MASK bit is set. I tried to set Reg 0x03:Write 0x44
    Reg 0x4A:Write 0x30
    Reg 0x4B:Write 0x0F
    Reg 0x4D:Write 0x12
    Reg 0x4C:Write 0x1B
    after driver initialization end,the PWM cannot output. So I would like to know if these registers can be set in any time?

    regards,

    Sean
  • Hi Amit,

    I checked the every function of linux kernel driver lm63.c that no function will set the bit ALTMSK of register 0x03. The value of register 0x03 is 0x00 after lm63_probe finish,but will be 0x80 after kernel boot sequence. Can you provide all value of register that we want to write the value in application level?
    Thanks.
    regards,

    Sean
  • Hi Amit,

    If the setting can be set in any time, could you provide all value of register ? We want to write directly to LM96063 in application level.

    regards,

    Sean
  • Hello Sean,

    I am not using Linux system, but a baremetal system using a microcontroller. I can read the registers, but that would not explain why register 0x03 reads 0x80.
  • Hi Amit,

            Current status of our pltatform is RDFA=high of reg 0x02. Does this affect the function of PWM?

    regards,

    Sean

  • Hi Amit,

    We tried to add a remote diode and PWM can output. The RDFA of reg 0x02 can be low right now. We intend to add a remote diode in schematic. Thanks.

    regards,
    Sean