GOR23

Members
  • Публикации

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

  • Посещение

Репутация

35 Обычный

О GOR23

  • Звание
    Постоялец
  • День рождения 09.12.1988

Информация

  • Пол
    Мужчина
  • Город
    Кременчуг

Электроника

  • Стаж в электронике
    6-10 лет

Посетители профиля

1 629 просмотров профиля
  1. STM32 для чайника

    По крайней мере должен, на то он и ИОН. На практике я так не извращался... Почему нельзя поставить кренку? В варианте со стабилитроном деталей больше (на один резистор). Конденсаторы и там и там нужны...
  2. STM32 для чайника

    А при чём тут прецизионный стабилитрон? У стма свой источник опорного напряжения есть, относительно стабильный, а кренку я бы всё таки поставил по питанию вместо стабилитрона с резистором.
  3. STM32 для чайника

    Да, как то обидно считать себя имбецилом. Хотя у меня такое самое отношение к ардуине как у @my504 к халу. И ещё, куб это же не хал. Это просто инструмент который использует хал. Можно ним и не пользоваться. Хотя, как по мне, время он экономит ощутимо.
  4. STM32 для чайника

    Да спор серьезный. Только все равно каждый при своём мнении останется. Я если что за хал+ртос.
  5. Вопросы От Начинающих По Мк

    Попробовал через другой программатор, не вышло. Потом опять через этот, и о чудо, работает!!! Видать шлейф от программатора выделывается...
  6. Faq По Программе Altium Designer

    Бывает диву даешься, как может прийти в голову делать схему на листе 3х4 м? Какие то особые вещества принимаете? Если большая, разбивайте на блоки и рисуйте на нескольких листах. @aitras если через матсер плату создавать, то контур на keepout layer создаётся автоматически. Естественно потом можно подровнять так как вы указали.
  7. Вопросы От Начинающих По Мк

    Да вроде не подводил раньше, при чём другие контроллеры и сейчас шьёт. Завтра попробую через FT232 + AVR_dude.
  8. Вопросы От Начинающих По Мк

    Вечер добрый. Такой вопрос. Есть контроллер Atmeg168-20AU, тактирование от внешнего кварца 20 Мгц. Подключаю программатор (stk500), читаю фюзы, всё нормально. Ещё раз читаю фьзы - все фьзы 0x00. И так пока не сбросить питание. С chip signatures так же. Первый раз читаются нормальные, второй: 0х00, 0х01, 0х02. И так пока не сбросить питание. Еrase chip не помогает, фьюзы не перешиваются (так как я их сразу читаю, ну а команда прошить уже не работает). Флеш не шьётся вообще. Понижение ISP frequence не помогает. Может кто сталкивался с таким?
  9. Faq По Программе Altium Designer

    Я создаю через мастер, там размеры вводятся при создании.
  10. STM32 для чайника

    Осциллографом
  11. STM32 для чайника

    HAL при настройке устанавливает ещё время нарастания фронта, вот: hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed); Может какой косяк самого HAL, можно попробовать покрутить его (freqrange), в разумных приделах. Лучше бы конечно осциллографом глянуть, что происходит на SDA, SCL.
  12. STM32 для чайника

    Настройка I2C на всякий случай: hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { Error_Handler(); } HAL_NVIC_EnableIRQ(I2C1_EV_IRQn); Понижение ClockSpeed не как не влияет? У меня такая теория, что при смене тактирования,где то не правильно расчитываеться частота шины, от которой отталкивается расчёт ClockSpeed. В итоге он не соответствует установленному. Предположу что ClockSpeed получается выше, в разы. И некоторые устройства просто не могут работать на такой скорости. Ну это только теория, сейчас даташит гляну на ваш MPU6050 . Ещё вопрос, может и тупой, но спросить нужно. SDA, SCL к плюсу резисторами подтянуты?
  13. STM32 для чайника

    @Darth_Vader у меня камень STM32F103RCT6 работает на 72МГц. По I2C подключен к акселерометру LIS331DLH. Нормально работает, 20 устройств уже катается. Тактирование вот так настроено:
  14. STM32 для чайника

    Ну да прямой связи с PLL вроде бы не наблюдается, попробуй сбросить как тут написано, если после этого заведётся значит проблема эта, нет значит другая: void I2C_ClearBusyFlagErratum(struct I2C_Module* i2c) { GPIO_InitTypeDef GPIO_InitStructure; // 1. Clear PE bit. i2c->instance.Instance->CR1 &= ~(0x0001); // 2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR). GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_OD; GPIO_InitStructure.Alternate = I2C_PIN_MAP; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStructure.Pin = i2c->sclPin; HAL_GPIO_Init(i2c->sclPort, &GPIO_InitStructure); HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_SET); GPIO_InitStructure.Pin = i2c->sdaPin; HAL_GPIO_Init(i2c->sdaPort, &GPIO_InitStructure); HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_SET); // 3. Check SCL and SDA High level in GPIOx_IDR. while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin)) { asm("nop"); } while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin)) { asm("nop"); } // 4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to GPIOx_ODR). HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_RESET); // 5. Check SDA Low level in GPIOx_IDR. while (GPIO_PIN_RESET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin)) { asm("nop"); } // 6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to GPIOx_ODR). HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_RESET); // 7. Check SCL Low level in GPIOx_IDR. while (GPIO_PIN_RESET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin)) { asm("nop"); } // 8. Configure the SCL I/O as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR). HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_SET); // 9. Check SCL High level in GPIOx_IDR. while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin)) { asm("nop"); } // 10. Configure the SDA I/O as General Purpose Output Open-Drain , High level (Write 1 to GPIOx_ODR). HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_SET); // 11. Check SDA High level in GPIOx_IDR. while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin)) { asm("nop"); } // 12. Configure the SCL and SDA I/Os as Alternate function Open-Drain. GPIO_InitStructure.Mode = GPIO_MODE_AF_OD; GPIO_InitStructure.Alternate = I2C_PIN_MAP; GPIO_InitStructure.Pin = i2c->sclPin; HAL_GPIO_Init(i2c->sclPort, &GPIO_InitStructure); GPIO_InitStructure.Pin = i2c->sdaPin; HAL_GPIO_Init(i2c->sdaPort, &GPIO_InitStructure); // 13. Set SWRST bit in I2Cx_CR1 register. i2c->instance.Instance->CR1 |= 0x8000; asm("nop"); // 14. Clear SWRST bit in I2Cx_CR1 register. i2c->instance.Instance->CR1 &= ~0x8000; asm("nop"); // 15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register i2c->instance.Instance->CR1 |= 0x0001; // Call initialization function. HAL_I2C_Init(&(i2c->instance)); }
  15. STM32 для чайника

    Нужно наверное эратту смотреть. Там вроде что то было про работу I2C2 с SPI2 или UART3. Ща глянем Самое главное не спросил) Как себя проявляет, неработающий I2C, он стаёт занят после первой передачи?