Search results

  1. J

    Cache handling - DMA transfers

    Did a little experimentation and used a scope and digitalWriteFast to come up with timings for various cache maintenance operations. The approach given in the first post, where a write to DCCIMVAC followed by DSB is performed every 32 bytes, varies quite a bit in performance depending on...
  2. J

    Cache handling - DMA transfers

    I have a function that interleaves two datasets into a buffer that gets transmitted via DMA. inline void packCmplx(int32_t *pCmplx, const int32_t *pStop, const int16_t *re, const int16_t *im) { do { SCB_CACHE_DCCIMVAC = (uint32_t)pCmplx; __asm__ volatile("dsb"); *pCmplx++ =...
  3. J

    r2cfft - a small wrapper to simplify FFT/IFFTs of real-valued sequences

    I wanted to share a small wrapper function I wrote for the CMSIS arm_rfft_fast_f32() function. It is intended to provide a higher efficiency, near-drop-in-replacement for instances where arm_cfft_f32() is being used with real-valued sequences, and an algorithm based around using n+1...