-
Постов
10 921 -
Зарегистрирован
-
Посещение
-
Победитель дней
31
Сообщения, опубликованные Сергей Борщ
-
-
Чудес не бывает. Или COE не ноль, или дергает кто-то другой. Вы отладчиком COE смотрите когда импульсы на выходе поймали, надеюсь?
-
11 часов назад, _pv сказал:
причём даже без отдельных чипселектов, в daisy chain
Но какой-то сигнал для синхронизации все же нужен. Или физический, или программный по паузам между передачами. Иначе любая иголка в тактовом сигнале и обмен порушится навсегда.
-
Ну если COE в нуле, а импульсы есть - где-то ваша программа ногой дергает. Ищите.
-
-
2 часа назад, adnega сказал:
Нужно проверить совместимость.
Таймеров существенно меньше, модуль тактирования отличается. Зато есть недокументированный USB, который китайцы успешно в своих клонах st-link использовали. Вроде как это F103 с сокращенным тестированием.
-
6 минут назад, iamnot сказал:
Надеюсь периферия одинаковая.
У этих да. Начиная с F100xC вдвое увеличивается размер страницы флеш.
-
4 часа назад, mantech сказал:
Разве не керамику там уже ставят?
Понятия не имею. Фото бы...
-
11 часов назад, firew0rker сказал:
По питанию 2 ионистора
Смею предположить, что там есть еще и импульсные преобразователи входного напряжения питания в напряжение 5, 3.3, 2.5 или сколько там нужно этому процессору. С большой долей вероятности высохли выходные электролиты этих преобразователей и на питании процессора сейчас большие пульсации, которые и сводят его с ума.
-
6 часов назад, Eddy_Em сказал:
И dmesg подтверждает, что ничего не появилось, кроме какого-то CDC, который вообще к делу отношения не имеет.
Вот dmesg моего устройства:
[516667.339860] usb 1-1.2: new full-speed USB device number 27 using ehci-pci [516667.450691] usb 1-1.2: New USB device found, idVendor=16c0, idProduct=05e1, bcdDevice= 1.00 [516667.450700] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [516667.450702] usb 1-1.2: Product: [затерто] [516667.450704] usb 1-1.2: Manufacturer: [и здесь затерто]. (www.[тоже затерто].com) [516667.450706] usb 1-1.2: SerialNumber: 1 [516667.451366] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device [516667.451707] cdc_acm 1-1.2:1.2: ttyACM1: USB ACM device
Тем не менее это устройство умеет DFU вот прямо так, без джамперов и перетыканий. С линуксовой dfu-util "из коробки", с виндовой после небольшой пляски с zadig. И все строго в соотвествии с "Universal Serial Bus Device Class Specification for Device Firmware Upgrade Version 1.1 Aug 5, 2004".
А вот его lsusb -d 16c0:05e1 -vv:
Скрытый текстBus 001 Device 031: ID 16c0:05e1 Van Ooijen Technische Informatica Free shared USB VID/PID pair for CDC devices Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x16c0 Van Ooijen Technische Informatica idProduct 0x05e1 Free shared USB VID/PID pair for CDC devices bcdDevice 1.00 iManufacturer 1 [затерто]. (www.[тоже затерто].com) iProduct 2 [и здесь затерто] iSerial 3 1 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x009f bNumInterfaces 5 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 1 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 0 bSlaveInterface 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 128 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 3 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 2 bSlaveInterface 3 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 128 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 254 Application Specific Interface bInterfaceSubClass 1 Device Firmware Update bInterfaceProtocol 1 iInterface 4 DFU interface Device Firmware Upgrade Interface Descriptor: bLength 9 bDescriptorType 33 bmAttributes 9 Will Detach Manifestation Intolerant Upload Unsupported Download Supported wDetachTimeout 0 milliseconds wTransferSize 53 bytes bcdDFUVersion 1.01 can't get device qualifier: Resource temporarily unavailable can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered)
Да, там не F103, а L083, F072, F042, F107, F407, но в первых трех USB такой же, как у F103 не считая встроенной подтяжки.
DFU в Run-time mode не показывается в линухе. И в винде не должно (согласно спецификации DFU), но у винды свое представление о прекрасном.
Вы который раз уже "машете шашкой" в темах, в которых, мягко говоря, плаваете. Постарайтесь сдерживать себя.
-
1 час назад, std сказал:
для того чтобы получать строго определенное колчество импульсов STEP ШД и приводить вывод в известное состояние.
Ну "приводить вывод в известное состояние" довольно просто - надо использовать режим ШИМ(PWM). В конце периода он в строго определенном состоянии. Строго определенное количество импульсов - подсчетом в прерывании. Я не знаю что у вас за задача, когда я писал контроллер шагового двигателя, у меня в любой момент могла прилететь команда на разгон/торможение и ждать "строго определенного количества импульсов" было просто нельзя. Поэтому я считал импульсы в прерывании сответствующего канала таймера.
P.S. для реализации (почти) линейного разгона/торможения шагового двигателя вам может быть полезна эта статья: Generate stepper-motor speed profiles in real time.
-
7 минут назад, jcxz сказал:
Если так делать, то невозможно будет перейти из основного приложения в загрузчик.
Я только мысль подал - что есть уже готовые флаги и не нужно ничего мудрить с NOINIT. Там есть и другие флаги. Сам я делаю if(!(RCC->CSR & RCC_CSR_SFTRSTF)) {запускаем приложение;} {иначе запускаем загрузчик;}
Но изначально речь шла о заглушке вместо загрузчика.
-
11 минут назад, Arlleex сказал:
Некий признак в NOINIT-регионе ОЗУ
(RCC->CSR & RCC_CSR_SFTRSTF) ?
-
Почему же? Возврата из этой функции нет, значит компилятор вправе выкинуть весь ненужный код (восстановление стека, возврат из функции) после нее. Смысла в naked тоже не вижу - пусть компилятор делает все то, что считает нужным.
-
Да, примерно так. Только лучше это оформить ассемблерной вставкой, чтобы компилятор не напихал туда лишних команд работы со стеком. Я делаю так:
__attribute__((noreturn)) inline void start_application(uintptr_t msp_init, void (*pc)()) { // start application, need asm inline to avoid stack corruption between MSR and BLX asm volatile ( "msr\tmsp, %[MSP]\n" "\tblx\t%[PC]\n" : : [MSP] "r" (msp_init) , [PC] "r" (pc) : ); __builtin_unreachable(); }
-
3 часа назад, inventor сказал:
и ставлю SCB->VTOR = 0x8000000 + 0x4000; /* Vector Table Relocation in Internal FLASH */
Это должен делать ваш загрузчик, вместо которого у вас пустое место.
Напишите простейшую заглушку, которая будет писать VTOR, заполнять указатель стека содержимым ячейки 0x8004000 и передавать управление по адресу, указанному в ячейке 0x8004004.
Да, можно VTOR прописывать и в самой программе, но как-то это кривововато выглядит.
Ваша студия перед запуском загружает в PC адрес, указанный директивой ENTRY() скрипта компоновщика - поэтому при запуске из студии все работает. Правда непонятно, что при запуске из студии заносится в указатель стека.
1 час назад, jcxz сказал:В командном файле компоновщика не поместили таблицу векторов прерываний в нужное место
Это необязательно - в таблице хранятся абсолютные адреса, от перемещения они не изменятся.
-
25 минут назад, Александр В. сказал:
При замыкании VT3 на 5ой ноге DD3 увеличивается частота мигание, так же при замкнутом VT3 на 6ой ноге DD2 светодиод тухнет
Непорядок. VT3 никак не должен влиять на эти мигания. А замерьте напряжение питания (скажем, между 7 и 14 ногами DD1) - не просаживается ли оно при замыкании VT3?
-
7 часов назад, biborl сказал:
Была
Ну вот белый провод на правильно собранной схеме соединял бы 9 и 5 ноги. Если они больше никуда не подключены - их можно для надежности посадить на землю (соединить с 8 ногой). 4 нога должна быть соединена только с 7 и больше ни с чем (может уходить еще куда-то в схему, если там нужны импульсы). На 12 ногу обычно вешается часовой кварц (но в вашей схеме его нет, значит откуда-то приходят импульсы входной частоты, может быть получаемые из сети импульсы 50 Гц ). Других перемычек между ногами этой микросхемы быть не может - все остальные ноги являются выходами и замыкать их между собой или, тем более, на питание нет никакого смысла.
-
13 часов назад, biborl сказал:
Тогда может зеркальная перемычка нужна?
А почему вы решили, то там вообще нужна где-то перемычка?
-
2 часа назад, Propretor! сказал:
А как логические анализаторы могут помешать работе программаторов с их ничтожным влиянием?
Ну, например, клон Saleale имеет по входам подтяжку к питанию + 3.3 В порядка 10 кОм. Вполне возможно, что эта подтяжка мешает программатору. Про второй анализатор ничего не скажу, не щупал.
-
-
-
15 минут назад, byRAM сказал:
считаю, что переход программистов МК с ассемблера и Си на чистый C++ на нашем предприятии
"На кону мочало, начинай сначала". Если программист умеет - выходной код будет не хуже, а исходник компактнее, понятнее и написан быстрее.
-
31 минуту назад, mantech сказал:
откусите ножки от корпуса
"Не только лишь все" бокорезы способны сделать это аккуратно. Я бы даже сказал - мало какие бокорезы для этого подходят. И вероятность, что подходящие бокорезы будут у человека без осциллографа - ничтожно мала. Поэтому я и посоветовал строительный нож, его хоть добыть можно в любом ларьке.
-
1 час назад, biborl сказал:
Значит в моем случае первая нога будет справа ?
Да, вы все правильно нарисовали.
Как правильно использовать USB C разъем чтобы схема видела OTG устройства
в RS232/LPT/USB/PCMCIA/FireWire
Опубликовано · Пожаловаться
Гляньте эту статью. Ссылку на нее нашел когда-то на этом же форуме.