Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 28. WoodmanUSB. Достоиства и "недостатки" порта PORTA

Дмитрий Иванов, 09 Декабря 2013

Надеюсь, что все опыты с портом PORTA модуля WoodmanUSB у Вас прошли успешно. Мы научились напрямую управлять внешними нагрузками с этого порта (например, светодиодами), считывать состояния линий порта при управлении им снаружи каким-либо внешним устройством (напрмер, ключом). Итого, можно указать следующие достоинства данного порта:

  • Простота работы с портом - для управления не требуются дополнительные линии управления.
  • Режим прямого ввода-вывода: установленный уровень напряжения на выводе порта сохраняется столь долго, пока либо не произойдет отключение питания или не будет установлено новое значение.
  • Наличие возможности гибкой настройки направления передачи данных через порт. Одновременно часть линий может быть настроена на вход, другая часть на выход.

Однако пришло время посмотреть на этот порт немного с другой стороны. К сожалению, не смотря на простоту изготовления USB устройств на основе использования данного порта, у него есть один важный недостаток, а именно скоростные характеристики.

Чтобы дать оценку скоростым характеристикам порта PORTA давайте напишем небольшую консольную программу. Рассмотрим код поближе. Здесь все должно быть Вам знакомо, кроме некой функции clock(). Это системная функция Windows, которая возвращает число милисекунд, прошедших с начала запуска операционной системы. Далее запускаем цикл из 1024 обращений к функциям записи данных и их чтения. При этом замечаем время на начало теста и его окончания. Соответственно, разница и будет время выполнения этого участка кода.

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include "WUSBdrv.h"

int main()
{
	int status = WUSB_Open();

	if(status == WUSB_ERROR)
	{
		printf("ERROR! Can`t open WodmanUSB device...\n");
		getch();
		return false;
	}
	else
	{
		printf("WodmanUSB Open Ok!\n");		
	}


	printf("Test Write Speed: \n");
	WUSB_SetupPortA(255); //Set all pins PORTA to OUT

	int t1 = clock();
	for(int i = 0; i < 1024; i++)
	{
		WUSB_WritePortA(0);
	}
	int t2 = clock();
	printf("Resualts: 1024 bytes = %d ms\n\n", t2-t1);


	printf("Test Read Speed: \n");
	WUSB_SetupPortA(0); //Set all pins PORTA to OUT	
	unsigned char data = 0;

	t1 = clock();
	for(i = 0; i < 1024; i++)
	{
		WUSB_ReadPortA(&data);
	}
	t2 = clock();

	printf("Resualts: 1024 bytes = %d ms\n\n", t2-t1);

	getch();
	WUSB_Close();
	return true;
}

Запустив эту программу на моем компьютере я увидел ничто вот такое. Значит, что для того чтобы прочесть или записать 1 КБ данных через порт PORTA необходимо затратить примерно 250 мс, т.е. скорость данного порта примерно 4 КБ/с.


Наверняка, Вы спросите, а где же заявленная скрость в 220 Мбит/с в двух направлениях?

Отвечаю. Работа на таких скоростях подразумевает более сложную схемотехнику и программную часть. Чтобы получать такие скорости передачи данных нам надо переходить на использование порта PORTB с использованием линий PB_RD, PB_WR, PORTB_FF, PORTB_FNE, PKTEND и CLK модуля WoodmanUSB. Но в этом режиме одними светодиодами не обойдешься: потребуется либо ПЛИС или микроконтроллер или даже микропроцессор. Именно они будут источником/потребителем информации пересылаемой через WoodmanUSB, а также именно они будут управлять его работой и следить за его параметрами при передаче данных. Вот тут-то и можно заставить работать модуль на полную отдачу.

На данный момент мы познакомились с портом PORTA модуля WoodmanUSB, позволяющим нам довольно эффективно решать задачи управления внешними устройствами через шину USB. Мы имеем возможность писать данные из прграммы в устройство, читать данные из устройства в программу по 8-ми разрядной линии данных. К сожалению, этот порт не очень подходит для передачи высокоскоростных данных, но идеален для управления датчиками, ключами и т.д.


В следующих статьях мы начнем знакомиться с портом PORTB. Именно он и является тем самым "мостом" между шиной USB и некоторым внешним устройстовм, с помощью которого это самое "устройство" получит возможность передавать данные на компьютер (и также читать данные) по шине USB на скоростях до 220 МБит/с.


© Дмитрий Иванов
09 Декабря 2013 года
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2024