lnDSO: float, arm, riscv, wait states

This is an updated version of a previously dealt with topic.

 Internally, lnDso is using float to represent voltage.

One could argue that it's useless and you can do int->int as the final results are pixel coordinates, but i like to have  the actual measurements available for later processing if need be.

It means we have to do ADC value (int)=> volt(float) => pixel(int)

In each case the processing is something along

output=intput*ramp+offset


Let's see how the different chip we can use for lnDSO are performing 

(we use rvfp and qfp to have optimised software float lib)

- GD32F303/Cortex M4-FPU@72 Mhz : 7 kCycles

- GD32F303/Cortex M4-NOFPU@72 Mhz : 18 kCycles (~ emulating a cortex M3)

Ok, no surprise here,the FPU helps a lot

Last but not least , the original MCU on the DSO 150 : 

- STM32F103 @72 Mhz : 27 kCycle

Ouch. Most probably the flash wait states.



- GD32VF103/RiscV-NOFPU@108 Mhz : 40 kCycles

(10 kCycles but the sysTick = cpuClock/4)

Not great...


/!\ Since we measure cycles, the actual frequency does not directly matter.








Comments

Popular posts from this blog

Component tester with STM32 : Part 1 ADC, Resistor

Fixing the INA3221

INA3221, weird wiring