Разработка биометрического комплекса на основе считывания отпечатка пальца, страница 11

read_image_and_transmit() – функция чтения полного изображения отпечатка пальца с последующей передачей его в сеть.

reset_FPC1010() – функция для аппаратного сброса датчика в исходное состояние.

wait_button() – функция ожидания нажатия на кнопку SW2. Необходима для запуска программы управления.

pause(int32 p) – функция позволяющая организовать задержку в p-ое число тактов. При рабочей частоте микроконтроллера 25 МГц задержка в один такт соответствует паузе в 40 нс.

SS_enable() – функция подачи низкого уровня сигнала управления на вход SS датчика FPC1010.

SS_disable() – функция подачи высокого уровня сигнала управления на вход SS датчика FPC1010.

8.2 Алгоритмы используемых функций

Алгоритмы разработанных функций изображены на рисунках 8.1-8.17. На алгоритмах даны необходимые пояснения, кроме тех случаев, когда назначение блока явно  прописано внутри него. Необходимо заметить, что установка регистров SPI (рисунки 8.1, 8.2) производится в соответствии с их расшифровкой (п. 5.1).

Запись в блоке начала каждого алгоритма соответствует названию функции записанной в программе. Для вызова какой-либо функции необходимо прописать ее название в программе и указать в скобках, если требуется,  параметры ее  выполнения. Так, например, запись  wait_button();  будет означать, что программа перешла в режим ожидания нажатия на кнопку SW2. Аналогично поступают и с другими функциями.

Рисунок 8.1 – Алгоритм функции Init_SPI_Master

Рисунок 8.2 - Алгоритм функции SPI_disable

Рисунок 8.3 - Алгоритм функции SPI_transmit_empty

Рисунок 8.4 - Алгоритм функции SPI_recieve_wait

Рисунок 8.5 - Алгоритм функции Init_our_udp

Рисунок 8.6 - Алгоритм функции Send_our_udp

Рисунок 8.7 - Алгоритм функции Receive_packet

Рисунок 8.8 - Алгоритм функции tx_data_SPI

Рисунок 8.9 - Алгоритм функции Rx_data_SPI

Рисунок 8.10 - Алгоритм функции Read_row_image

Рисунок 8.11 - Алгоритм функции Read_image_and_transmit

Рисунок 8.12 - Алгоритм функции Main

Рисунок 8.13 - Алгоритм функции Wait_Button

Рисунок 8.14 - Алгоритм функции SS_enable

Рисунок 8.15 - Алгоритм функции SS_disable

Рисунок 8.16 - Алгоритм функции Reset_FPC1010

Рисунок 8.17 – Алгоритм функции Init_FPC1010

8.3 Реализация алгоритмов на языке Си ++

Функция инициализации порта SPI в режим ведомого (рисунок 8.1). Выполняется путем заполнения регистров SPICR1 и SPIBR.

Листинг 8.1

void init_SPI_master(void){ 

                     SPICR1 = 0x50;   // SPI_Master enable 52

                                                  // CPOL=0  активный уровень синхронизации - высокий

                                                  // CPHA=0  нечетные фронты активные

                                                  // LSBFE=0  передача данных со старшего бита MSB                         SPIBR = 0x02       // установка частоты передачи

  }

Функция отключения порта SPI (рисунок 8.2). Производится с помощью регистра SPICR1. Как только порт отключается его выводы можно использовать под пользовательский порт ввода/вывода

Листинг 8.2

void SPI_disable(void){ 

SPICR1 = 0x00;              // SPI disable

}

Функция ожидания разрешения на передачу (рисунок 8.3). Суть функции не разрешать запись в регистр передачи SPIDR, пока предыдущие данные полностью не отправятся, и флаг SPTEF не станет равным единице. Как только происходит считывания этого флага, происходит его обнуление, после этого в SPIDR разрешена запись данных.

Листинг 8.3

 void SPI_transmit_empty(void){ 

                     while (SPISR_SPTEF==0) {}  // передача не будет разрешена пока