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

Стальной

Members
  • Постов

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

  • Посещение

  • Победитель дней

    2

Весь контент Стальной

  1. Стальной

    I2C STM32F0

    Приветствую. Не получается запустить 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(); } } Прошу помощи с этой проблемой. Спасибо.
  2. @optima Версия 8.2 смогла прошить нормально.
  3. В пн попробую в 8.2 Вроде есть, и куб под него сгенерил проект
  4. Пожарный извещатель типа Маяк, включать транзистором.
  5. Идеально одинаково не получится. Мотаю за один раз в несколько ниток и всё ок.
  6. Доброго времени суток! Сделал отладочную (тестовую) плату с микроконтроллером STM32F722VCT6. Плата моя, целостность проверена, как топологии, так и пайки, мелкие дефекты были исправлены. Программирую через ST-Link на плате VLDiscovery. ST-Link Utility корректно распознает МК, читает и пишет память. При попытке прошить через IAR вылетает ошибка, что целевой камень не соответствует ожидаемому. Я пробовал написать мигалку и прошить двоичный файл через ST-Link Utility. Стирание, программирование и верификация проходят успешно, но мигание не наблюдается. Проблема с неверным определением МК уже была, но в тот раз причиной были разработчики IAR, баг в одной из версий, что они сами подтвердили и прислали патч. Однако в тот раз собранная прошивка работала, если ее зашить через утилиту. Помогите разобраться. Прикреплю проект платы, вдруг где ошибка. bench.dch f7 bench.dip
  7. Здравствуйте! Интересует мнение коллег по правильному питанию мощных МК. Имеется STM32F722VCT6. Делаю для себя новый отладочный стенд. На нем будут обкатываться различные задачи, поставлю плюсом к МК всякую периферию, обязательно i2c память (из серии AT24Cxx), MAX3485, возможно какой-то дисплей, SD-карту, может быть SIM900 и NAND. Первичный источник - думаю, USB хватит. Вопрос - как организовать питание МК? Имеет ли смысл цифровую часть (а мб и часть периферийного зоопарка) питать импульсной системой, а аналоговую часть кренкой? Или всё кренкой запитать? Какие идеи? Спасибо) ЗЫ Сейчас использую стенд на STM32F407VET6, сделанный на коленках, все кренкой питается. Но там периферия изготавливается по мере необходимости и надевается отдельно на гребенки.
  8. Народ, здравствуйте! Есть кто-то, кто может произвести газодинамическую симуляцию? Надо горелочку просимулировать на равномерность истечения газов? Спасибо!
  9. Кроме C2G не вижу. По запросу контек ищутся бассейны
  10. А на C2G что? там две стрелочки в разные стороны @optima В цепь 24В попало 110В переменки. Много чего унесло @ART_ME Изготовитель станка неизвестен, полустёртые иероглифы есть. Производителя датчика не нашёл. И я думаю. мне удастся подружить лазерку и фотодиод без катастрофических последствий.
  11. @alend Они подписаны D Low и L Low. Думаю Light и Dark. То есть активируются на свет и на темноту. Получается так?
  12. Всех приветствую! Имеется вот такой нерабочий датчик на станок. Датчик KONTEC KS-M2. Надо его заменить. Но мне не удалось найти такого нигде в сети, даже инфу про него. Есть только KS-C2G, но описание на понятном языке отсутствует (есть кривой автоперевод). Исходный датчик освещал отражающую поверхность (типа тонкого уголкового отражателя на плёнке), и отражение шло обратно на него. Соответственно, он реагировал на препятствие между отражателем и собой. Вопросы. KS-C2G подойдёт для замены KS-M2? (Под надписью KONTEC есть пиктограмма их функции, но для C2G я не могу понять, что она значит; мб расстояние измеряет). Есть ли аналоги? В теории и я и сам могу такой изготовить, подскажите, за что какой из выходов отвечает, их там два. Спасибо!
  13. @Pont 007 лол они и его просили, LTP. Я думал, что в дос-боксе работает только виртуальный компорт
  14. @Pont 007 Я знаю, но там еще аппаратный компорт нужен. Фиг знает, это психологи-изобретатели. Странные люди
  15. @Pont 007 Те, у кого старинные компы с 98 виндой, не хотят перейти на другую, так как у них какая-то прога не работает под новыми осями и требует саундбластер (хз, что это). Мой знакомый компьютерщик сейчас занимается интимным процессом, оживляя эти ЭВМ. Я попробовал оживить одну мамку того времени, встаёт на пост-коде С1, феникс биос. Я даже такого кода для этого биоса не нашёл в современных справочниках! И вот только на таких ПК работает их прога.
  16. Мост цел? Тут горсть полупроводников, полчаса максиму на проверку всех подряд Высока вероятность, что всё закончится на мосту, судя по повреждению С2.
  17. Главное, чтобы мощность не была меньше требуемой.
×
×
  • Создать...