Open KaiL4eK opened 5 years ago
Вот здесь есть инфа о том, что у Cortex-M7 (а это наш F7) длина строки кэша = 32 байта. Пока есть предположение, что при использовании буфера размером более 32 байта (для нас это adcsample_t buffer[16]
, так как sizeof(adcsample_t) == 2
) приводит к активному использованию кэша, что наводит на мысль, что при использовании маленького буфера все будет работать без проверок на выдачу из кэша
Утро началось не с кофе. =) Вместе с @PonomarevDA выяснили, что на камнях F7 может встречаться проблема кэширования буфера при работе с АЦП. Быстрофикс говорит о том, что можно использовать следующий вид при работе:
Как видно, используется функция
dmaBufferInvalidate()
для проверки того, выданы данные из кэша или нет, а также выравнивается буферadc_buffer[]
32м байтам.Причины этой проблемы выясняются, быстрофиксом пользоваться можно, но нужно четко понимать, при каких обстоятельствах данные начинают зависать в кэше.