Я пытаюсь запрограммировать DSP (TMSF28335), используя код C в Control Studio V6.02.
В этом проекте мне нужно сделать сдвиг фазы на 90 градусов для сигнала переменного тока, который я измеряю датчиками. Мне посоветовали использовать кольцевой буфер, чтобы сделать такой фазовый сдвиг. Но, к сожалению, я не очень хорошо знаком с тем, как написать циклический буфер на языке Си. Согласно концепции, я знаю, что "голова" буфера должна быть входным сигналом (измеренный сигнал переменного тока), а "хвост" - это сдвинутый входной сигнал, который используется в качестве выходного сигнала кольцевого буфера.
Время выборки системы установлено на 3,84599989e-5 (с), а один период равен 0,02 (с) (50 Гц). Таким образом, 1/4 периода составляет (0,02/4)/3,84599989e-5=130 выборок. Другими словами, мне нужно сделать задержку на 130 сэмплов.
Буду признателен, если подскажете, как написать циклический буфер на C для моего контроллера и соответственно сделать фазовую задержку.
cos(ωt)
вsin(ωt)
, что является сдвигом на 90°. См.: en.wikipedia.org/wiki/Hilbert_transform для математического объяснения, вам нужны знания о комплексные числа для этого. Этот вопрос должен быть лучше здесь: dsp.stackexchange.com. В дальнейшем я бы рекомендовал обучать такие вещи, как цифровая обработка сигналов в Matlab. Он отлично подходит для этой цели! - person Andre Kampling   schedule 11.08.2017