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.

LMK04826BEVM: Programming sequence , can't write all registers

Part Number: LMK04826BEVM

Tool/software:

Hello Everyone, 

I 'm trying to ouptut severals clock from the LMK04826B evaluation board.  i have setup a configuration using TICSPRO software.

Following the programming sequence in section 9.5.1 from datasheet, i have some issues with some registers that seems to be "locked" and can't be written. here a log of my programming application.

The application is performing a write then a readback to check that the registers have been written.

 

 

starting LMK init sequence...
reseting lmk...
reset LMK OK
writing : 0000 00 axi addr map : 0x80000000
writing : 0002 00 axi addr map : 0x80000008
writing : 0003 00 axi addr map : 0x8000000c
warning : new attempt to write at 0003
warning : new attempt to write at 0003
error : all attempt to set 0003 have failed...aborting...
writing : 0004 00 axi addr map : 0x80000010
warning : new attempt to write at 0004
warning : new attempt to write at 0004
error : all attempt to set 0004 have failed...aborting...
writing : 0005 00 axi addr map : 0x80000014
warning : new attempt to write at 0005
warning : new attempt to write at 0005
error : all attempt to set 0005 have failed...aborting...
writing : 0006 00 axi addr map : 0x80000018
warning : new attempt to write at 0006
warning : new attempt to write at 0006
error : all attempt to set 0006 have failed...aborting...
writing : 000C 00 axi addr map : 0x80000030
warning : new attempt to write at 000C
warning : new attempt to write at 000C
error : all attempt to set 000C have failed...aborting...
writing : 000D 00 axi addr map : 0x80000034
warning : new attempt to write at 000D
warning : new attempt to write at 000D
error : all attempt to set 000D have failed...aborting...
writing : 0100 07 axi addr map : 0x80000400
writing : 0101 00 axi addr map : 0x80000404
writing : 0102 00 axi addr map : 0x80000408
writing : 0103 00 axi addr map : 0x8000040c
writing : 0104 00 axi addr map : 0x80000410
writing : 0105 00 axi addr map : 0x80000414
writing : 0106 00 axi addr map : 0x80000418
writing : 0107 11 axi addr map : 0x8000041c
warning : new attempt to write at 0107
warning : new attempt to write at 0107failed...aborting...
error : all attempt to set 0107 have 
writing : 0108 0E axi addr map : 0x80000420
warning : new attempt to write at 0108
warning : new attempt to write at 0108
error : all attempt to set 0108 have failed...aborting...
writing : 0109 00 axi addr map : 0x80000424
writing : 010A 00 axi addr map : 0x80000428
writing : 010B 00 axi addr map : 0x8000042c
writing : 010C 00 axi addr map : 0x80000430
writing : 010D 00 axi addr map : 0x80000434
writing : 010E 00 axi addr map : 0x80000438
writing : 010F 11 axi addr map : 0x8000043c
warning : new attempt to write at 010F
warning : new attempt to write at 010F
error : all attempt to set 010F have failed...aborting...
writing : 0110 00 axi addr map : 0x80000440
writing : 0111 00 axi addr map : 0x80000444
writing : 0112 00 axi addr map : 0x80000448
writing : 0113 00 axi addr map : 0x8000044c
writing : 0114 00 axi addr map : 0x80000450
writing : 0115 00 axi addr map : 0x80000454
writing : 0116 00 axi addr map : 0x80000458
writing : 0117 11 axi addr map : 0x8000045c
warning : new attempt to write at 0117
warning : new attempt to write at 0117
error : all attempt to set 0117 have failed...aborting...
writing : 0118 0C axi addr map : 0x80000460
warning : new attempt to write at 0118
warning : new attempt to write at 0118
error : all attempt to set 0118 have failed...aborting...
writing : 0119 00 axi addr map : 0x80000464
writing : 011A 00 axi addr map : 0x80000468
writing : 011B 00 axi addr map : 0x8000046c
writing : 011C 00 axi addr map : 0x80000470
writing : 011D 00 axi addr map : 0x80000474
writing : 011E 00 axi addr map : 0x80000478
writing : 011F 12 axi addr map : 0x8000047c
warning : new attempt to write at 011F
warning : new attempt to write at 011F
error : all attempt to set 011F have failed...aborting...
writing : 0120 0D axi addr map : 0x80000480
warning : new attempt to write at 0120
warning : new attempt to write at 0120
error : all attempt to set 0120 have failed...aborting...
writing : 0121 00 axi addr map : 0x80000484
writing : 0122 00 axi addr map : 0x80000488
writing : 0123 00 axi addr map : 0x8000048c
writing : 0124 00 axi addr map : 0x80000490
writing : 0125 00 axi addr map : 0x80000494
writing : 0126 00 axi addr map : 0x80000498
writing : 0127 11 axi addr map : 0x8000049c
warning : new attempt to write at 0127
warning : new attempt to write at 0127
error : all attempt to set 0127 have failed...aborting...
writing : 0128 0F axi addr map : 0x800004a0
warning : new attempt to write at 0128
warning : new attempt to write at 0128
error : all attempt to set 0128 have failed...aborting...
writing : 0129 00 axi addr map : 0x800004a4
writing : 012A 00 axi addr map : 0x800004a8
writing : 012B 00 axi addr map : 0x800004ac
writing : 012C 00 axi addr map : 0x800004b0
writing : 012D 00 axi addr map : 0x800004b4
writing : 012E 00 axi addr map : 0x800004b8
writing : 012F 11 axi addr map : 0x800004bc
warning : new attempt to write at 012F
warning : new attempt to write at 012F
error : all attempt to set 012F have failed...aborting...
writing : 0130 00 axi addr map : 0x800004c0
writing : 0131 00 axi addr map : 0x800004c4
writing : 0132 00 axi addr map : 0x800004c8
writing : 0133 00 axi addr map : 0x800004cc
writing : 0134 00 axi addr map : 0x800004d0
writing : 0135 00 axi addr map : 0x800004d4
writing : 0136 00 axi addr map : 0x800004d8
writing : 0137 11 axi addr map : 0x800004dc
warning : new attempt to write at 0137
warning : new attempt to write at 0137
error : all attempt to set 0137 have failed...aborting...
writing : 0138 00 axi addr map : 0x800004e0
writing : 0139 00 axi addr map : 0x800004e4
writing : 013A 00 axi addr map : 0x800004e8
writing : 013B 00 axi addr map : 0x800004ec
writing : 013C 00 axi addr map : 0x800004f0
writing : 013D 00 axi addr map : 0x800004f4
writing : 013E 00 axi addr map : 0x800004f8
writing : 013F 00 axi addr map : 0x800004fc
writing : 0140 00 axi addr map : 0x80000500
writing : 0141 00 axi addr map : 0x80000504
writing : 0142 00 axi addr map : 0x80000508
writing : 0143 00 axi addr map : 0x8000050c
writing : 0144 00 axi addr map : 0x80000510
writing : 0145 00 axi addr map : 0x80000514
writing : 0146 00 axi addr map : 0x80000518
writing : 0147 18 axi addr map : 0x8000051c
warning : new attempt to write at 0147
warning : new attempt to write at 0147
error : all attempt to set 0147 have failed...aborting...
writing : 0148 00 axi addr map : 0x80000520
writing : 0149 00 axi addr map : 0x80000524
writing : 014A 00 axi addr map : 0x80000528
writing : 014B 00 axi addr map : 0x8000052c
writing : 014C 00 axi addr map : 0x80000530
writing : 014D 00 axi addr map : 0x80000534
writing : 014E 00 axi addr map : 0x80000538
writing : 014F 00 axi addr map : 0x8000053c
writing : 0150 00 axi addr map : 0x80000540
writing : 0151 00 axi addr map : 0x80000544
writing : 0152 00 axi addr map : 0x80000548
writing : 0153 00 axi addr map : 0x8000054c
writing : 0154 01 axi addr map : 0x80000550
writing : 0155 00 axi addr map : 0x80000554
writing : 0156 01 axi addr map : 0x80000558
writing : 0157 00 axi addr map : 0x8000055c
writing : 0158 01 axi addr map : 0x80000560
writing : 0159 00 axi addr map : 0x80000564
writing : 015A 01 axi addr map : 0x80000568
writing : 015B 00 axi addr map : 0x8000056c
writing : 015C 00 axi addr map : 0x80000570
writing : 015D 00 axi addr map : 0x80000574
writing : 015E 00 axi addr map : 0x80000578
writing : 015F 00 axi addr map : 0x8000057c
writing : 0160 00 axi addr map : 0x80000580
writing : 0161 05 axi addr map : 0x80000584
warning : new attempt to write at 0161
warning : new attempt to write at 0161
error : all attempt to set 0161 have failed...aborting...
writing : 0162 01 axi addr map : 0x80000588
writing : 0163 00 axi addr map : 0x8000058c
writing : 0164 00 axi addr map : 0x80000590
writing : 0165 01 axi addr map : 0x80000594
error :register 0x145 != 127

I'm not worried about the writing issues from 0x03 to 0x0D since they are product ID , vendor ID stuff there are probably in read only , and i plan to remove the programming of these in my app.

but for other registers like 0x107 , 0x108 and so on i don't have answers.

Could you please advice or give details on the programming sequence ? should i wait for something before writing  some specifics registers ? if yes which registers should i check ?

( have tried waiting 10 ms between each write without succes)

Best regards,

Pierre

  • Hello,

    I apologize for the delay.  I will get back to you tomorrow.  

    Regards,

    Will

  • Pierre,

    I apologize for the wait.  First, are you able to readback any registers yet already?  Have you guaranteed your SPI setup is correct?

    Looking forward to your reply,

    Will

  • Hello William, 

    Yes i'm able to readback any registers. SPI (12Mhz) has been checked through osciloscope and is fine according 7.6 section of the datasheet.

    To be more precise on the issue :  

    My app is writing to one register and just after do readback to check that the register has been indeed written. If the readback is different from the writting, the app will try few attempt ( max 3) then go on the next register.

    Regarding this , some register can't be written but , after the app has finished. But, if i try to manually set the register that have failed during the app(tested with 0x108) ...it works , i can write them...so i think this very related to the sequence where at some time they can't be written  but can be later ?

    Another question about the STEP2 in the programming  sequence in 9.5.1 

    Could you elaborate on the "Ensure" ? ,  I mean , should i set (write) 0x145 to 127 or juste check(read) that 0x145 is =127 after the programming of the registers from 0x000 to 0x165 ?

    Because currently when i read 0x145 i never get 127 but only 0.   In the ticspro file it is also set to 0.

    So my app has written 0 on it... , should i simply remove the write operation of 0x145 from the sequence and juste check it  or set it to 127 ?

  • Pierre,

    I idea I have is that it has something to do with the bits before the address which seem to be changing arbitrarily.  

    Because it seems like it is only when these are being set to non-zero that we see a failed write.

    Let me know if setting these to 0 helps, or if I am misunderstanding.  

    Could you elaborate on the "Ensure" ? ,  I mean , should i set (write) 0x145 to 127 or juste check(read) that 0x145 is =127 after the programming of the registers from 0x000 to 0x165 ?

    You should write 127 to 0x145. 

    Regards,

    Will