Jump to content

    

iamnot

Участник
  • Content Count

    15
  • Joined

  • Last visited

Community Reputation

0 Обычный

About iamnot

  • Rank
    Участник
  1. 100 кБ?! Этого более чем достаточно даже с RTOS+LWIP. А сколько готовы платить если завтра за этим столом будет сидеть Фокс сделать за 2 недели нужный функционал, компактный, без РТОС?
  2. Здесь, на мой взгляд, только тщательный анализ того, что написано в задаце. Или ставить брекпоинты и ждать.
  3. Компас I2C

    Ставить на плату соизмеримо по цене получается если учесть компоненты, поэтому готовый блок с коробочкой приоритетнее. Плюс компас хотелось бы отнести подальше от основной платы, с возможностью его поворота и удобного размещения. Нужен GPS и магнитомер.
  4. Компас I2C

    Тоже склоняюсь к этому. Но и разработчиков тоже понимаю, ну проэмулировал ты, сэкономил, все как бы замечательно, ну напиши что проэмулировал или дай даташит на свою поделку. На этом устройстве выкину эту микросхему и соединю напрямую, а дальше буду уже покупать другое. Вопрос только как отличить подделку от нормального. Я здесь новенький, как думаете, тему закрывать или может будут мысли у кого или ссылки?
  5. Компас I2C

    Выводы TSOP16 больше никуда не идут, висят в воздухе. Вот его распиновка 1 - GND 2 - SCL на компас 3 - SDA на компас 4 - SCL на разъем 5 - SDA на разъем 16 - +3,3В Остальные никуда не идут. Обвязки тоже никакой
  6. Компас I2C

    jcxz, Вы не внимательно читали сообщения. U3 - это 3-Axis Magnetic SensorQMC5883L. Это установлено лог анализатором по обмену между безымянной микросхемой и компасом. Вывод SDA компаса идет на 3й вывод TSOP16, SCL на 2й. Выводы 4 и 5 микросхемы TSOP16 идут на разъем и обозначены на нем SDA и SCL соответственно. На плате TSOP16 не имеет позиционного обозначения и ее название на корпусе стерто. Предположительно это микроконтроллер из дешевых, потому как он опрашивает компас сам. Выше в абзаце и выше в сообщениях указано что куда подключается. Именно то что нужно, без лишних подробностей. Компас -> I2C -> TSOP16 -> I2C -> разъем. Нужно ли еще что-то рисовать, я думаю человек который в теме, поймет.
  7. Компас I2C

    Это свежая разработка, может поэтому на нее еще нет информации.
  8. Компас I2C

    Это GPS + компас в одном устройстве. Применяется обычно в коптерах и подобной тематике. ID устройства можно было бы запросить, но не знаю в каком регистре он находится. Пробовал читать регистры по порядку начиная с 0 (читаю по 1 байту). первые 8 регистров он шлет данные 0x39 0x0 0x5F 0x00 0x00 0x00 0x20 0xBC. Если читать 9 и далее то повторяется то есть 9й будет 0x39 и т.д. Теперь, если читать по несколько байт, то ситуация меняется. Первые 2 байта от каждого регистра читаются со значениями: 0 - 0x39 0x9F, 1 - 0x00 0x30, 2 - 0x5F 0x42, 3 - 0x00 0x00, 4 - 0x00 0x00, 5 - 0x00 0x00, 6 - 0x20 0x00, 7 - 0xBC 0x10. Остальные 0xFF, причем NAK не шлет, можно хоть до 255 байт прочесть и все будут 0xFF. Эти регистры на повороты компаса не реагируют, стоят все время в этих значениях.
  9. Компас I2C

    Думаю нет, так как - он отвечает по I2C на адрес 0x40, а у компаса адрес 0x0D - если встать лог анализатором на выводы I2C между этой микросхемой и компасом, то видна инициализация и чтение компаса (период примерно 20мс).
  10. Компас I2C

    Значит у этой микросхемы распиновка такая. 1 - GND 2 - SCL на компас 3 - SDA на компас 4 - SCL на разъем 5 - SDA на разъем 16 - +3,3В Остальные никуда не идут. Обвязки тоже никакой . Корпус TSOP16 вроде бы. Находил на гитхабе вроде бы картинку где похожая истария, там была выпаяна микросхема и интерфейс соединен напрямую. Придется на этом экхемпляре так же поступить, а вот как быть дальше.
  11. Компас I2C

    Думал уже что может быть это просто буфер, но: - он отвечает по I2C на адрес 0x40, а у компаса адрес 0x0D - если встать лог анализатором на выводы I2C между этой микросхемой и компасом, то видна инициализация и чтение компаса (период примерно 20мс). Судя по обмену компас это QMC5883. По исходникам смотрел, ничего похожего не нашел, чтобы было с адресом 0x40. Искал и 0x80 и 0x81. Такое впечатление что китайцы ставят на плату дешевый компас, который представляется более дорогим. Другого объяснения я не нахожу. Это люди которые за каждый микроцент дерутся, а тут целую микросхему поставили.
  12. Компас I2C

    Здравствуйте. Есть вот такой GPS+компас. Внутри стоит модуль GPS, компас 5883 (QMC или HMC) и какая-то микросхема со затертым названием. I2C микросхемы компаса подключено к микросхеме без названия (предполагаю что это микроконтроллер), а уже от нее 2 вывода идут на разъем и подписаны SDA и SCL. Так вот, этот компас не получается ни прочесть ни записать конфигурацию в него. Опытным путем удалось добиться что эта безымянная микросхема отвечает на адрес 0x40 (чтение - 0x81, запись - 0x80). Не понятно как с ней работать. Поиск информации по форумам и даташитам компасов не дал результатов. Может кто имел дела с таким устройством, поделитесь таблицей регистров. Или есть предположения, кто из компасов может быть с адресом 0x40. Или может быть есть мысли как еще можно добиться от него показаний. Это устройство обычно используется теми кто занимается коптерами и прочими летающими аппаратами, по их форумам полазил не нашел ничего.
  13. Не могу разобраться с usb.

    Куб недогенерирует нормальный код, мышь и клаву делает, а custom нет. По крайней мере я не добился от него внятного результата. Попробуйте почитать вот этот материал, я по нему сделал и работает. Там правда на 103 й контроллер, но я под 042 сделал. https://habr.com/ru/post/208026/
  14. Репорт Custom HID device

    Уже разобрался, был неправильно указан размер буфера для конечной точки USBD_CUSTOMHID_OUTREPORT_BUF_SIZE. Он как раз был равен 8. и при передаче большего размера был эпик фэйл. CUSTOM_HID_EPOUT_SIZE Это было правильно, = 64
  15. Репорт Custom HID device

    Добрый день. Пытаюсь сделать устройство USB HID на микроконтроллере STM32f042. От устройства нужно следующее: 1. чтобы оно определялось в системе как HID устройство 2. чтобы было 2 конечные точки (1 прием, 1 отправка) 3. размеры пакетов должны быть по 64 байта. Нашел примеры в интернете, но не могу заставить это все работать. дескриптор устройства вот такой 0x12, /*bLength */ USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ 0x00, 0x02, /*bcdUSB */ 0x00, /*bDeviceClass*/ 0x00, /*bDeviceSubClass*/ 0x00, /*bDeviceProtocol*/ USB_MAX_EP0_SIZE, /*bMaxPacketSize*/ LOBYTE(USBD_VID), /*idVendor*/ HIBYTE(USBD_VID), /*idVendor*/ LOBYTE(USBD_PID_FS), /*idProduct*/ HIBYTE(USBD_PID_FS), /*idProduct*/ 0x00, 0x02, /*bcdDevice rel. 2.00*/ USBD_IDX_MFC_STR, /*Index of manufacturer string*/ USBD_IDX_PRODUCT_STR, /*Index of product string*/ USBD_IDX_SERIAL_STR, /*Index of serial number string*/ USBD_MAX_NUM_CONFIGURATION /*bNumConfigurations*/ Дескриптор конфигурации 0x09, /* bLength: Configuration Descriptor size */ USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ USB_CUSTOM_HID_CONFIG_DESC_SIZ, 0x00, /* wTotalLength: Bytes returned */ 0x01, /*bNumInterfaces: 1 interface*/ 0x01, /*bConfigurationValue: Configuration value*/ 0x00, /*iConfiguration: Index of string descriptor describing the configuration*/ 0xC0, /*bmAttributes: bus powered */ 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ /************** Descriptor of CUSTOM HID interface ****************/ /* 09 */ 0x09, /*bLength: Interface Descriptor size*/ USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/ 0x00, /*bInterfaceNumber: Number of Interface*/ 0x00, /*bAlternateSetting: Alternate setting*/ 0x02, /*bNumEndpoints*/ 0x03, /*bInterfaceClass: CUSTOM_HID*/ 0x00, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/ 0x00, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ 0, /*iInterface: Index of string descriptor*/ /******************** Descriptor of CUSTOM_HID *************************/ /* 18 */ 0x09, /*bLength: CUSTOM_HID Descriptor size*/ CUSTOM_HID_DESCRIPTOR_TYPE, /*bDescriptorType: CUSTOM_HID*/ 0x01, 0x01, /*bCUSTOM_HIDUSTOM_HID: CUSTOM_HID Class Spec release number*/ 0x00, /*bCountryCode: Hardware target country*/ 0x01, /*bNumDescriptors: Number of CUSTOM_HID class descriptors to follow*/ CUSTOM_HID_REPORT_DESC, /*bDescriptorType*/ USBD_CUSTOM_HID_REPORT_DESC_SIZE, /*wItemLength: Total length of Report descriptor*/ 0x00, /******************** Descriptor of Custom HID endpoints ********************/ /* 27 */ 0x07, /*bLength: Endpoint Descriptor size*/ USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/ CUSTOM_HID_EPIN_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/ 0x03, /*bmAttributes: Interrupt endpoint*/ CUSTOM_HID_EPIN_SIZE, /*wMaxPacketSize: 2 Byte max?? */ 0x00, 0xFA, /*bInterval: Polling Interval (250 ms)*/ /* 34 */ 0x07, /* bLength: Endpoint Descriptor size */ USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */ CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/ 0x03, /* bmAttributes: Interrupt endpoint */ CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max?? */ 0x00, 0xFA, /* bInterval: Polling Interval (20 ms) */ /* 41 */ Репорт такой 0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x01, // REPORT_ID (1) 0x09, 0x01, // USAGE (Vendor Usage 1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x01, // REPORT_COUNT (1) 0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol) 0x85, 0x01, // REPORT_ID (1) 0x09, 0x01, // USAGE (Vendor Usage 1) 0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol) 0x85, 0x02, // REPORT_ID (2) 0x09, 0x02, // USAGE (Vendor Usage 2) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x01, // REPORT_COUNT (1) 0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol) 0x85, 0x02, // REPORT_ID (2) 0x09, 0x02, // USAGE (Vendor Usage 2) 0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol) 0x85, 0x03, // REPORT_ID (3) 0x09, 0x03, // USAGE (Vendor Usage 3) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x40 /*RPT3_COUNT*/, // REPORT_COUNT (N) 0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol) 0x85, 0x03, // REPORT_ID (3) 0x09, 0x03, // USAGE (Vendor Usage 3) 0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol) 0x85, 0x04, // REPORT_ID (4) 0x09, 0x04, // USAGE (Vendor Usage 4) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x40 /*RPT4_COUNT*/, // REPORT_COUNT (N) 0x81, 0x82, // INPUT (Data,Var,Abs,Vol) 0xc0 // END_COLLECTION Само устройство при подключении определяется, драйверы для него ставятся. Но при попытке посылки в него больше чем 8 байт непонятно что с ним становится, после этого уже и 8 байт в него не отправляются Отправляю данные скриптом на Python используя usb.core