STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

a5021, спасибо HHIMERA в свое время носом ткнул, так же был в непонятках.
Ну не было у них много времени на чистку , надо было быстрей ляпать...
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Можно подумать это я время потерял на этой элементарщине.
[uquote="a5021",url="/forum/viewtopic.php?p=3503937#p3503937"]Дебилы вы сраные -- мысленно обращаюсь я к составителям документации -- из-за вас только время лишнее потерял.[/uquote]

Смотрим страницу 757. Английским по белому написано что адрес передаётся 8-битами.
Изображение
I2C_2.png
(55.6 КБ) 633 скачивания
Вменяемый человек подумает, а как же это, 7-битный адрес 8-ю битами? А у того кто хоть раз раньше видел что такое I2C даже сомнения не возникнет, что "лишний" бит это и есть RW.

Так что, остынь и читай спецификацию I2C - пригодится в будущем.
Реклама
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="dosikus",url="/forum/viewtopic.php?p=3504132#p3504132"]Ну не было у них много времени на чистку , надо было быстрей ляпать...[/uquote]
Это да. Я тут на днях решил экспортнуть PDF референса в текстовый формат и распарсить на предмет имен регистров, их дефолтных значений и смещений относительно базового адреса. В процессе этого выяснилось, что практически каждая глава имеет свои собственные особенности форматирования и нюансы оформления. Лично у меня сложилось впечатление, что документ готовился многими разными людьми и/или командами, которые не имели строгой координации друг с другом. Не знаю, насколько это близко к действительности, но мне показалось, что чуть ни за каждый блок периферии отвечали разные разработчики, которые потом же и составляли документацию. Часть документации, возможно, составлялась техническими писателями, которые к разработчикам не относятся. В итоге получился такой вот компот.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

VladislavS, спецификацию на i2c разгребал в свое время http://mcu.goodboard.ru/viewtopic.php?id=14.
Для тебя или меня это просто и легко, однако те же адепты SPL и калокуба нарываются на эти "грабли" достаточно регулярно. Почему и говорю, что если берутся описывать интерфейс -так не допускали бы неоднозначеости ...
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3504141#p3504141"]Вменяемый человек подумает, а как же это, 7-битный адрес 8-ю битами?[/uquote]
Это тот же "вменяемый", что недавно утверждал, будто "Address и Device Address это разные вещи" или уже другой?
А у того кто хоть раз раньше видел что такое I2C даже сомнения не возникнет, что "лишний" бит это и есть RW.
Вторично призываю вас научиться говорить и отвечать за себя. Не нужно отвечать за тех, "кто хоть раз раньше видел". Я вот не так давно I2C раскапывал для nrf52832 и референс там просто лютый, если сравнивать с стм-овским, но никаких накладок или недопонимания там у меня не возникло.
Так что, остынь и читай спецификацию I2C - пригодится в будущем.
Засуньте себе ваши сверх-ценные советы.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Если у тебя обычный I2C столько эмоций вызвал, боюсь представить что будет после USB и Ethernet.
Реклама
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3504157#p3504157"]Если у тебя обычный I2C столько эмоций вызвал, боюсь представить что будет после USB и Ethernet.[/uquote]

Ну врать-то зачем? Эмоции не "обычный I2C" вызвал, а косяк в референсе, кривизну которого иные "специалисты" не видят, даже когда покажешь.

Не вам за меня переживать. У меня хотя бы нет таких проблем со зрением и английским и я различаю, в чем написанное не соответствует действительности, а не усираюсь с сочинениями про "разные вещи" даже после того, как пальцем тыкнули, где смотреть.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3504155#p3504155"]Это тот же "вменяемый", что недавно утверждал, будто "Address и Device Address это разные вещи" или уже др[/uquote]А знаешь, я призову на помощь dosikus. Он любезно дал ссылку на свой труд. Я не поленился и почитал этот пост. Цитата:
Адрес самой микросхемы формируется из старших четырех бит и 3х бит chip select, определяемых пинами A2-A0.
В моем случае A2-A0 висят на GND и базовый адрес в итоге - A0.
Функции чтения/записи определяются битом R/#W, таким образом адрес для записи eeprom - A0, для чтения A1;
dosikus тоже разделил адрес микросхемы и адрес который надо в I2C записать. Ну как же так?

И это общепринятая терминология. Берём первый попавшийся даташит на 24C512, к примеру, и видим 7-битный Device Address c пристёгнутым к нему RW.
Изображение
I2C_3.png
(18.94 КБ) 971 скачивание
Последний раз редактировалось VladislavS Вт ноя 13, 2018 20:19:10, всего редактировалось 1 раз.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Вам точно зрение лечить надо. Картинка на той же страничке:
Изображение

Ответьте, вы различаете, до каких границ распространяется Slave Address, а где находится Read/Write Bit ? Впрочем, можете не отвечать. Пипец! Про эзернет с юсб оне рассуждають.
Последний раз редактировалось a5021 Вт ноя 13, 2018 20:17:40, всего редактировалось 2 раза.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

VladislavS, без картинко-то как-то некоширно, не находишь? :)))
И все же, прикинь -нубы и интерфейсы изучают по мануалу стм.
Я ни в коем случае не имел ввиду a5021 , он кстати за тех болванов и радеет...

И кстати даже на той картинко ляп , пиасано -control byte format ,хотя сама транзакция i2c 9бит. И как с этим жить? :)))
Последний раз редактировалось dosikus Вт ноя 13, 2018 20:24:25, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Кошерно, не кошерно, но адрес микросхемы и адрес для записи/чтения ты разделил. И это ж не спроста. :)
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

VladislavS, но мы то знаем что не все так просто ,см выше :)))
Говорю же сколько адептов спл и калокубв на сие напоролись и жаловались...
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3504184#p3504184"]Кошерно, не кошерно,[/uquote]

Если вы плохо видите и ни байта не понимаете по английски, вы лучше на это и жалуйтесь, а не придумывайте "дефекты" окружающим. Лично я, вместо чтобы бред от вас слушать, лучше увеличу и переведу для вас персонально. Так, например, фраза из RM0008

In 7-bit addressing mode, to enter Transmitter mode, a master sends the slave address with LSB reset.

в переводе на русский будет звучать так:

В режиме семибитной адресации, чтобы войти в режим передатчика, ведущий шлет адрес ведомого со сброшенным младшим битом.

В режиме семибитной адресации, адрес семибитный, понимаете? У семибитного адреса -- младший бит, понимаете? Этот бит надо сбросить, чтобы стать передатчиком, понимаете? У адреса, семибитность которого четко обозначается в начале предложения, понимаете? По буквам вам объяснять, чтобы и до вас наконец дошло, что это полнейшая лажа?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3504198#p3504198"]У адреса, семибитность которого четко обозначается в начале предложения, понимаете?[/uquote]В начале предложения указана семибитность РЕЖИМА (mode) адресации. А вот разрядность адресного слова указана на странице 757. В режиме 7-битной адресации адрес ведомого передаётся 8 битами (одним байтом), а в режиме 10-битной адресации двумя байтами (16 битами). И это соответствует стандарту.

Если следовать твоей логике и дёргать 7-й бит в качестве r/w, то в 8-м тогда что должно быть?
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

a5021, Для тех до кого туго доходит и они фантазируют бурно.
Отправить адрес со сброшенным/установленным LSB.
Изображение
R/W в пакете наименьший значащий? Вы понимаете слова наименьший и наибольший что означают?
Выставлять LSB не у адреса надо, а у пакета. Адрес то при чем тут? Формат пакета смотрите.

Все четко по мануалу.

Книжка для чтения в туалете
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Маразм пошел клубами:

"В режиме 7-битной адресации адрес ведомого передаётся 8 битами"

Стесняюсь спросить, а принимается? Принимается тоже 8-ю битами? Все бы хорошо, но вашу "блестящую" придумку рвет в куски регистр I2C_OAR1, в котором слейву отведено только семь или десять бит на адрес. Че делать будем?

Вы для расширения кругозора хоть мануал на что-нибудь отличное от F103 открыли. Там же вот такое:

I2C2 control register 2 (I2C_CR2)
Address offset: 0x0C4
Reset value: 0x0000 0000
...
Bit 10 RD_WRN: Transfer direction (master mode)
0: Master requests a write transfer.
1: Master requests a read transfer.
Note: Changing this bit when the START bit is set is not allowed
Bits 9:8 SADD[9:8]: Slave address bit 9:8 (master mode)
In 7-bit addressing mode (ADD10 = 0):
These bits are don’t care
In 10-bit addressing mode (ADD10 = 1):
These bits should be written with bits 9:8 of the slave address to be sent
Note: Changing these bits when the START bit is set is not allowed.
Bits 7:1 SADD[7:1]: Slave address bit 7:1 (master mode)
In 7-bit addressing mode (ADD10 = 0):
These bits should be written with the 7-bit slave address to be sent
In 10-bit addressing mode (ADD10 = 1):
These bits should be written with bits 7:1 of the slave address to be sent.
Note: Changing these bits when the START bit is set is not allowed.
Bit 0 SADD0: Slave address bit 0 (master mode)
In 7-bit addressing mode (ADD10 = 0):
This bit is don’t care
In 10-bit addressing mode (ADD10 = 1):
This bit should be written with bit 0 of the slave address to be sent
Note: Changing these bits when the START bit is set is not allowed.


Тот самый LSB "уехал" аж на позицию 10-го бита и стал называться более осмысленно. Ну оно и понятно, все-таки последнее, самое свежее семейство.

Ну и, наконец, не STM32 единым. У тех же nRF52 под адрес отводиться отдельный регистр. В нем только семь бит для записи значений.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Делай вот так и будет тебе счастье.
Изображение
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Oxford",url="/forum/viewtopic.php?p=3504236#p3504236"]Для тех до кого туго доходит и они фантазируют бурно. Отправить адрес со сброшенным/установленным LSB.
R/W в пакете наименьший значащий?[/uquote]
Прямо фокусник! Одно движение и "the slave address with LSB reset" превращается в "R/W в пакете". Чудо! Алилуйя! И кто после этого "фантазирует бурнее" ?
Выставлять LSB не у адреса надо, а у пакета. Адрес то при чем тут?
Вы же сказали, что написано там все правильно? А написано там следующее: "ведущий шлет адрес ведомого со сброшенным младшим битом." Продолжаете не понимать при чем тут адрес? Пробуйте еще раз напрячься и узреть, что не пакет, не бандероль, не фантазии и белиберду всякую, а адрес. Адрес со сброшенным младшим битом. Ведущий шлет адрес ведомого. Адрес, вы понимаете? Слово "Адрес" вы можете прочитать? Вижу, что не можете. Не знаю тогда, как помочь.

Добавлено after 4 minutes 3 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3504261#p3504261"]Делай вот так и будет тебе счастье.[/uquote]
Что делать-то? Галлюцинировать, как вы? Ну, нафиг! Да и не припоминаю, чтобы обращался к вам с вопросами о счастье и как мне что-либо делать. Придержите свой фонтан полезных советов. Во первых, из него прут советы сомнительной пользы, а во-вторых, его у вас постоянно не к месту прорывает.
Изображение
Будем проверять зрение. Сколько бит вы насчитали в поле "Device address"? Если посчитать все биты во фрейме, станет ли семибитный адрес, который, по вашему, восьмибитный, девятибитным или десятибитным? По вашей "блестящей" логике вроде бы должен, нет?

Еще раз для плохо-видящих, плохо-читающих и крайне плохо-понимающих. Вот это от H7:

Изображение

В семибитном режиме нулевой бит регистра не задействован, семь бит отсчитываются, начиная с первого, а R/W задается битом #10. Как мастера объяснения всяких необъяснимых вещей, может придумаете что-нибудь, на кой хрен надо было так расчленять адрес, который по народному поверью вроде бы 8-и (а мож и больше)-битный ?
Вложения
2018-11-13_234828.jpg
(81.27 КБ) 1020 скачиваний
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Кто-нибудь объяснит мне что это было?
Изображение
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="Oxford",url="/forum/viewtopic.php?p=3503988#p3503988"][uquote="a5021",url="/forum/viewtopic.php?p=3503937#p3503937"]Документация у стм-ов местами просто "Ад и Израиль". Читаю RM0008 (STM32F103) в части I2C операций. Пишут какую-то дикую херню:
The master can decide to enter Transmitter or Receiver mode depending on the LSB of the
slave address sent.

In 7-bit addressing mode,
- To enter Transmitter mode, a master sends the slave address with LSB reset.
- To enter Receiver mode, a master sends the slave address with LSB set
Дебилы вы сраные -- мысленно обращаюсь я к составителям документации -- из-за вас только время лишнее потерял. Не в адресе должен быть "LSB reset", а следующий бит после адреса. При этом, перед записью в I2C_DR, 7 бит адреса должны быть выравняны влево, а оставшийся младший бит уже определять тип операции запись/чтение. Но про это в RM0008 ни пол слова.[/uquote]

Все правильно там написано.[/uquote]
Поддерживаю. Написано что в "режиме семибитной адресации" младший значащий бит определяет чтение или запись. Нигде не написано что этот бит - бит самого адреса. Не написали явно что подразумевается первый передаваемый байт, как-бы всем и так понятно. Но не тут то было.
Ответить

Вернуться в «ARM»