vlad_new 1 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Появилась проблема - пишу для STM32F100, так симулятор вообще ни под каким видом работать не хочет, хоть бабой ягой девайс в таргетах обзови. Увижн 4.2. Что делать? И вообще, я в даташитах описания толкового не нашел - как получается в реальных камнях так, что они на 0х08000000 перепрыгивают? И зачем? Почему не как обычно - с нуля таблица векторов прерываний, а где-нить вдалеке все бутлоадеры и прочее? И еще, я правильно понимаю - в железяке процу всегда видно два куска одинаковой памяти - с 0х08000000 и ее отображение начиная с 0х00000000 Тут уже намек был, что надо ставить не 100, а 101 или 103 камень. Сотки KEIL в дебагере не поддерживает. Хотя STM32F1XXC4T6 любой не поддерживает. Так что всегда ставь STM32F103RET6 - этот точно везде заработает. Опять же "не поддерживает" - это не совсем верно, поскольку в окне view ( в режиме дебагера ) Sistem viewer появляется вся вся перефирия. Правда родные KEIL-овские гуда приятнее. Что касаемо запуска, то, таблица векторов устроена так: Первые 4 байта всегда являются адресом стека. Вторые 4 байта адресом запуска. То что ты видиш в 0 и в 08000000H одно и то же - так и должно быть. Область Flash "подставляется" в 0 адрес или подставляется загрузчик по COM1 (BOOT Loader). Собственно ты и сам уже догадался. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба scifi и vlad_new огромное спасибо! STM32F103RET6 - с этим работает) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба scifi и vlad_new огромное спасибо! STM32F103RET6 - с этим работает) :rolleyes: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 26 августа, 2011 Опубликовано 26 августа, 2011 · Жалоба Форумчане, еще вопрос. Во-первых, правильно ли я понимаю - Open-drain режим - это режим подтягивания. То есть к ноге через резистор подтягиваю какое-то напряжение, и при подаче значения 0 эта нога со стороны контроллера висит в воздухе, т.е. выход ноги - это то самое подвешенное напряжение через резистор. При подаче значения 1 на ногу, она коммутируется на землю, и выход ноги - земля. Так ли это? Во-вторых, никак не могу найти ограничений на подвешиваемое питание. Ноги 5в-совместимые, т.е. до пяти вольт можно вешать спокойно. Но на рисунке в даташите этот режим показан полевыми транзисторами. Т.е. по идее можно повесить и 12в и 24в. Какие на самом деле ограничения? Ну и к тому же вообще ничего не сказано о максимальном входном токе в этом режиме (в обычных режимах вроде 25мА терпит). Какой брать резистор? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 26 августа, 2011 Опубликовано 26 августа, 2011 · Жалоба Во-первых, правильно ли я понимаю - Open-drain режим - это режим подтягивания. "Режим подтягивания"? Зачем выдумывать свои термины, когда есть общепринятые? Это называется "открытый сток". Это практически то же самое, что и "открытый коллектор" (Open collector). и при подаче значения 0 эта нога со стороны контроллера висит в воздухе, т.е. выход ноги - это то самое подвешенное напряжение через резистор. При подаче значения 1 на ногу, она коммутируется на землю, и выход ноги - земля. Так ли это? Наоборот. "0" коммутирует на землю, "1" - отпускает. Т.е. по идее можно повесить и 12в и 24в. Какие на самом деле ограничения? Ограничения - в даташите. Превышать 5В не положено. На входах стоят стабилитроны для защиты от статики. Ну и к тому же вообще ничего не сказано о максимальном входном токе в этом режиме (в обычных режимах вроде 25мА терпит). Какой брать резистор? Здрассте. Всё сказано. 25 мА на ножку. Внимательнее читайте даташит. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 26 августа, 2011 Опубликовано 26 августа, 2011 · Жалоба Превышать 5В не положено. 25 мА на ножку. Спасибо. Просто надеялся что есть еще на свете халява... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gambit 0 2 сентября, 2011 Опубликовано 2 сентября, 2011 · Жалоба Играюсь с ADC и DMA на STM32f103RBT6 Возникла неприятность! Под отладчиком все работает на ура! Но когда устройство запускается без житага, ни АЦП ни ДМА не желают работать((( По адресам нули и все... В чем косяк? Может кто сталкивался! Уже и в дебаге и в релизе компилил, с оптимизацией и без... ничего не помогает( Вот код инициализации: #define ADC1_DR_Address ((uint32_t)0x4001244C) RCC_ADCCLKConfig(RCC_PCLK2_Div8); // Enable DMA1 clock RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);// Enable ADC1 and TIM1 Periph clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // Configure ADC Channel14 as analog input GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); // DMA1 Channel configuration DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADCConvertedValue; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize = 1; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStructure); DMA_Cmd(DMA1_Channel1, ENABLE); // ADC1 configuration ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC1->CR2 |=((uint32_t)0x00800000); ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_71Cycles5); ADC_InjectedSequencerLengthConfig(ADC1, 1); // Set injected sequencer length ADC_InjectedChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_55Cycles5); // ADC1 injected channel Configuration ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None); // ADC1 injected external trigger configuration ADC_AutoInjectedConvCmd(ADC1, ENABLE); // Enable automatic injected conversion start after regular one ADC_DMACmd(ADC1, ENABLE); // Enable ADC1 DMA ADC_ExternalTrigConvCmd(ADC1, ENABLE); // Enable ADC1 external trigger ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE); // Enable JEOC interupt ADC_Cmd(ADC1, ENABLE); // Enable ADC1 ADC_ResetCalibration(ADC1); // Enable ADC1 reset calibaration register while(ADC_GetResetCalibrationStatus(ADC1)); // Check the end of ADC1 reset calibration register ADC_StartCalibration(ADC1); // Start ADC1 calibaration while(ADC_GetCalibrationStatus(ADC1)); // Check the end of ADC1 calibration ADC_SoftwareStartConvCmd(ADC1, ENABLE); // Start ADC1 conversion Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gambit 0 5 сентября, 2011 Опубликовано 5 сентября, 2011 · Жалоба Всем спасибо. Нашел косяк) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 сентября, 2011 Опубликовано 5 сентября, 2011 · Жалоба Всем спасибо. Нашел косяк) Как вы считаете, а сам "косяк" озвучить в данной теме не будет ли соответствовать хорошим манерам? Кто-то же вчитывался в ваш код, искал "косяк". Оказывается, всё зря? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gambit 0 7 сентября, 2011 Опубликовано 7 сентября, 2011 · Жалоба Будет. - ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; +ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; - ADC_ExternalTrigConvCmd(ADC1, ENABLE); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sagok 0 10 октября, 2011 Опубликовано 10 октября, 2011 · Жалоба Столкнулся с траблом, Eclipse выдаёт : Warn : Error: start and end sectors must be on a 2 sector boundary Error: failed setting protection for areas 0 to 4 (-901) и далее не прошивается STM32F107 через JTAG. Помогите решить проблемку. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StAlexy 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба Здравствуйте, коллеги! Столкнулся со следующей проблемой: STM32F107 стоит на плате преобразователя (мостовой инвертор). Через оптроны отвязан от силовой земли. На Viper формирую кучу питаний, в том числе и отдельное-изолированное для микроконтроллера. Для контроллера стабилизатор, куча емкостей (в том числе и около самого процессора - все как надо по даташиту и феншую!!). Хаотично, фиг знает в зависимости от каких параметров, но он периодически сгорает - коза питание-земля внутри процессора. Питание модуля АЦП остается целым. Раза четыре сгорал во время работы, один раз сгорел при включении! Разводка впринципе правильная - старшие товарищи посмотрели. Может кто сталкивался с таким... Или ваши соображения по данному поводу - в студию!! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Murka 0 22 октября, 2011 Опубликовано 22 октября, 2011 · Жалоба StAlexy Схемку бы глянуть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dir 0 22 октября, 2011 Опубликовано 22 октября, 2011 · Жалоба Здравствуйте, коллеги! Столкнулся со следующей проблемой: STM32F107 стоит на плате преобразователя (мостовой инвертор). Через оптроны отвязан от силовой земли. На Viper формирую кучу питаний, в том числе и отдельное-изолированное для микроконтроллера. Для контроллера стабилизатор, куча емкостей (в том числе и около самого процессора - все как надо по даташиту и феншую!!). Хаотично, фиг знает в зависимости от каких параметров, но он периодически сгорает - коза питание-земля внутри процессора. Питание модуля АЦП остается целым. Раза четыре сгорал во время работы, один раз сгорел при включении! Разводка впринципе правильная - старшие товарищи посмотрели. Может кто сталкивался с таким... Или ваши соображения по данному поводу - в студию!! Флайбэк, очевидно, если куча питаний? А стабилизация по какому питанию? Если не по контроллерному, то можно предположить, что проблема в этом. При изменении нагрузки на стабилизированом питании на остальных начинаются переходные процессы и если там потребление в данный момент небольшое, то вполне может быть превышение в несколько раз от номинала. Однонаправленный сапрессор не помешал бы для ограничения максимального уровня. Ну и, если плата силовая, не нужно забывать о емкостной связи между обмотками . ХЗ как там у вас трансформатор намотан и есть ли экранирующие обмотки. Т.е. через емкостную связь обмоток транса мощные микросекундные импульсы могут пролезть на контроллерную обмотку и далее через стабилизатор и кучу емкостей на МК. Опять таки не помешал бы TVS на выходе контроллерной обмотки (после диода параллельно кондерам) и LC-фильтр после него. Последовательно с L неплохо бы поставить силовой SMD-феррит. Что-то типа BLM18PG471SN1. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 23 октября, 2011 Опубликовано 23 октября, 2011 · Жалоба Здравствуйте, коллеги! ... Столкнулся со следующей проблемой: ... Может кто сталкивался с таким... Или ваши соображения по данному поводу - в студию!! Как Dir и предложил, на питание процессора - TVS. Если нет под рукой "правильного" TVS для 3.3V питания, отлично поработает Z-диод помощнее (1,3W и выше) где-нибудь на 3,9V, еще лучше (но реже имеются) на 3,6V. Проверено, отлично спасает: иногда сам умирает, но делает КЗ по питанию и глушит на себя регуляторы напряжения, а проц остается целехонек. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться