При работе с реальным датчиком, а не его программной эмуляцией, описание системы команд будет уточнено. На данный момент можно лишь ссылаться на драйвер к контроллерам от Texas Instruments.
Детальное описание алгоритмов работы с датчиком приведено в разделе 7.
6. Разработка алгоритма управления SPI и управления датчиком FPC1010
SPI (Serial Peripheral Interface) - это полнодуплексный скоростной синхронный трёхпроводной интерфейс. Для его работы используются 3 провода(SCK-синхронизация, MISO-прием данных в режиме «master» и передача в режиме «slave», MOSI-прием данных в режиме «slave» и передача в режиме «master»). Также имеется вывод SS (Slave Select), который непосредственно управляет процессом передачи.
Временная диаграмма работы SPI представлена на рисунке 6.3, схемы поясняющие работу SPI приведены на рисунках 6.1 и 6.2
В схеме SPI основным устройством является 8-разрядный регистр сдвига(SPIDR). Данные помещаемые в этот регистр выходят на передачу в процессе сдвига через MOSI, одновременно с этим происходит прием данных через MISO в режиме «master». Этот процесс представлен на упрощенной схеме работы SPI (рис 6.2).
ВАЖНОЕ ЗАМЕЧАНИЕ!
Для приема данных в режиме «master» от устройства в режиме «slave» необходимо в регистр сдвига master’а поместить любой байт информации. Именно во время передачи этого байта будет осуществлен прием данных.
Детальное описание алгоритмов работы SPI приведено в разделе 7.
7. Описание алгоритмов разработанных функций.
7.1. Разработанные функции
Так как на языке С++ очень удобно работать с предопределенными функциями, что позволяет создать лаконичный и понятный программный код, в процессе выполнения курсовой работы были написаны отдельные функции, каждая из которых выполняет некоторое действие и может быть вызвана любое количество раз в любом месте программы. Созданные функции можно разделить на три части по области применения.
- Общие – функции используемые обоими контроллерами
- Для Master’а – функции используемые только контроллером, находящемся в режиме «Master»(этот контроллер является блоком управления датчика FPC1010)
- Для Slave’а - функции используемые только контроллером, находящемся в режиме «Slave»(этот контроллер является эмулятором датчика FPC1010)
Функции сведены в таблице 7.1
Таблица 7.1 Функции разработанные для курсового проекта
Функция |
Описание функции |
Общие: |
|
SPI_disable() |
функция переводящая SPI в неактивное состояние |
SPI_transmit_empty() |
функция ожидания разрешения передачи через SPI |
SPI_recieve_wait() |
функция ожидания окончания приема байта данных через SPI |
Для Master’а |
|
Init_our_udp() |
инициализация подготовки к отправке UDP-пакета |
send_our_udp(buf, n) |
функция отправки UDP-пакета через интерфейс локальной сети buf – массив данных подлежащий передаче n – размер массива данных подлежащего передаче |
Init_SPI_master() |
инициализация SPI в режим «Master» |
recieve_packet() |
функция приема Ethernet-кадра |
tx_data_SPI(tx) |
функция передачи байта данных через SPI tx – байт данных, подлежащий передаче через SPI |
Uint8 rx_data_SPI() |
функция возвращающая принятый байт данных через SPI |
Init_FPC1010() |
функция инициализации датчика FPC1010 |
Read_image_row() |
функция считывания строки изображения отпечатка пальца |
Read_image_and_transmit() |
функция считывания полного изображения отпечатка пальца и передачи его в локальную сеть в виде UDP-пакетов |
Для Slave’а |
|
Init_SPI_slave() |
инициализация SPI в режим «Slave» |
FPC1010() |
функция эмуляции датчика FPC1010 |
initialization_FPC1010() |
функция эмулирующая процесс инициализации по принуждению от «Master»-устройства |
tx_element_of_image(x) |
функция эмулирующая передачу байта изображения от датчика |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.