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.

BOOSTXL-POSMGR: Library migration to TMS320F280039C

Part Number: BOOSTXL-POSMGR
Other Parts Discussed in Thread: TMS320F280039C

Hello,

I want to implement a bissc enconder using the product BOOSTXL-POSMGR into the launchpad with the microcontroller TMS320F280039C. I would to know if it is possible to ensure the compatibility of the PM_bissc_lib for this microcontroller. If it is possible i would like to know what changes are needed in which files to properly set up the library.

I have seen another related post here https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1132209/launchxl-f280039c-pm_bissc_include-h-declaration-is-incompatible-compilation-error/4213898#4213898 where he is following the same objective. In my case, the project compiles and i am able to use the library and create transactions between the lanchpad and the bissc encoder. However, i am not able to properly use the SPI peripheral and extract the data. I believe that the are some files that need extra changes so the library can be used in the TMS320F280039C.

The current situation is the following. I am  using the PWM4 peripheral with the CLB but i am using the SPIA (manually set with custom functions). By means of jumper cables, i am interconnecting the gpios needed to emulate the same F2837xD pinout. As you can see in the following image, the messages are sent and the response of the encoder is totally fine.

However, the SPI FIFO interrupt never triggers eventhough i have connected the white line(encoder response) to the SIMO SPIA pin.

The only output i get from the compiler are the following warnings:

warning #10247-D: creating output section "Clb3DataExchgRegsFile" without a SECTIONS specification
warning #10247-D: creating output section "Clb2DataExchgRegsFile" without a SECTIONS specification
warning #10247-D: creating output section "Clb4DataExchgRegsFile" without a SECTIONS specification
warning #10247-D: creating output section "Clb1DataExchgRegsFile" without a SECTIONS specification

I am afraid the i have something left to be changed in some files to have a proper compatibility. If you need any more information to further undestand the application, please do not hesitate to ask me.

If it is not possible to ensure compatibility, i would like to know the design process to follow in order to create a bissc library based for that microcontroller using the CLB.

Update: I was able to communicate with the SPI. It was a problem of clocking signal into the CLK pin. However the warning persist. I took a look at the .map generated and it seems that the compiled library generates some .obj that change the memory datasection corresponding to the CLB registers. I was not able go deepr into that matter and help would be appreciated.

Also, i would like to know if it is possible to change the PWM that generates the clock signal by means the CLB. If so, could you please explain the registers that should be changed?

Thanks in advance,

David

  • Hi David, I am looking into your question. I will update you before end of Wednesday in the US. 

    Regards,

    Lori

  • David,

    In the PM_bissc_SystemTest directory, the sections are assigned in the file F2837xD_Headers_clb_cpu1.cmd (attached)https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/171/F2837xD_5F00_Headers_5F00_clb_5F00_cpu1.cmd

    I suggest modifying the addresses in the .cmd file for the F28003x and adding the file to your project (you can have multiple .cmd files in a project).

    Note: there have been a few changes to the CLB registers and I can't guarantee this will work perfectly since I've not tried it myself. I think they are backward compatible since F28003x is a superset.  It is worth a quick test.

    The F2837xD address assignments for each section in the .cmd file correspond to the base address of the registers as shown here (from F2837xD technical reference manual):

    On F28003x the base address of the registers is shown here (from F28003x technical reference manual)

    Best regards,

    Lori

  • Hello Lori,

    Thank you for your fast reply. I have tried these changes but I come across with another problem. The length specified for some CLB registers are different between microcontrollers. The warning disapears but it have to define in the .cmd the register length corresponding to the f2837xD, at least for the Data Exchange registers. Otherwise, the compiler throws errors of memory assignament.

    Apart from that, is the page location also important? Comparing the .map of the xample project based on F2837 and F28003, it seems that the peripheral registers are placed in the page 1 in 2837 and page 0 in 28003. If I try to change the page number, the compiler throws again memory assignment errors. Could you please confirm that?

  • Thank you for your fast reply. I have tried these changes but I come across with another problem. The length specified for some CLB registers are different between microcontrollers. The warning disapears but it have to define in the .cmd the register length corresponding to the f2837xD, at least for the Data Exchange registers. Otherwise, the compiler throws errors of memory assignament.

    There must be another linker file in the build (.cmd file) that has the registers defined with a different length, or using the longer length it overlaps with another register. I would try it with the shorter length and see what happens. The CLB registers should be a superset on the F28003x and some may have been added onto the end of the registers or into previously reserved locations.

    Apart from that, is the page location also important? Comparing the .map of the xample project based on F2837 and F28003, it seems that the peripheral registers are placed in the page 1 in 2837 and page 0 in 28003. If I try to change the page number, the compiler throws again memory assignment errors. Could you please confirm that?

    It used to matter for some tools. As long as the memory part of the linker command file and the sections part agree it should be ok either way. 

  • Is it possible that you refer to the f28003x_global_variables_def.h? It is the only file that is assigning memory sections with DATA_SECTION pragma.

    #ifdef __cplusplus
    #pragma DATA_SECTION("Clb4DataExchRegsFile")
    #else
    #pragma DATA_SECTION(Clb4DataExchRegs,"Clb4DataExchRegsFile");
    #endif
    volatile struct CLB_DATA_EXCHANGE_REGS Clb4DataExchRegs;
    #ifdef DUPLICATED_CLB

    This is an example of the .h. Should I comment all these lines refering to all the CLB registers and use only the .cmd file?

    Also, I have another question. Why there is a ifdef DUPLICATED_CLB directive? What does it do?

    Thank you for your help,

    David