Действующее значение

При оцифровке сигнала можно очень просто посчитать его действующее значение (среднеквадратичное отклонение). Для это следует: просуммировать значения, получаемые с АЦП, возведенные в квадрат; затем разделить сумму на количество этих значений и извлечь из результата корень. То есть, математически:

\sqrt{\frac{1}{N}\sum_{i=1}^{N}{x_i}^2}

где

  • N — количество значений;
  • x  — значение, выдаваемое АЦП.

Алгоритм:

  1. y = 0
  2. x = результат АЦ перобразования
  3. y = y + x*x
  4. Повторить N раз пункты 2 и 3
  5. y = y / N
  6. y = корень из y

Асcемблер MDK-ARM

Язык ассемблера — это язык кода, который анализируется и собирается ассемблером (armasm) в итоговый объектный код.

Синтаксис строк на языке ассемблера

Общий вид строк:

{обозначение} {инструкция|директива|псевдоинструкция} {;комментарий}

Строка состоит из трех необязательных секций.

обозначение — обычно, это метка. С инструкциями и псевдоинструкциями — всегда метка. С некоторыми директивами — обозначение переменной или константы.

Для облегчения чтения кода, длинная строка может быть разбита на несколько строк с помощью обратной косой черты (\) как на языке С. За обратной косой чертой не должны следовать любые другие символы (включая пробелы и табуляции).

Также можно использовать пустые строки для улучшения читаемости.

Ограничение строки составляет 4095 символов. Строка, разбитая обратными косыми чертами, имеет то же ограничение.

Литеры

Литеры могут выражаться:

  • Десятичными числами, например 123
  • Шестнадцатеричными числами, например 0x7B
  • Числами с любым основанием от 2 до 9 включительно, например 5_204 — число 204 с основанием 5
  • Числами с плавающей точкой, например 123.4
  • Логическими значениями: {TRUE} или {FALSE}
  • Одиночным символом, заключенным в одинарные кавычки, например 'w'
  • Строкой, заключенной в дойные кавычки, например "This is a string"
В большинстве случаев, строка, содержащая один символ, считается одиночным символом. Например ADD r0,r1,#"a" — верно, но ADD r0,r1,#"ab" — ошибка.

Семисегментные индикаторы

Если количество семисегментных индикаторов равно N. То с их помощью можно отображать целые числа из диапазона от

1-10^{N-1}

до

10^{N}-1

включительно.

Например, с помощью трех семисегментных индикаторов можно отобразить числа от -99 до 999 включительно.

Формулы могут помочь в программировании, если надо проверить входит ли число, выводимое на индикатор из семисегментников, в диапазон значений. При этом потребуется задать лишь количество семисегментников.

Типы файлов, поддерживаемые Keil uVision4

Файлы проекта

  • *.UVPROJ: Обязательный файл проекта в формате XML.
  • *.UVOPT: Обязательный файл параметров проекта в формате XML. Содержит настройки отладчика, точки останова (breakpoints), текущие открытые файлы и прочее.
  • *.UVMPW: Обязательный файл сложного проекта, состоящего из множества простых проектов. Содержит ссылки на простые проекты (*.UVPROJ) и связывает их в один проект. Файл в формате XML.
  • *.UVGUI[.имя-пользователя]: Необязательный файл настроек графического интерфейса. Расширение [.имя-пользователя] добавляется, чтобы предоставить каждому пользователю собственные настройки. Когда файл отсутствует, uVision4 использует настройки по-умолчанию.
  • *.UV2: Файл проекта старых версий uVision. uVision4 поддерживает конвертацию в файл проекта нового типа (*.UVPROJ).
  • *.OPT: Файл параметров проекта старых версий uVision. Содержит настройки отладчика, текущие открытые файлы, позиции экрана и прочее. uVision4 поддерживает конвертацию в файл параметров нового типа (*.UVOPT).

Файлы исходного кода

  • *.A51: Файл исходного кода на языке ассемблера.
  • *.A66: Файл исходного кода на языке ассемблера.
  • *.C: Файл исходного кода на языке C.
  • *.CPP: Файл исходного кода на языке C++.
  • *.H: Заголовочный файл C/C++.
  • *.INC: Подключаемый ассемблерный файл
    (подключается с помощью $include).
  • *.S: Файл исходного кода на языке ассемблера
    (обычно используется для ARM).
  • *.SRC: Прочие исходные файлы, создаваемые С-компилятором.

Файлы листинга

  • *.COD: Complete program listing file that includes mixed C and Assembly code. All references are resolved and addresses are fixed-up.
  • *.HTM: Listing Files of the RealView Linker.
  • *.I: Выходной файл С-препроцессора.
  • *.LST: Listing Files generated by the C Compiler or Assembler.
  • *.MAP: Listing Files (or Map Files) generated by the Linker.
  • *.M51: Listing Files (or Map Files) generated by the Linker.
  • *.M66: Listing Files (or Map Files) generated by the Linker.

Объектные и HEX файлы

  • *.(без расширения): Абсолютный объектный файл. (Исполняемая программа, создаваемая компоновщиком).
  • *.AXF: Абсолютный и исполняемый объектный файл, создаваемый компоновщиком.
  • *.Bxx: Абсолютный объектный файл, создаваемый OC51 для индивидуальных кодовых банков (xx может принимать значение из диапазона от 00 до 31 включительно).
  • *.ELF: ELF/DWARF-файл, создаваемый компоновщиком/Locater’ом.
  • *.HEX: Файл Intel Hex.
  • *.H86: Файл Intel Hex.
  • *.LIB: Объектный файл библиотеки.
  • *.OBJ: Перемещаемый объектный файл.
  • *.O: Перемещаемый объектный файл.
  • *.SBR: Файл с информацией для Source Browser, создаваемый компоновщиком/Locater’ом.

Сборочные файлы

  • *.BAT: batch file that re-creates a project from the command prompt. µVision4 may create a batch file when Project — Output — Create Batch File is enabled.
  • *._IA, *.__I, *._II: tool invocation files.

Файлы отладчика

  • *.INI: Typically used for Debugger Initialization files.

Прочие файлы

  • *.CDB: µVision Device Database file.
  • *.DEP: Dependency File for a Target build.
  • *.IC: Intermediate C source file created by the EC++ Compiler.
  • *.LIN: Linker Control File (scatter loading).
  • *.LNP: Linker Input File generated by µVision4 to pass command line.
  • *.ORC: Global Register Coloring File for Optimization.
  • *.PLG: Protocol file that summarizes the last build process.
  • PROJECT_GUI.XSD: µVision4 XML schema file describing the *.UVGUI file structure. Located in the \UV4 folder.
  • PROJECT_MPW.XSD: µVision4 XML schema file describing the *.UVMPW file structure. Located in the \UV4 folder.
  • PROJECT_OPT.XSD: µVision4 XML schema file describing the *.UVOPT file structure. Located in the \UV4 folder.
  • PROJECT_PROJ.XSD: µVision4 XML schema file describing the *.UVPROJ file structure. Located in the \UV4 folder.
  • *.UVL: Signal definition file. Export the Logic Analyzer signal definitions to a file.
  • *.UVLA: File to store recorded signals. Saves recorded signal data to later analysis.
  • *.SFD: Intermediary pseudo-XML file used to create an *.SFR file (*.SVD.XML files are used as input).
  • *.SFR: Binary file storing information read by the System Viewer.
  • *.SVD.XML*.SVD*.XML: CMSIS-XML file formats describing the device (CMSIS System View Description file). The file is provided by the vendor.
Источник:

STM32F10x Standard Peripherals Library: соглашения

Соглашение об именах

  1. PPP — обозначение периферийного устройства, например ADC (аналого-цифровой преобразователь)
  2. Файлы исходного кода библиотеки начинаются с приставки stm32f10x_.
  3. Имена констант прописаны заглавными буквами. Если константа используется в единственном файле, то она определяется в этом файле. Константа, используемая в более, чем одном файле, определяются в заголовочном файле.
  4. Имена регистров, как и констант, прописаны заглавными буквами. Регистры именуются так же, как в документации на микроконтроллеры.
  5. Имена функций начинаются с PPP, после чего идет одно нижнее подчеркивание. Далее идут слитные слова, начинающиеся с заглавной буквы. Например: USART_SendData().
  6. Для настройки периферии PPP используется функция PPP_Init(), в которую передается указатель на структуру типа PPP_InitTypeDef, содержащую настройки периферии.
  7. Функция PPP_DeInit() сбрасывает регистры периферии в их начальное состояние.
  8. Функция PPP_StructInit() заполняет поля структуры типа PPP_InitTypeDef значениями по умолчанию, которые описывают начальное состояние периферии (состояние после сброса).
  9. Функция PPP_Cmd() включает или отключает периферию.
  10. Функция PPP_ITConfig() включает или отключает прерывания.
  11. Функция PPP_DMAConfig() включает или отключает DMA-интерфейс.
  12. Функции, оканчивающиеся на Config, настраивают отдельные функции периферии. Например GPIO_PinRemapConfig().
  13. Функция PPP_GetFlagStatus() служит для получения состояния флагов.
  14. Функция PPP_ClearFlag() сбрасывает флаги.
  15. Функция PPP_GetITStatus() сообщает о том произошло ли прерывание или нет.
  16. Функция PPP_ClearITPendingBit() сбрасывает бит захвата прерывания.

STM32F10x SPL: модуль GPIO

Введение

Статья написана на основе этой документации:
STM32F10x Standard Peripherals Library версии 3.5.0

В следующих разделах статьи будет представлено описание функций модуля GPIO и описание структуры GPIO_InitTypeDef.

Содержание

Обзор функций

В этом разделе, кликнув на имя функции, можно перейти к её подробному описанию.

void GPIO_AFIODeInit(void)
Сбрасывает в начальное состояние регистры альтернативных функций

void GPIO_DeInit(GPIO_TypeDef *GPIOx)
Сбрасывает в начальное состояние регистры GPIOx

void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)
Выбирает Ethernet media interface

void GPIO_EventOutputCmd(FunctionalState NewState)
Разрешает или запрещает событийный выход (Event Output)

void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
Выбирает вывод для событийного выхода

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
Назначает вывод GPIO_PinSource порта GPIO_PortSource источником внешнего прерывания

void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
Настраивает порт GPIOx в соответствии с параметрами из структуры GPIO_InitStruct

void GPIO_StructInit(GPIO_InitTypeDef *GPIO_InitStruct)
Заполняет поля структуры GPIO_InitStruct значениями по умолчанию

void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Защищает настройки выводов

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
Разрешает или запрещает переназначение GPIO_Remap

uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Возвращает входные данные порта GPIOx

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает входное состояние вывода GPIO_Pin порта GPIOx

uint16_t GPIO_ReadOutputData(GPIO_TypeDef *GPIOx)
Возвращает выходные данные порта GPIOx

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает выходное состояние вывода GPIO_Pin порта GPIOx

void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 0 выходному состоянию выводов GPIO_Pin порта GPIOx

void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 1 выходному состоянию выводов GPIO_Pin порта GPIOx

void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal)
Присваивает значение PortVal выходным данным порта GPIOx

void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Присваивает значение BitVal выходному состоянию вывода GPIO_Pin порта GPIOx

Подробное описание функций



void GPIO_AFIODeInit(void)
Сбрасывает в начальное состояние регистры альтернативных функций порта



void GPIO_DeInit(GPIO_TypeDef *GPIOx)
Сбрасывает в начальное состояние регистры порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где x = (A…G)


void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)
Выбирает Ethernet media interface
Аргументы:

  • GPIO_ETH_MediaInterface: Media Interface. Варианты значений:
    • GPIO_ETH_MediaInterface_MII: Режим MII
    • GPIO_ETH_MediaInterface_RMII: Режим RMII


void GPIO_EventOutputCmd(FunctionalState NewState)
Разрешает или запрещает событийный выход (Event Output)
Аргументы:

  • NewState: Новое состояние событийного выхода. Варианты значений:
    • ENABLE: разрешен
    • DISABLE: запрещен


void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, u8 GPIO_PinSource)
Выбирает вывод для событийного выхода
Аргументы:

  • GPIO_PortSource: Порт. Варианты значений:
    • GPIO_PortSourceGPIOx: где x = (A…E)
  • GPIO_PinSource: Вывод порта. Варианты значений:
    • GPIO_PinSourceX: где X = (0…15)


void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, u8 GPIO_PinSource)
Назначает вывод GPIO_PinSource порта GPIO_PortSource источником внешнего прерывания
Аргументы:

  • GPIO_PortSource: Порт. Варианты значений:
    • GPIO_PortSourceGPIOx: где x = (A…G)
  • GPIO_PinSource: Вывод порта и одновременно номер X внешнего прерывания. Варианты значений:
    • GPIO_PinSourceX: где X = (0…15)


void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
Настраивает порт GPIOx в соответствии с параметры из структуры GPIO_InitStruct
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_InitStruct: Структуру типа GPIO_InitTypeDef, содержащая настройки порта.


void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Защищает настройки выводов
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Выводы, одно значение или их комбинация (с помощью оператора или |):
    • GPIO_Pin_x: где x = (0…15)


void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
Разрешает или запрещает переназначение GPIO_Remap
Аргументы:

  • NewState: Состояние переназначения. Значения аргумента:
    • ENABLE: Разрешение
    • DISABLE: Запрет
  • GPIO_Remap: Переназначение. Значения аргумента:
    • GPIO_Remap_PPP, где PPP:
      • SPI1
      • SPI3
      • I2C1
      • USART1
      • USART2
      • USART3
      • PD01
      • TIM5CH4_LSI
      • ADC1_ETRGINJ
      • ADC1_ETRGREG
      • ADC2_ETRGINJ
      • ADC2_ETRGREG
      • ETH
      • CAN2
      • SWJ_NoJTRST
      • SWJ_JTAGDisable
      • SWJ_Disable
      • TIM2ITR1_PTP_SOF
      • PTP_PPS
      • CEC
      • TIM1_DMA
      • TIM4
      • TIM9
      • TIM10
      • TIM11
      • TIM13
      • TIM14
      • TIM15
      • TIM16
      • TIM17
      • FSMC_NADV
      • TIM67_DAC_DMA
      • TIM12MISC
    • GPIO_FullRemap_PPP, где PPP:
      • USART3
      • TIM1
      • TIM2
      • TIM3
    • GPIO_PartialRemap_PPP, где PPP:
      • TIM1
      • TIM3
    • GPIO_PartialRemap1_PPP, где PPP:
      • TIM2
      • CAN1
    • GPIO_PartialRemap2_PPP, где PPP:
      • TIM2
      • CAN1


uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Возвращает входные данные порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)


uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает входное состояние вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Вывод порта. Значение:
    • GPIO_Pin_x: где x = (0…15)

Возвращаемое значение: входное состояние вывода, (uint8_t)Bit_SET или (uint8_t)Bit_RESET.



u16 GPIO_ReadOutputData(GPIO_TypeDef *GPIOx)
Возвращает выходные данные порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)

Возвращаемое значение: выходные данные порта GPIOx.



uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает выходное состояние вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Вывод порта. Варианты значений:
    • GPIO_Pin_x: где x = (0…15)

Возвращаемое значение: выходное состояние вывода, (uint8_t)Bit_SET или (uint8_t)Bit_RESET.



void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 0 выходному состоянию выводов GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Выводы, одно значение или их комбинация (с помощью оператора или |):
    • GPIO_Pin_x: где x = (0…15)


void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 1 выходному состоянию выводов GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Выводы, одно значение или их комбинация (с помощью оператора или |):
    • GPIO_Pin_x: где x = (0…15)


void GPIO_StructInit(GPIO_InitTypeDef *GPIO_InitStruct)
Заполняет поля структуры GPIO_InitStruct значениями по-умолчанию:

GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All;
GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;

При вызове функции GPIO_Init() и передачи ей указателя на структуру, заполненную по-умолчанию, все выводы порта GPIOx, настроятся в режим плавающего входа с максимальной частотой 2 МГц.
Аргументы:

  • GPIO_InitStruct: Структура типа GPIO_InitTypeDef, содержащая настройки порта


void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal)
Присваивает значение PortVal выходным данным порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • PortVal: Значение, записываемое в выходной регистр порта GPIOx


void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Присваивает значение BitVal выходному состоянию вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Вывод. Варианты значений:
    • GPIO_Pin_x: где x = (0…15)
  • BitVal: Значение, присваиваемое биту GPIO_Pin выходного регистра порта GPIOx. Варианты значений:
    • Bit_RESET: логический 0
    • Bit_SET: логическая 1

Описание структуры GPIO_InitTypeDef

GPIO_InitTypeDef — тип структуры данных для настройки выводов портов. Для настройки выводов порта необходимо вызвать функцию GPIO_Init(), передав ей указатель на переменную типа GPIO_InitTypeDef. На практике настройка выводов выглядит так:

// Объявляем структуру для настройки вывода
GPIO_InitTypeDef GPIO_InitStruct;
// Настройки: вывод 0 и 1 как двухтактный выход с частотой 50 МГц
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // Режим
GPIO_InitStruct.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1); // Выводы
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // Макс. частота
// Настроить выводы порта А
GPIO_Init(GPIOA, &GPIO_InitStruct);

или, тоже самое:

GPIO_InitTypeDef GPIO_InitStruct = {GPIO_Pin_0 | GPIO_Pin_1, GPIO_Speed_50MHz, GPIO_Mode_Out_PP};
GPIO_Init(GPIOA, &GPIO_InitStruct);

Поля структуры:

  • GPIOMode_TypeDef GPIO_Mode: Режим работы порта. Варианты значений:
    • GPIO_Mode_AIN: Аналоговый вход
    • GPIO_Mode_IN_FLOATING: Плавающий вход
    • GPIO_Mode_IPD: Вход с подтяжкой к земле
    • GPIO_Mode_IPU: Вход с подтяжкой к питанию
    • GPIO_Mode_Out_OD: Выход с открытым стоком
    • GPIO_Mode_Out_PP: Двухтактный выход
    • GPIO_Mode_AF_OD: Альтернативный выход с открытым стоком
    • GPIO_Mode_AF_PP: Альтернативный двухтактный выход
  • uint16_t GPIO_Pin: Выводы порта. Поле может принимать одно из значений или их комбинацию (с помощью оператора или |):
    • GPIO_Pin_x: Вывод x, где x = (0…15)
    • GPIO_Pin_All: все выводы
  • GPIOSpeed_TypeDef GPIO_Speed: Максимальная частота выходного сигнала. Варианты значений:
    • GPIO_Speed_2MHz: 2 МГц
    • GPIO_Speed_10MHz: 10 МГц
    • GPIO_Speed_50MHz: 50 МГц

Конец статьи.

Скользящее среднее

Скользящее среднее — понятие в интернете более употребимое, чем «текущее среднее».

Дискретная передаточная функция (ДПФ) фильтра скользящего среднего:

\frac{1}{N}\cdot\frac{1-z^{-N}}{1-z^{-1}}

Фильтр скользящего среднего — это КИХ-фильтр.

Одна и та же передаточная функция цифрового фильтра годится для фильтрации с разными частотами среза и разными частотами дискретизации. При изменении частоты среза (или частоты дискретизации) пропорционально изменится частота дискретизации (или частота среза).

Проектирование цифрового БИХ-фильтра в Scilab

Нет ничего проще получения коэффициентов цифрового БИХ-фильтра в математической программе Scilab. Для этого существует функция iir().

Синтаксис функции:
[hz]=iir(n,ftype,fdesign,frq,delta)

Функция возвращает передаточную функцию фильтра.

Аргументы:

  • n — порядок фильтра, целое положительное число;
  • ftype — строка, задающая тип фильтра, возможные значения:
    • ‘lp’ — ФНЧ (фильтр нижних частота);
    • ‘hp’ — ФВЧ (фильтр верхних частот);
    • ‘bp’ — ПФ (полосовой фильтр);
    • ‘sb’ — ЗФ (заграждающий фильтр);
  • fdesign — строка, задающая вид фильтра, возможные значения:
    • ‘butt’ — фильтр Баттерворта;
    • ‘cheb1’ — фильтр Чебышева первого рода;
    • ‘cheb2’ — фильтр Чебышева второго рода;
    • ‘ellip’ — эллиптический фильтр;
  • frq — двойной вектор [frq1 frq2], задающий дискретные часто´ты среза. Значение частоты должно лежать в диапазоне (0; 0.5]. Дискретная частота среза равна отношению частоты среза к частоте дискретизации. Для расчета ФНЧ и ФВЧ используется только параметр frq1. При расчете ПФ и ЗФ, параметр frq1 задет нижнюю частоту среза, а frq2 — верхнюю.
  • delta — двойной вектор  [delta1 delta2], задающий значения ошибок для фильтра Чебышева и эллиптического фильтра. delta1 используется в случае фильтра Чебышева первого рода. delta2 — в случае фильтра Чебышева второго рода. Оба значения — в случае эллиптического фильтра. Значение ошибки должно лежать в диапазоне (0; 1). Пульсации:
    • Для фильтра Чебышева первого рода в полосе пропускания: (1 − delta1) < Пульсации < 1;
    • Для фильтра Чебышева второго рода в полосе подавления: 0 < Пульсации < delta2;
    • Для эллиптического фильтра в полосе пропускания:
      (1 − delta1) < Пульсации < 1;
      в полосе подавления:
      0 < Пульсации < delta2.

Пример проектирования ФНЧ Баттерворта:

Fd = 4000; // Частота дискретизации, Гц
Fc = 500;  // Частота среза, Гц
n = 1;     // Порядок фильтра

[hz] = iir(n,'lp','butt',[Fc/Fd],[])

В результате получаем передаточную функцию:

hz =

0.2928932 + 0.2928932z
----------------------
- 0.4142136 + z

Функции RCC библиотеки стандартной периферии STM32F10x

RCC — модуль управления сбросом и тактированием (англ. Reset and Clock Control).

Ниже будет приведено описание функций из библиотеки (версии 3.5.0) стандартной периферии STM32F10x для управлении RCC.

  • void RCC_ADCCLKConfig(u32 RCC_PCLK2)
    Управляет тактированием АЦП (ADCCLK).
    Аргументы:
    RCC_PCLK2: задает делитель тактового сигнала PCLK2 от APB2. Аргумент может принимать одно из следующих значений:

    • RCC_PCLK2_Div2: PCLK2 / 2
    • RCC_PCLK2_Div4: PCLK2 / 4
    • RCC_PCLK2_Div6: PCLK2 / 6
    • RCC_PCLK2_Div8: PCLK2 / 8

    Возвращаемое значение: нет.

  • void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue)
    Устанавливает калибровочное значение внутреннего высокоскоростного тактового источника (HSI).
    Аргументы:
    HSICalibrationValue: Калибровочное значение из диапазона от 0 до 0x1F включительно.
    Возвращаемое значение: нет.

Продолжение следует…