-
Постов
3 986 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип контента
Профили
Форумы
Блоги
Весь контент Стальной
-
Приветствую. Не получается запустить I2C на STM32F030F4P6 для общения с EEPROM. Использую StdPeriph. Сначала пробовал сам писать, потом взял код отсюда. Результат одинаков: На линиях активности нет, висит 3В. Через CubeMX все работает. Последний код, который я пробовал: void I2C_EEPROM_Init(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); GPIOA->MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1; // Режим альтернативной функции GPIOA->OTYPER |= GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10; // Открытый коллектор GPIOA->OSPEEDR |= 0xFF<<18; // Максимальная скорость // Выбор альтернативной функции GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); // I2C1_SCL GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1); // I2C1_SDA I2C_InitTypeDef I2C_InitStruct; I2C_InitStruct.I2C_Timing = 0x00402D42; I2C_InitStruct.I2C_AnalogFilter = I2C_AnalogFilter_Disable; I2C_InitStruct.I2C_DigitalFilter = 0x00; I2C_InitStruct.I2C_Mode = I2C_Mode_I2C ; I2C_InitStruct.I2C_OwnAddress1 = 0xDD; I2C_Init( I2C1, &I2C_InitStruct); I2C_Cmd(I2C1, ENABLE); } int main() { /* * ВКЛЮЧЕНИМЕ IWDG */ // включаем LSI RCC_LSICmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); // разрешается доступ к регистрам IWDG IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); // устанавливаем предделитель IWDG_SetPrescaler(IWDG_Prescaler_256); // значение для перезагрузки IWDG_SetReload(0xEA); // перезагрузим значение IWDG_ReloadCounter(); // LSI должен быть включен //IWDG_Enable(); /* * ВКЛЮЧЕНИМЕ IWDG ЗАВЕРШЕНО */ /* * Запуск ФАПЧ * Основная частота 48 МГц * UART от HSI */ RCC->CFGR |= 0xAA<<18; //pll mul = 12 RCC->CFGR |= 5<<8; //APB prescaller = 4 RCC->CFGR3 |= 3; //USART clock from HSI RCC->CR |= RCC_CR_PLLON; while ((RCC->CR | RCC_CR_PLLRDY) == 0); RCC->CFGR |= 2; //PLL as SYSCLK /* * Настройка ФАПЧ завершена */ //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); // I2C_Initialization(); I2C_EEPROM_Init(); while (1) { I2C_TransferHandling(I2C1, 0xA0, 1, I2C_Reload_Mode, I2C_Generate_Start_Write);//devAddr while(I2C_GetFlagStatus(I2C1, I2C_ISR_TXE) == RESET);//TXDR empty I2C_SendData(I2C1, 0);//memAddr while(I2C_GetFlagStatus(I2C1, I2C_ISR_TCR) == RESET);//transmition complete I2C_TransferHandling(I2C1, 0xA0, 1, I2C_AutoEnd_Mode, I2C_No_StartStop); while(I2C_GetFlagStatus(I2C1, I2C_ISR_TXE) == RESET); I2C_SendData(I2C1, 25); while(I2C_GetFlagStatus(I2C1, I2C_ISR_STOPF) == RESET); I2C_ClearFlag(I2C1, I2C_ICR_STOPCF); for (long int i = 0; i < 30000; i++) IWDG_ReloadCounter(); } } Прошу помощи с этой проблемой. Спасибо.
-
Пожарный извещатель типа Маяк, включать транзистором.
-
Такая схема используется в ПЛК ОВЕН
-
Доброго времени суток! Сделал отладочную (тестовую) плату с микроконтроллером STM32F722VCT6. Плата моя, целостность проверена, как топологии, так и пайки, мелкие дефекты были исправлены. Программирую через ST-Link на плате VLDiscovery. ST-Link Utility корректно распознает МК, читает и пишет память. При попытке прошить через IAR вылетает ошибка, что целевой камень не соответствует ожидаемому. Я пробовал написать мигалку и прошить двоичный файл через ST-Link Utility. Стирание, программирование и верификация проходят успешно, но мигание не наблюдается. Проблема с неверным определением МК уже была, но в тот раз причиной были разработчики IAR, баг в одной из версий, что они сами подтвердили и прислали патч. Однако в тот раз собранная прошивка работала, если ее зашить через утилиту. Помогите разобраться. Прикреплю проект платы, вдруг где ошибка. bench.dch f7 bench.dip
-
Мысленно выверни двигатель наизнанку.
- 1 ответ
-
- Шаговый мотор
- Шаговый двигатель
-
(и ещё 2 )
C тегом:
-
Здравствуйте! Интересует мнение коллег по правильному питанию мощных МК. Имеется STM32F722VCT6. Делаю для себя новый отладочный стенд. На нем будут обкатываться различные задачи, поставлю плюсом к МК всякую периферию, обязательно i2c память (из серии AT24Cxx), MAX3485, возможно какой-то дисплей, SD-карту, может быть SIM900 и NAND. Первичный источник - думаю, USB хватит. Вопрос - как организовать питание МК? Имеет ли смысл цифровую часть (а мб и часть периферийного зоопарка) питать импульсной системой, а аналоговую часть кренкой? Или всё кренкой запитать? Какие идеи? Спасибо) ЗЫ Сейчас использую стенд на STM32F407VET6, сделанный на коленках, все кренкой питается. Но там периферия изготавливается по мере необходимости и надевается отдельно на гребенки.
-
Народ, здравствуйте! Есть кто-то, кто может произвести газодинамическую симуляцию? Надо горелочку просимулировать на равномерность истечения газов? Спасибо!
-
поисковик говорит, это изготовитель бассейнов.
-
Кроме C2G не вижу. По запросу контек ищутся бассейны
-
@ART_ME ну я не смог найти.
-
@ART_ME Он, видимо, уже не существует
-
А на C2G что? там две стрелочки в разные стороны @optima В цепь 24В попало 110В переменки. Много чего унесло @ART_ME Изготовитель станка неизвестен, полустёртые иероглифы есть. Производителя датчика не нашёл. И я думаю. мне удастся подружить лазерку и фотодиод без катастрофических последствий.
-
@alend Они подписаны D Low и L Low. Думаю Light и Dark. То есть активируются на свет и на темноту. Получается так?
-
Всех приветствую! Имеется вот такой нерабочий датчик на станок. Датчик KONTEC KS-M2. Надо его заменить. Но мне не удалось найти такого нигде в сети, даже инфу про него. Есть только KS-C2G, но описание на понятном языке отсутствует (есть кривой автоперевод). Исходный датчик освещал отражающую поверхность (типа тонкого уголкового отражателя на плёнке), и отражение шло обратно на него. Соответственно, он реагировал на препятствие между отражателем и собой. Вопросы. KS-C2G подойдёт для замены KS-M2? (Под надписью KONTEC есть пиктограмма их функции, но для C2G я не могу понять, что она значит; мб расстояние измеряет). Есть ли аналоги? В теории и я и сам могу такой изготовить, подскажите, за что какой из выходов отвечает, их там два. Спасибо!
-
@Pont 007 Не, что-то итальянское DBM
-
@Pont 007 лол они и его просили, LTP. Я думал, что в дос-боксе работает только виртуальный компорт
-
@Pont 007 Я знаю, но там еще аппаратный компорт нужен. Фиг знает, это психологи-изобретатели. Странные люди
-
@Pont 007 Те, у кого старинные компы с 98 виндой, не хотят перейти на другую, так как у них какая-то прога не работает под новыми осями и требует саундбластер (хз, что это). Мой знакомый компьютерщик сейчас занимается интимным процессом, оживляя эти ЭВМ. Я попробовал оживить одну мамку того времени, встаёт на пост-коде С1, феникс биос. Я даже такого кода для этого биоса не нашёл в современных справочниках! И вот только на таких ПК работает их прога.
-
Главное, чтобы мощность не была меньше требуемой.