Читайте нетрадиционный АЦП с STM32F3 - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь связать STM32F303 Nucleo с АЦП AD7748-4. Лист данных для АЦП:

https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768-7768-4.pdf

Проблема в том, что АЦП НЕ выводит преобразованное значение через порт SPI, а использует сигнал готовности данных (DRDY), тактовый сигнал данных (DCLK) и комбинацию из 4 выходов данных (DOUT0-DOUT3) , Выходной поток 96 битов последовательно через один провод, если я настроил его таким образом, но синхронизация имеет решающее значение в моем приложении, и мне нужно синхронизировать данные при использовании DOUT0 до DOUT2, каждый из которых будет выводить 32 бита. Если бы я осуществлял последовательную потоковую передачу данных, я мог бы заставить SPI-порт читать их, но это не так. АЦП работает на частоте 20 МГц, поэтому DCLK будет работать на той же частоте. Nucleo работает с максимальной частотой 72 МГц, но когда используется DAM, он устанавливает тактовую частоту на 64 МГц.

В руководстве по STM описывается «регистр входных данных порта GPIO (GPIOx_IDR) (x = A..H)» как регистр только для чтения - мое понимание состоит в том, что младшие 16 бит могут хранить введенное значение до до 16 бит (скорее всего, для данных из памяти R / W) - так что вопрос, как я могу настроить GPIO для чтения в данных? Я нахожусь в небольшом тупике здесь. Мой инстинкт подсказывает мне, что ядро ​​может быть недостаточно быстрым, чтобы читать данные, поступающие с АЦП ... Есть идеи? Все написанное на C / C ++ в основном голое железо ... Я новичок в Nucleo, не писал код за 4 года - извините за упущение в знаниях ...

1 Ответ

0 голосов
/ 13 ноября 2018

Если DCLK работает на частоте 20 МГц, ОК, очевидно, недостаточно быстр (у вас есть около 3 команд между циклами, поэтому даже язык ассемблера будет трудно реализовать ...).Поскольку я не знаком с архитектурой stm, я могу только предложить трюк, который, возможно, вызовет некоторые идеи в вашей голове.Вместо того, чтобы использовать кристалл для АЦП, используйте таймер от STM, который подключен к выходному выводу, и синхронизируйте АЦП, используя этот вывод (MCLK).При настройке АЦП с использованием spi, режима ожидания и т. Д. Вы можете оставить этот тактовый сигнал на частоте 20 МГц.Но когда вам нужен образец с АЦП, остановите таймер STM и синхронизируйте АЦП «вручную».(вы практически контролируете сигнал DCLK).После завершения процедуры преобразования перезапустите таймер с частотой 20 МГц.

...