• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Telink Single Wire

nikolz

Well-known member
Подскажите команду - пустышку для формирование точной длительности импульса на GPIO
Если импульс в 83.3 нс
надо паузу ровно в 4 раза больше
а получается либо в 3.5 либо в 4.5 больше
 

pvvx

Активный участник сообщества
Подскажите команду - пустышку для формирование точной длительности импульса на GPIO
Если импульс в 83.3 нс
надо паузу ровно в 4 раза больше
а получается либо в 3.5 либо в 4.5 больше
Делается путем вывода в регистр GPIO, далее N чтением регистра GPIO, следующий вывод в GPIO.
CPU при этом шагает со скоростью тактирования шины и самого контроллера GPIO = фиксированное время, зависящее от частоты кварца.
Джиттер будет от работы "кеш", как и прерывания если не запрещены, в одну сторону - в увеличение длительности.
Если код в IRAM и прерывания запрещены - джиттера нет.
Чтение регистра значений входов GPIO ~6.6MHz. Точнее - считайте кратность к 26 MHz.
 

pvvx

Активный участник сообщества
Процесс безусловно сложнее, т.к. сказывается ещё кратность к CLK CPU. Это зависит от кода - надо смотреть asm, но после сборки он всегда будет фиксирован. По этому у нас бьют 26/4 GPIO и 80 или 160 MHz CPU и программа расчета длительности в тактах CLK CPU говорит о средних 6.6 MHz.
 

nikolz

Well-known member
Несовместимые условия. GPIO тактируется 6.5 MHz (26/4)
Из этого ряд: 153.846, 307.692, 461.538, 615.385, 769.231 нс строба GPIO.
у меня минимальный импульс составляет 83 нс, он состоит из двух обращений
т е получается 41.5 нс - одно обращение к GPIO
удалось сделать 3.995 путем увеличения длительности до 166 нс
---------------------------
но пока не удается заставить TLSR откликнуться на запрос.
как полагаете возможно это из за неточного соотношения
или причина иная?
 

pvvx

Активный участник сообщества
у меня минимальный импульс составляет 83 нс, он состоит из двух обращений
т е получается 41.5 нс - одно обращение к GPIO
ESP8266
На вывод в GPIO - 2 такта шины 26MHz (работа шины = 6 тактов CLK CPU 80MHz или 12 тактов CLK CPU 160MHz)
http://esp8266.ru/forum/threads/tajmer-i-gpio.75/page-2#post-1318 (быстрее невозможно)
А чтение GPIO - 4 такта шины 26MHz

Всё с учетом FIFO шины! При занятости FIFO - дополнительная задержка.
 

pvvx

Активный участник сообщества
но пока не удается заставить TLSR откликнуться на запрос.
как полагаете возможно это из за неточного соотношения
или причина иная?
У меня нет сейчас TLSR. В город не поеду... я отдыхаю от города.
По докам и прочим файлам от Телинк - там всегда жестко программируется скорость работы контроллера swire и в разных сетапах она разная. Это может говорить о том, что требуется возможность плавного стробирования тактов шины от 0 до 10MГц. 1 бит на 5 тактов по 10MГц = 2Mbps. И т.к. существуют расхождения кварцев и всяких четностей - вам нужен контроллер с шагом изменения строба в пару нс для диапазона 10МГц. :p
 

pvvx

Активный участник сообщества
Из этого - самый простой вариант = запрограммировать сам модуль TLSR8269.
К тому-же вы пишите, что у вас всё благополучно собирается на их SDK, а по докам TLSR8269 запросто программируется по USB.
 

pvvx

Активный участник сообщества
@nikolz - но, судя по вашему копанию, вы хотите подать всего пару команд в TLSR модуль. Например - erase all или аналогичное :)
Для этого требуется мышкой в окошке нарисовать диаграмму и передать её в генератор произвольных сигналов :p
Можно и в аналоговый. Там дискретизация обычно (у дешевых) от 200 Msps и есть ручка плавного изменения...
Дело пяти минут.
 

nikolz

Well-known member
Из этого - самый простой вариант = запрограммировать сам модуль TLSR8269.
К тому-же вы пишите, что у вас всё благополучно собирается на их SDK, а по докам TLSR8269 запросто программируется по USB.
все не так просто как кажется изначально.
Дело в том, что в 8269 они совместили SWM с Rx и в итоге прошивка для 8266 мало вероятно заработает на SW
Кроме того, пока не нашел что-либо про работу с SWM и какие-либо функции для него.
Задал вопросы китайцам.
Экспериментирую
 

nikolz

Well-known member
@nikolz - но, судя по вашему копанию, вы хотите подать всего пару команд в TLSR модуль. Например - erase all или аналогичное :)
Для этого требуется мышкой в окошке нарисовать диаграмму и передать её в генератор произвольных сигналов :p
Можно и в аналоговый. Там дискретизация обычно (у дешевых) от 200 Msps и есть ручка плавного изменения...
Дело пяти минут.
Дело в том что Erase работает через BDT и USB
Все работает до момента записи во флеш примера и рестарта
после этого USB либо вообще не реагирует
либо ком сообщает об ошибке USB и тоже не работает
Как с этим бороться пока не знаю
 

pvvx

Активный участник сообщества
Дело в том что Erase работает через BDT и USB
Все работает до момента записи во флеш примера и рестарта
после этого USB либо вообще не реагирует
либо ком сообщает об ошибке USB и тоже не работает
Как с этим бороться пока не знаю
upload_2019-9-9_17-56-7.png
Тут указано, что на swire есть какое-то "Activate".
А так-же, что есть "Erase flash".
 
Сверху Снизу