Выбор частоты тактирования rp2040-zero

Ошибочка вышла, извиняйте. Конечно же не 100 Mbps а 100 kbps, или если так понятней - частота SCL очень низкая, а контроллер моноколеса ( конкретно Airweel Q3) формирует импульсы с частотой около 1,5 МГц.

За подсказку спасибо, но уж если придираться к моим текстам, то и к своим тоже : не бывает «кгц», а бывает «кГц», плюс не бывает Мгц, а только МГц, хотя в художественной литературе допустимо и не такое. Не даром кофе нынче среднего рода.

Понятнее не стало.
Четко напишите, желательно не путая мегагерцы и килобиты, какую частоту хотите достичь и сколько реально достигли.

Сообщаю: штатный контроллер (предположительно STM32XXX) инициализирует при запуске а затем опрашивает штатный же гироскоп MPU6050 с частотой около1,5 МГц на шине SCL. Мои запрограммированные как SLAVE платы ардуино нано и raspberry rp2040-zero включённые по очереди взамен MPU6050 ни та ни другая не формируют ACK, видимо просто не успевают, однако они же будучи зашитыми как MASTER и SLAVE прекрасно обмениваются друг с другом на скорости 100кГц.
Как быть?
И ещё: простой скетч залитый в rp2040-zero с перебором в loop нулей и единиц на выходе контроллера даёт частоту чуть меньше 1 МГц.
Отсюда и вопрос: тактовая частота у этой «малины» до 133МГц это прикол или я в трёх соснах заблудился? Может быть надо писать прошивку в машинных кодах?

Просто я достаточно усидчивый и поставленные задачи привык решать даже если с ходу по незнанию не получается.
Попробую разобраться с тактированием «процессора», потренируюсь на Blink, кстати удлинив маленько код (скетч) выяснил простую истину - «возврат каретки» а именно к началу цикла тоже занимает некоторые доли микросекунды, но достаточно мало. А это значит что отправка нуля а потом единицы в порт идёт через Архангельск или Харбин, но только не напрямую. Видимо это прелести компилятора Ардуино IDE.

Это прелести Вашего разума или того, что его заменяет. Ну, возможно, ещё средств, которые Вы не употребляете.

В ардуино IDE используется компилятор gcc – это один из лучших, существующих в мире компиляторов.

2ТС:

  1. Дорогой! Если ты почитаешь даташиты, то увидишь, что чисто формально на RP2040 можно выставлять частоту i2c до 1МГц. Неформально - интернет в руки, конечно можно и выше. На ATmega328 мы лет 8 назад баловались в софт i2c на моем коде - 500 КГц вроде выходило… может и выше, не помню уже. Вроде даже до 800… поищи старый срач на старом форуме про скорость индикатора. На хардварном и2ц примерно так же было.
    На Пико - даже дискутировать не нужно, и ХайСпид и2ц точно можно сделать, но вручную, не на SDK. SDK, повторю - до 1 МГц поддерживает.

  2. Ты как-то неудачно зашел изначально с вопросом, поэтому не расстраивайся, но я не могу быть уверен в твоей квалификации. Ты точно разобрался, что гироскоп по и2ц, а не по СПИ подключен? Так-то 6050 по СПИ позволяет гораздо быстрее читать сенсоры. Может ты частоту СПИ увидел? ХайСпид и2й все-таки экзотика.

  3. С какой бы скоростью не тактировал мастер, слейв всегда может задержать ответ и работать, как ему удобно. Просто изучи даташит на и2ц. Там прозрачно все.

1 лайк

Вы что-то путаете. Согласно даташита MPU-6050 по шине I2C может работать максимально на частоте в 400 кГц, а всё что выше идет в дополнение по SPI (и, как я понял, только для MPU-6000):

The MPU-6000 family is comprised of two parts, the MPU-6000 and MPU-6050. These parts are identical to each other with two exceptions. The MPU-6050 supports I2C communications at up to 400kHz and has a VLOGIC pin that defines its interface voltage levels; the MPU-6000 supports SPI at up to 20MHz in addition to I2C, and has a single supply pin, VDD, which is both the device’s logic reference supply and the analog supply for the part.

Документация (стр. 5): https://static.chipdip.ru/lib/553/DOC012553736.pdf

Да я и не ругаю компилятор, спору нет - быстрый и информативный.
Просто моей подготовки в области программирования PIC всегда хватало, а вот в raspberry пока не разобрался, плаваю там где другие проносятся на Ferrari.

Он позволяет на ХайСпид работать, но это “разгон”, работа вне гарантии ДатаШита. Поэтому я тоже сомневаюсь в том, что заводское устройство использовало недокументированный режим.

1 лайк

Вот тут по информативнее:

Так что для начала определитесь что именно у вас там установлено и по какому интерфейсу работает.

Да вот парадокс: название гироскопа как и контроллера китайцы благоразумно стёрли, однако при подмене гироскопа ( который на плате контроллера моноколеса) на внешний MPU6050 работоспособность не утрачена и на логическом анализаторе такой же точно обмен по I2C и на той же скорости порядка 1,5 МГц.
Сам удивлён.

А можете сказать - Что за лог.анализатор у вас используется?

Да, в любом случае задача формулируется так:
надо создать компактное устройство принимающее на аналоговый вход напряжение в диапазоне 0 - 5 Вольт или несколько уже, преобразовать его в код, отмасштабировать и отправить по шине I2C в режиме SLAVE контроллеру который опрашивается шину с частотой около1,5МГц. Возможно на языках высокого уровня эта задача невыполнима при использовании контроллера ro2040-zero, а те более ардуино нано, хотя сами по себе оба хороши но для своих задач.

Андрей, может вы неверно к задаче подходите? Конечная цель - гончарный круг или сделать хотелку из того, что есть?

Что касается анализатора то это Swales logic 24 МГц 8 каналов, очень удобен для шины i2c.
В комментариях тип операции + времена в мкс и нс, ну и другие прелести в то числе ACK и NACK.
Ну и в помощь осциллограф Tektronix 222. Уже не новый на трубке, но яркий, контрастный и два луча со всякими цифровыми примочками.

Тем не менее, я что-то сильно сомневаюсь в 1.5МГц на I2C…

А схему подключения внешнего MPU к мотор-колесу можете предоставить (только вашу, а не «похоже на вот это» и тп)?

Гончарный круг как частный случай, хотя для этого специально покупалось моноколесо. Предидущий раз для своего товарища-керамиста я делал гончарный круг на базе bldc мотора от стиральной машины lg. Моторолловский контроллер прекрасно справился с задачей будучи прибитым к выходной микросхеме управления мотором, привод (в действие) от электронной педали с регулировкой скорости.
Ну а механика - простая ступица на двух подшипниках и собственно стальной диск 30 см.
Дочка друга уехала в Штаты, показала местным видео как эта хрень работает, им понравилось.
Там ещё в ножках весы на тензодатчиках и экранчик от Nokia. Пока в покое - вес глины, при нажатии на педаль - обороты в минуту, это всё на pic контроллере, проще не бывает.

Т.е. вы согласны, что это попытка черезлевоеплечо управлять обычным мотором?

Извините за серость, на форуме впервые. Не очень понимаю как прицепить к ответу фотографию. А что касается подключения внешнего гироскопа то на словах это выглядит так: были обрезаны дорожки SDA и SCL идущие от штатной контроллера к штатному гироскопу и к этим точкам короткими проводами сечением 0,2 кв. мм подпаяна плата MPU6050 с Алиэкспресс. Рядом с гироскопом по счастью есть стабилизатор типа 1117 , так что земля и +5 Вольт тоже короткими проводками.
После этой переделки весь обмен сохранился то есть ничуть не отличается от штатной схемы: сначала прописывается в гироскоп конфигурация, потом посылаются установки по всем трём координатам, потом адрес чтения соответствующий регистру X акселерометра, далее считываются данные из этого регистра. По том всё тоже самое за исключением инициализации, пока не выключишь питание.