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.

PGA900: PGA900 OTP

Part Number: PGA900
Other Parts Discussed in Thread: , UNIFLASH, USB2ANY

I have debugged my code of pga900 by PGA900EVM,and now I want to OTP my code into pga900 and weld pga900 on my own board.But i don't how to do it withont somemore details.

I have a PGA900EVM and XDS200, and I succeeeded in showing ADC capture wave in PGA900GUI and transmited ADC_DATA by UART without GUI.

I have checked E2E about related questions, I notices there are some details I should pay attention, such as I need close J15 jumper to supply 7.5V to VP_OTP, and I need to modify PGA900.gel, but I still don's kmow the details and correct procedure to OPT.

And I tried to OTP by Uniflash,there also are some errors in picture blow.

In this step, I should choose NO1 or NO2;

and in this step after i click the browse button I should choose PGA900.hex or PGA900.out.

In CCS, i should debug my code in Debug or Realease?

I am a green hand in pga900 and CCS, so could you tell me some more details and show me the correct procedure , the more detailed information the better it will be.

thanks for your patience, and hope for your reply.

  • In PGA900 GUI, it seems also can OTP, but when i tried VERIFY OTP it seems doesn't work.

  • https://e2e.ti.com/support/sensors/f/sensors-forum/891673/ccs-pga900-pga900-programming-pga900/3305674?tisearch=e2e-sitesearch&keymatch=%25252525252525252520user%2525252525252525253A324334#3305674

    In this quetion,it looks like my error. I tried to solve my issue by your answer, but my CCS version is 5.5.0.00077, it's suggested by chinese TI support.

    In my CCS, it doesn't have option of ARM Hex Utility

  • Hello,

    Yes, you should use the ARM hex utility to generate a hex file to program the PGA900. You may need a later version of CCS to do this. To generate the hex file, you will need to build your project in release mode, otherwise the hex file will not be created.

    When programming through CCS or Uniflash, you will need to update the gel file to change the memory space to map to the OTP instead of the DEVRAM. Please see this E2E thread for more information on updating the gel file: https://e2e.ti.com/support/sensors/f/sensors-forum/878462/pga900-programming-pga900/3254273#3254273

    Also when using Uniflash it is usually simplest to use the same ccxml target configuration file that you use when debugging in CCS. Just find the file location for your target configuration and load that into Uniflash to make sure your connection is correct.

    Finally, if you are having trouble with the verification step in the EVM GUI, I suggest testing with a blank PGA900 device to make sure that your communication is working properly. You can try to verify the PGA900 OTP against an all zeros hex file (attached). 1300.pga900_OTP_allz_8k.hex

    Note that the PGA900 OTP is one-time programmable. So if you have tried to program something previously, you cannot overwrite it.


    Regards,

  • I can't reply your answre by insering picture,so i world describe my issue.

    You mentioned that I need to build my project in release mode, but in debug mode I build my project, it still will create hex file.

    Can I use the hex file under debug mode?

  • And I use pga900 GUI to check OTP memory, no matter my hex or zeros hex file you supply, I click LOAD OTP Memory it seems no response.

    And then I click VERIFY OTP, these two hex file neither make status bar turn green

  • Hi Gibson,

    When you attempt the programming through GUI, is the M0 in reset? None of the digital interfaces can communicate with the PGA900 unless the microcontroller is in reset. 

    And if the hex file is still generated in debug mode, it can be used to program the device.


    Regards,

  • Hi Scott,

    I will tell you how i tried but failed in details.I first power on PGA900 EVM on J21, and I connect PGA900 EVM to PC by XDS200, and connect USB2ANY to PC.I close the jumper J15.

    Then I run debug in CCS, and in PGA900 GUI, in LOW Level Configuration,  and MICRO_INTERFACE_CONTROL register, I choose Digital interface and Microcontroller Reset.

    Then I click LOAD OTP Memory it seems still no response.

    And then I close CCS, run PGA900 alone, it seems still doesn't work.

    Regards,

  • Hello Gibson,

    CCS and the XDS200 are not used when programming the OTP through the EVM and GUI. The simplest way to establish communication with the PGA900 using the EVM and GUI, is with the EVM jumpers in the default condition (except for J15, which should be closed), make sure "SPI" is selected at the top of the GUI, and click the button that says "Microcontroller" it should turn to say "Digital Interface". From there, go to the low-level configuration page, and read all. You should be able to see that the communication is working if the read data changes for the registers, including the MICRO_INTERFACE_CONTROL register being set to 0x03.

    At this point the digital communication should be working, and you can complete the OTP loading procedure I described previously.

    I want to mention again that the OTP is not re-writeable. If you have ever programmed anything into the OTP, then you try to program something different and verify it, the verification will fail.

    Regards,

    Scott

  • Hello Scott, you mean when I program OTP through the EVM and GUI, I don't need to connect J17 with XDS200? I just need connet by USB2ANY with EVM and PC?

    regards

  • Hello Gibson,

    That is correct. You do not need to connect the XDS200 when programming OTP through the EVM GUI.


    Regards,

  • Hello,Scott. If I just want to use GUI to VERIFY OTP, do i need close J15 too?

    I put a new PGA900 on EVM, and i use all zeros hex file to VERIFY OTP in GUI withou closing J15, but it doesn't turn green either

  • Hi Gibson,

    You should not need to close J15 to verify the OTP. With J15 open, and no XDS200 connected to the EVM, as long as you can put the PGA900 into reset and confirm that digital communication is working properly, you should be able to verify that the OTP is empty by loading the all zeros hex file and clicking the Verify OTP button.


    Regards,

    Scott

  • Hello,Scott.I tried your advertise, but i still can't solve the OTP problem.

    I tried to OTP through UNIFLASH,but it occurs some error,"Eror initializing emulator: The XDS200 update cannot work if more than one XDS2xx probe is attached".

    This error happened when I connect EVM with USB2ANY and XDS200 ,the connect state just as same as I debug my code in CCS. But it seems cannot work well in Uniflash.

    Do i need disconnect USB2ANY when I OTP by Uniflash?

  • Hello,Scott.

    And because I cannt OTP by Uniflash,I tried to OTP by GUI. I load my .hex file generated by debugging in CCS.Then I close J15 and affirm MICRO_INTERFACE_CONTROL register's value is 0x03.And then I click the "Load OTP Memory" and OTP status come to 100%.

    But i find if power off EVM and power on again, and disconnect XDS200 just connect USB2ANY with EVM, i verify OTP, the match led still can turn green. It seems the operation i did before to OTP by EVM GUI doesn't work.

    BUT when I still use this “OTPED” pga900 on EVM, and debug in CCS.The output become strange compared to OTP before,the OTP operation by EVM GUI seems influce this pga900 indeed.

    So i'm confused now. If  the pga900 OTP completed by GUI, it can't debug again in CCS?But how should I test my PGA900 OTP successfully?And is there any way I can check the value of 8K OTP memory to make sure I have OTP the pga900 or not? Because the GUI's verify OTP seems have some problem.

  • And you mentioned the PGA900.gel to remap the memory space, but i'm not sure the coorect operation order.

    Should I first modify the .gel and then generate .hex in CCS, and then I can OTP in Uniflash or EVM GUI?

  • Hello,Scott.

    I click "Load OTP Memory"  and already be in digital interface mode, with the M0 in reset before starting the OTP loading procedure.

    Once the loading is complete, I click "Verify OTP" to check that it was successful.But the LED did'nt turn green.

  • Hello,

    Just to clarify again, the all zeros hex file will only verify correctly on a brand new PGA900 device that has never been programmed before.

    In general I would not have both the USB2ANY and the XDS200 connected to the PC at the same time. I don't think there should be an issue with UNIFLASH or CCS misidentifying the USB ports, but it is best to avoid any potential conflicts.

    I'm a bit confused by what you're describing. To program the OTP using the GUI, only connect the USB2ANY. Do not connect the XDS200. Close J15, power on the EVM, put the M0 in reset, and load your hex file. The green box should light up to show a successful verification. This will only happen if the part was never previously programmed, or if it was previously programmed with the exact same hex file. At this point, the part is programmed and you should be able to verify it using the same procedure after powering down the EVM, and clicking verify instead of program. You will have to load your hex file to verify it.

    If you have programmed the OTP, there isn't much point in debugging it in CCS, since you can't change anything. For debugging, it is best to use the DEVRAM. If you are using the original gel file (which remaps to the DEVRAM) then you should be able to debug regardless of whether or not the OTP is programmed.


    Regards,

  • Hello,Scott.

    "In general I would not have both the USB2ANY and the XDS200 connected to the PC at the same time." When I debug my code in CCS and I want to see the output in GUI, I must have both the USB2ANY and the XDS200 connected to the PC at the same time.

    Then i tried as you say, "program the OTP using the GUI, only connect the USB2ANY. Do not connect the XDS200. Close J15, power on the EVM, put the M0 in reset, and load your hex file. "with a never previously programmed pga900.But the difference is after I click LOAD OTP Memory button and OTP Status become 100%,the green box didn't light up.And then I click VARIFY OTP button and OTP Status become 100% and the green box turn light.

    After that, I think I have programmed successfully.And I tried to debug it in CCS,because I want to check the programmed pga900's output.I connect the XDS200 and configure pga900 usart output to check if pga900 work correctly.

    After this operaion, I tried to VERIFY OTP again in GUI, but this time the green box didn't light up.Whether I load my hex or all zero hex, the green box didn't light up again.

    And then I modify my code and debug in CCS with the same pga900 I described before, and all the process I use the same pga900.I modify the PGAIN,and judge from the UART output results, the PGAIN has been modified successfully, which is unexpectedly if this pga900 is programmed previously.

    I guess there are some problems in my operation or GUI didn't programmed pga900 correctly.

    And "the part was never previously programmed", if a new pga900 never programmed but debugged in CCS, it is still "never previously programmed" right?

     

  • Hello,

    If you have used the standard (the one included with CCS) gel file which remaps to run your code from the DEVRAM instead of the OTP, and you have never programmed the OTP before, then that would be an unprogrammed device.

    It sounds like initially your programming through the GUI was a success, since you were able to verify the OTP against your hex file. The part is programmed at this point. If you power down the device and power it up again, you should be able to repeat the verification process and the light should turn on.

    If you modify your code from what was originally used to program the PGA900 it will not match the data that is programmed in the OTP, and the changes will not be saved to the device, but you will be able to debug and run the modified code through the DEVRAM. The OTP plays no part in the debugging if you are running from the DEVRAM.

    To verify the OTP, you will have to use the original hex file that you programmed to the PGA900, not one that was modified during your later debugging.

    Regards,

  • Hello,Scott.

    "To verify the OTP, you will have to use the original hex file that you programmed to the PGA900, not one that was modified during your later debugging." I'm sure everytime I verify the OTP I use the same hex, because I copy the hex file to another folder when the hex was generated at firs time.

    Now I see, if I debugged a programmed pga900 on EVM, it still will work becaues it will run through the DEVEAM.

    Here is another issue.

    "If you power down the device and power it up again, you should be able to repeat the verification process and the light should turn on."I did like this and light turn green.So It looks like I have a programmed pga900.

    I tried to test can this pga900 run without EVM.And then I connect as few pin as possible just to test "programmed pga900" whether can run or not.

    I connect the PIN5 to 5V, PIN17 and PIN18 to  analog input, PIN35 to uart(I configued uart insted of SPI before),and some other necessary pin to ground.But when this pga900 power on, I can't get uart output from PIN35(when debug on EVM, i can get uart output from TP14).

    And when I debug in CCS before,I configured pga900's bridge voltge on 2.5V. But when I power on "programmed pga900", here is no voltge output between PIN14 and PIN15.

    So I ask another question how to boot programmed pga900.But I was told there is no need to boot pga900 just power on is ok.

    So now I don't know why my "programmed pga900" didn't run as expected.

  • I tried another way to test whether OTP successfully.

    I OTP as described before, and verify otp in GUI and light turn green.

    And then I put this pga900 on EVM and disconnect either USB2ANY nor XDS200.When I power on EVM, it should have output as I debugged on EVM before,but there isn't any output (USART or Bridge Voltage).So it looks like there is something wrong in OTP, but I don't know how to fix it.

  • Part Number: PGA900

    In PGA900 GUI, I only can load a hex file and varify this hex with PGA900's OTP memory.

    If I want to access PGA900's OTP memory, what should I do to check OTP memory's data in detail?

  • Part Number: PGA900

    I tried to OTP by GUI,but it seems didn't work well.

    At first, I modify the code in C:\ti\ccsv5\ccs_base\emulation\gel pga900.gel, WR_MEM_08(REMAP_ADDR,0x01) to 0x00.

    And then I generated my hex file in CCS.

    And then I disconneccted XDS200 and connect USB2ANY to PC with PGA900EVM. And close J15.

    And then in PGA900 GUI i confugure MICRO_INTERFACE_CONTROL register in 0x03;

    And then in EEPROM,DEVRAM&OTP page,I load my hex file generated by CCS before,and click LOAD OTP Memory and wait process to 100%;

    and then I click the VERIFY OTP button,and the light turn green;

    As you describe before,it means this pga900 has been OTPed successfully.But when I power off the EVM and power on again and verify the same hex file,it didn't turn green again;

    And then I load the all zero hex and verify it, this time the light turn green.

    So i'm confused whether this pga900 OTP success?And how can I check the data in pga900's otp memory in detail?

    And what can I do to solve this issue?

  • Hello,

    Please continue to use this thread to address the same issue. I've joined your new threads to the original one.

    Have you set the OTP security lock in your code somewhere? This makes it so that the digital interfaces cannot access the OTP to read it. If the security lock is set in your code, you will be able to verify the OTP the first time because the firmware has not run yet, but when you power down and power up again, the firmware runs and will set the lock making it impossible to read the OTP correctly. The GUI will not be able to verify the OTP at that point.


    Regards,

  • I didn't set OTP secutiy lock in my code.

  • Hello,Scott.

    I didn't set the OTP secutity lock in my code,so is there any other reason cause my issue?

    Could you send me your code that has been successfully OTPed?

    My email address is zld1992317@126.com

    Thanks a lot.

  • Hello Scott, I modify the code in C:\ti\ccsv5\ccs_base\emulation\gel pga900.gel, WR_MEM_08(REMAP_ADDR,0x01) to 0x00.

    Then run debug in CCS,but there occurs some error.