Hi experts,
I will use PRU to transmit FSI data, so I reference the document : /cfs-file/__key/communityserver-components-multipleuploadfilemanager/716d8558_2D00_1385_2D00_47b7_2D00_b953_2D00_308af7ebc898-549268-complete/FSI-Bandwidth_2D00_Optimization-for-Multi_2D00_axis-Servo-Control.pdf
And I got the example code "FSI_PRU_Handler_20221220" from TI-FAE.
When I implemented the .asm code to transmit FSI data in PRU, I referenced the example code, but I met some timing question.
I test three methods to execute FSI data exchange, My test result is shown in the below table.
| method: | DMA - example flow | DMA - Correct flow(Wait Xout done) | memcpy |
| PRU process tick | 32 | 174 | 176 |
| Data Sampling time | Last Period | this Period | this Period |
| code | ![]() |
![]() |
![]() |
Reference the above table, the execute time of the original example code is the fastest, but the method cann't get the current data immediately and need to wait a period.
If the application needs to get the current data, it uses the method of "DMA of wait XOUT done" or the method of "memcpy" can success. However, the execute time of the two methods takes 5 times longer than the original example code, because both the methods always wait the current data to move done.
So, the document : FSI bandwidth optimization, the content of test result compare - R5f and PRU, I think the PRU data had 1 period delay to the R5f data, but the content didn't describe.
I want to ask the expert. If I want to achieve the FSI bandwidth optimization, my application needs to satisfy the condition which is 1 period delay, isn't it?
In other words, if I want to get the current DMA data, I have to wait the Xout done or use memcpy. Can the expert provide some suggestions to reduce the data moving time?
Best Regards
Bolt











