Перейти к содержанию
    

kostya79

Участник
  • Постов

    5
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

217 просмотров профиля
  1. Сделать графикой - это одно из решений. Но мне нравиться + или А. Когда светодиод маленький 0402 или 0603, то тогда сборка делает меньше ошибок.
  2. Вопрос по поводу component clearance rule. У диода положительную ножку обозначаю обычно плюсиком, так же ставлю 1 около первой ножки микросхемы в silkscreen и assembly слоях. Альтиум рассматривает плюсик и 1 как часть компонента и соответственно увеличивает размер компонента. Никак не могу найти как исключить текстовые элементы в футпринтах из DRC component clearance. Понимаю, что нужно создать custom quiery в component clerance rule, пробывал разные варианты, но все без результата.
  3. Разобрлся сам. Ошибки нигде нет, просто таймаут маленький стоял. В CyUSB.sys Programmer's Reference в примере таймаут задается 2 байтами ( pTransfer->SetupPacket.ulTimeOut = 0x1000), а на самом деле сама величина 4 байта. После того как исправил на pTransfer->SetupPacket.ulTimeOut = 0x00100000 все заработало. Надеюсь, мой опыт кому нибудь пригодится
  4. Последние несколько лет использовал для работы с CY7C68013 библиотеки от Cypress, но жизнь заставляет отойти от Visual Studio, поэтому пришлось написать собственный код для работы с драйвером СyUSB.sys. К сожалению, здесь возникла проблема, которую никак не получается обойти - не получается послать данные по Control Endpoint в чип. Для анализа результатов использую USBlyzer. Посылаю единицу в регистр CPUCS, что необходимо сделать перед загрузкой прошивки. Если это делаю с помощью DeviceIoControl (код приведен ниже), то USBlyzer показывает что передача была Cancelled, при посылке этой же команды с использованием библиотек Cypress, передача проходит. Буду очень признателен если кто то подскажет, что я делаю не так. union{ struct{ UCHAR Recipient:5; UCHAR Type:2; UCHAR Direction:1; } bmRequest; UCHAR bmReq; }; bmRequest.Recipient = 0; // Device bmRequest.Type = 2; // Vendor bmRequest.Direction = 0; // OUT command (from Host to Device) int bufLen = 1; // we send only one command int iXmitBufSize = sizeof(SINGLE_TRANSFER) + bufLen; // The size of the two-part structure UCHAR *pXmitBuf = new UCHAR[iXmitBufSize]; // Allocate the memory ZeroMemory(pXmitBuf, iXmitBufSize); PSINGLE_TRANSFER pTransfer = (PSINGLE_TRANSFER)pXmitBuf; // The SINGLE_TRANSFER comes first pTransfer->SetupPacket.bmRequest = bmReq; pTransfer->SetupPacket.bRequest = 0xA0; pTransfer->SetupPacket.wValue = 0xE600; // CPUCS register in FX2 pTransfer->SetupPacket.wIndex = 0x0000; pTransfer->SetupPacket.wLength = bufLen; pTransfer->SetupPacket.ulTimeOut = 0x1000; pTransfer->reserved = 0; pTransfer->ucEndpointAddress = 0x00; // Control pipe pTransfer->IsoPacketLength = 0; pTransfer->BufferOffset = sizeof (SINGLE_TRANSFER); pTransfer->BufferLength = bufLen; pTransfer->NtStatus = 1; pTransfer->UsbdStatus = 1; DWORD dwReturnBytes = 0; pXmitBuf[iXmitBufSize-1] = 1; DeviceIoControl (hDevice, IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER, pXmitBuf, iXmitBufSize, pXmitBuf, iXmitBufSize, &dwReturnBytes, NULL); DWORD err = GetLastError(); cout << "last error" << err << endl; cout << dwReturnBytes << endl; delete[] pXmitBuf; Код ошибки после команды GetLastError() 995. Код для получения ссылки на девайс hDevice взял без изменений из Cypress CyUSB.sys Programmer's Reference.
×
×
  • Создать...