СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №2/2012

ПРАКТИЧЕСКАЯ ЭЛЕКТРОНИКА Эти три операции являются ядром программы, полный текст которой представлен на сайте журнала. Ос тальной код относится к опреде лению значений необходимых переменных и прототипов функ ций, открытию окна, отображаю щего результат работы програм мы , распечатки значений пе р еме нных в э т ом о к н е и т . п . Приведённые прототипы можно переписать в Delphi, если исполь зуется базовый язык Паскаль. Ес ли же программировать на языке Си, то следует использовать «род ные» прототипы, приведённые в программе FileTransfer для компью тера; 6) следует использовать ещё одну функцию USBXpress, которая очи щает буферы приёма и передачи массивов данных. Для её примене ния необходима запись loop while SI_FlushBuffers (Handler,0,0). Эту опе рацию следует применить после открытия USB, иначе программа ра ботать не будет. Существует функция получения описания устройства USB SI_GetPro duct String(NumDevices,DevString,Op tions), которая не является обязатель ной, но заслуживает внимания. Уфунк ции три параметра: ● NumDevices – этот параметр должен быть всегда равен нулю (NumDe vices=0); ● DevString – этот параметр является названием строки, в которую запи сывается возвращаемое функцией SI_GetProductString() описание уст ройства; ● Options – этот параметр должен быть задан. Если options SI_Return_SeriaL_ Number, то строка DevString примет значение ‘4321’, что означает устрой ство на базе микроконтроллера C8051F320/321. Если параметр Options задать рав ным SI_Return_Description: NumDevices=0 loop while SI_GetProductString(NumDevices,De vString,SI_Return_Description), то строка DevString примет значение ‘USBXpress Device’. Это – описание устройства, которое отражается в па нели управления и появляется после подключения устройства с микро контроллеромC8051F321 к компью теру. Если до подключения устройства к компьютеру зайти по адресу Пуск/ Настройка/Панель управления/Сис тема/Оборудование/Диспетчер уст ройств/ Контроллер универсальной последовательной шины USB/, то на экран выведется окно, показанное на рисунке 25. После подключения уст ройства к компьютеру картинка изме нится и будет иметь вид, показанный на рисунке 26. Заметим, что в окне по явилось устройство ‘USBXpress Device’. Строку DevString можно для контроля вывести на экран, хотя делать это не обязательно (так же, как и использо вать функцию SI_GetProductString()). Как видно из представленных выше функций, программирование обмена по USB со стороны компьютера (при использовании библиотеки USBX press) не требует знаний специфика ции USB. Программирование обмена по USB со стороны МК ещё проще, од нако там тоже есть особенности. Но вначале о функциях, которые обяза тельны для использования. ● USB_Clock_Start(); – этофункция без параметров, которая инициализиру ет внутренний генератор для работы по интерфейсу USB и которуюнеоб ходимо использовать в самомначале программы; ● USB_Init(USB_VID,USB_PID,USB_ MfrStr,USB_ProductStr,USB_SerialStr,U SB_MaxPower,USB_PwAttributes,USB_ bcdDevice); – это функция инициа лизации USB, параметры которой жёстко определены и которая явля ется также обязательной для испол нения. Подробное описание всех па раметров приведено в документе AN169.pdf; ● USB_Int_Enable(); – это функция без параметров, которая разрешает пре рывания по различным событиям в интерфейсе USB и является обяза тельной для выполнения; ● Block_Read (BYTE *Buffer, NumBytes) – это функция с параметрами, пред назначенная для чтения информа ции, поступившей по USB. Первый параметр Buffer – название массива, в который будут записываться по ступившие байты; символ * означает, что это адрес массива. Второй пара метр NumBytes – количество байт для считывания. Его максимальное значение рано 64, т.е. передача ин формации по USB в микроконтрол лер осуществляется пакетами с мак симальным объёмом в 64 байта каж 41 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2012 Рис. 25. Окно диспетчера устройств перед подключением устройства к компьютеру Рис. 26. Окно диспетчера устройств после подключения устройства к компьютеру © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy