Tool/software:
Hi,
core:MCU1_0 sdk:8.6.1.3
I read the GTC value in the 50us timer and found that the difference between the GTC value and the GTC value was about 21S occasionally when it was obtained twice.
I guess it's probably because the MCU is 32-bit while GTC is a 64-bit register. As a result, the MCU can only read the lower 32 bits of the GTC register each time, and then read the higher 32 bits of the GTC register.
I refer to the example given by SDK to define uint64 Pointers to take values of GTC.
An exception may occur because of the following:
When the MCU reads the lower 32 bits, the value of GTC is exactly about 0x00000000 FFFFFFFF.
The MCU then begins to read the higher 32 bits, at which point the value of GTC should be approximately 0x00000001 00000000.
However, since the pointer is 0xFFFFFFFF when it is fetched 32 bits lower for the first time, the GTC value will not be fetched again when the pointer is fetched 1 bits higher, and the result may be 0x00000001 FFFFFFFF.
This result corresponds to the test result 21S.
Our GTC frequency is set to 200M, please ask TI experts to help check or repeat this problem, we hope to get a solution, thank you!
Also, I saw a similar issue in E2E, describing that the lower 32 bits of the GTC register were not cleared, so I'm not sure if there is a problem with GTC, link below:
e2e.ti.com/.../tda4vm-gtc-register-not-synced-between- hi-lo/3455058?tisearch=e2e-sitesearch&keymatch=GTC%252021S#3455058
Best Regards!
Bingxian