Страница 1 из 2

stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 06:23:52
ivan dimir
как настроить I2C принцып что нужно настраивать.И ещё один вопрос у меня есть пример как передать 1 байт и принять.А если у меня 2 байтовое слово как это сделать тоже по принципу?

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 07:30:43
VladislavS

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 14:57:59
ivan dimir
У меня яндекс не работает

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 15:23:07
Мурик

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 16:23:30
ivan dimir
Спасибо кот.Спасибо Дюдюка.Вы настоящие спецы.

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 17:43:28
Мурик
Разработчик кроме выпрашивания кодов на форумах :))) должен уметь их находить, :) иначе можно дойти до такого.

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 19:36:45
Eddy_Em
Я бы просто посоветовал сниппеты для F0 скачать, ими и пользоваться.

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 21:17:25
VladislavS
[uquote="Мурик",url="/forum/viewtopic.php?p=3877899#p3877899"]Разработчик кроме выпрашивания кодов на форумах :))) должен уметь их находить :)[/uquote]Я по простоте душевной всегда считал, что писать должен уметь.


[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3877957#p3877957"]Я бы просто посоветовал сниппеты для F0 скачать, ими и пользоваться.[/uquote]
Очень ценный совет для f1. :facepalm:

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 21:59:39
Мурик
VladislavS писал(а):Я по простоте душевной всегда считал, что писать должен уметь.
В идеале да, но не все способны на это. Максимум что могут - слепить кое-как работающий код из кусков выпрошенных на форумах...

Re: stm32f1 cmsis настройка I2C

Добавлено: Вт авг 11, 2020 22:02:05
Eddy_Em
Очень ценный совет для f1.
Они в большинстве своем переносятся на F1 безболезненно. Сам так и делаю. А вообще, конечно, STM32F103 — худшее, что только можно придумать использовать!..

Re: stm32f1 cmsis настройка I2C

Добавлено: Ср авг 12, 2020 07:14:09
VladislavS
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3878019#p3878019"]Они в большинстве своем переносятся на F1 безболезненно.[/uquote]Брехня. Тема про I2C. Они у F0 и F1 совсем разные.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3878019#p3878019"]А вообще, конечно, STM32F103 — худшее, что только можно придумать использовать!..[/uquote]Отличный контроллер. Стоит копейки, производительности хоть попой кушай, информации по программированию в сети и того больше. Простой и надёжный как АК.

Re: stm32f1 cmsis настройка I2C

Добавлено: Ср авг 12, 2020 10:31:31
Eddy_Em
VladislavS, какой он, нафиг, простой и надежный, если там I2C через жопу настолько, что некоторые его ногодрыгом делают?
Я уж не говорю о других косяках...
Вот ты сможешь включить на нем подтяжку в режиме выхода? Ну и т.д.

Нет, если нужно что-то простое и недорогое, то самый лучший выбор - STM32F072. А если вдруг понадобится математика, а то и флоаты, то брать сразу F303 или F4xx...

Re: stm32f1 cmsis настройка I2C

Добавлено: Ср авг 12, 2020 19:51:16
VladislavS
У меня I2C F103 на хотплуге висит и тарахтит себе без сбоев. Кто там чем ногодрыгает проблема не чипа.

Re: stm32f1 cmsis настройка I2C

Добавлено: Ср авг 12, 2020 21:39:31
Мурик
У F103 есть только одна существенная проблема с I2C.
I2C analog filter may provide wrong value, locking BUSY flag and preventing master mode entry
Description
The I2C analog filters embedded in the I2C I/Os may be tied to low level, whereas SCL and
SDA lines are kept at high level. This can occur after an MCU power-on reset, or during
ESD stress. Consequently, the I2C BUSY flag is set, and the I2C cannot enter master mode
(START condition cannot be sent). The I2C BUSY flag cannot be cleared by the SWRST
control bit, nor by a peripheral or a system reset. BUSY bit is cleared under reset, but it is
set high again as soon as the reset is released, because the analog filter output is still at low
level. This issue occurs randomly.
Note: Under the same conditions, the I2C analog filters may also provide a high level, whereas
SCL and SDA lines are kept to low level. This should not create issues as the filters output
will be correct after next SCL and SDA transition.
Возникает при сильных помехах на I2C (кто-то туда полез тыкать отверткой или пинцетом и куда попало коротить). Решается программно.
Workaround
The SCL and SDA analog filter output is updated after a transition occurs on the SCL and
SDA line respectively. The SCL and SDA transition can be forced by software configuring
the I2C I/Os in output mode. Then, once the analog filters are unlocked and output the SCL
and SDA lines level, the BUSY flag can be reset with a software reset, and the I2C can enter
master mode. Therefore, the following sequence must be applied:
1. Disable the I2C peripheral by clearing the PE bit in I2Cx_CR1 register.
2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level
(Write 1 to GPIOx_ODR).
3. Check SCL and SDA High level in GPIOx_IDR.
4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
5. Check SDA Low level in GPIOx_IDR.
6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to
GPIOx_ODR).
7. Check SCL Low level in GPIOx_IDR.
8. Configure the SCL I/O as General Purpose Output Open-Drain, High level (Write 1 to
GPIOx_ODR).
9. Check SCL High level in GPIOx_IDR.
10. Configure the SDA I/O as General Purpose Output Open-Drain , High level (Write 1 to
GPIOx_ODR).
11. Check SDA High level in GPIOx_IDR.
12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
13. Set SWRST bit in I2Cx_CR1 register.
14. Clear SWRST bit in I2Cx_CR1 register.
15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register.
Я не считаю что из-за этого стоит отказываться от МК.

Re: stm32f1 cmsis настройка I2C

Добавлено: Чт авг 13, 2020 14:28:50
dosikus
ivan dimir, i2c в F4 такой же - http://mcu.goodboard.ru/viewtopic.php?id=14

Re: stm32f1 cmsis настройка I2C

Добавлено: Чт авг 13, 2020 20:38:53
ivan dimir
Уважаемые коты.И Дюдюка. Я знаю что i2c везде на stm32 одинаков.Меня принцип настройки шины интересует.В мануале я ничего не понял.Если по таймерам и АЦП всё понятно.То в гугле каждый пишет как настроить шину по разному.

Re: stm32f1 cmsis настройка I2C

Добавлено: Пт авг 14, 2020 06:57:46
VladislavS
[uquote="ivan dimir",url="/forum/viewtopic.php?p=3878779#p3878779"]Я знаю что i2c везде на stm32 одинаков.[/uquote]Это не так. Я вот два разных модуля I2C в микроконтролерах stm32 знаю.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=3878779#p3878779"]Меня принцип настройки шины интересует.[/uquote]Настроить две ноги в AF, включить тактирование, записать штук 5 регистров правильными значениями по RM. Всё как обычно и с другими устройствами.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=3878779#p3878779"]В мануале я ничего не понял.[/uquote]Что конкретно непонятно? Спрашивайте. А то создаётся впечатление, что вы не своим делом заняты.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=3878779#p3878779"]Если по таймерам и АЦП всё понятно.[/uquote]Очень странно. Настройка таймеров и АЦП, кмк, посложней I2C будет.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=3878779#p3878779"]То в гугле каждый пишет как настроить шину по разному.[/uquote]Ничего удивительного. Даже просто GPIO настроить есть куча разных подходов.

Re: stm32f1 cmsis настройка I2C

Добавлено: Пт авг 14, 2020 08:10:07
ivan dimir
Я вот два разных модуля I2C в микроконтролерах stm32 знаю.Как это разные модули I2C?.Меня интересуют этих 5 регистров?

Re: stm32f1 cmsis настройка I2C

Добавлено: Пт авг 14, 2020 09:52:05
Мурик
ivan dimir писал(а):Меня интересуют этих 5 регистров?
RM на контроллер не интересует?
В нем все есть.

Re: stm32f1 cmsis настройка I2C

Добавлено: Вс авг 16, 2020 18:18:54
ivan dimir
Меня интересуют биты?