GermanIvanov
Member
rx,tx, gnd провода пошевелить, перепаять еще раз. Были у меня дивные глюки в свое время из-за кривой пайки c tlsr8266Перед каждым printf делал irq_disable. Пофиг ...
rx,tx, gnd провода пошевелить, перепаять еще раз. Были у меня дивные глюки в свое время из-за кривой пайки c tlsr8266Перед каждым printf делал irq_disable. Пофиг ...
Я пошел другим путем. Сейчас придут еще пара модулей, распаяю по-новой. Посмотрим ...rx,tx, gnd провода пошевелить, перепаять еще раз. Были у меня дивные глюки в свое время из-за кривой пайки c tlsr8266
есть еще другой кончик веревочки - протокол компорта со стороны компа. В терминалке случаем не включены CTS/RTS и иже с ними? Возможно на ките они разведены, а у вас на голом модуле нет.Посмотрим ...
Flash JEDEC ID: 0xC86013, Size: 512 kbytes
Оставшийся вариант причины мусора - несоответствие скорости. Это чаше сказывается на длинных непрерывных фреймах.Я пошел другим путем. Сейчас придут еще пара модулей, распаяю по-новой. Посмотрим ...
Еслил честно, я не знаю что за ble_sdk_multimode. У telink'а на сайте я скачал Bluetooth LE Single Connection. Начал смотреть, что там еще есть у Ai-Thinker и обнаружил там нормально прописанную функцию flash_erase_page(). Добавил это дело в свой SDK и о чудо, оно заработало. Хотя написано, что будет работать only P25Q40L support this function.В исходниках к новому SDK значатся такие Flash:
Flash Type MID Company
GD25LD40C 0x60C8 GD
GD25LD05C 0x60C8 GD
P25Q40L 0x6085 PUYA
MD25D40DGIG 0x4051 GD
GD25D10C 0x40C8 GD
PN25F04C 0x311C XTX
TlsrPgm говорит, чтоFlash JEDEC ID: 0xC86013, Size: 512 kbytes
т.е. в новых партиях-сериях могут быть разные кристаллы Flash и для стирания страниц(ы) и их размеров надо смотреть PDF на конкретную Flash....
ble_sdk_multimode\drivers\8258\flash.c имеет секцию с /* according to your appliaction */
в ней flash_erase_32kblock() , flash_erase_64kblock() и т.д.
Save config to flash. watermeter_config.flash_addr - 0x56100
Save config to flash. watermeter_config.flash_addr - 0x56200
Save config to flash. watermeter_config.flash_addr - 0x56300
Save config to flash. watermeter_config.flash_addr - 0x56400
Save config to flash. watermeter_config.flash_addr - 0x56500
Тут нажали кнопку Reset
Start user_init_normal()
Read config from flash. watermeter_config.flash_addr - 0x56500
set_adv_data()
Bound, start with whitelist!
Save config to flash. watermeter_config.flash_addr - 0x56600
Save config to flash. watermeter_config.flash_addr - 0x56700
Save config to flash. watermeter_config.flash_addr - 0x56800
Save config to flash. watermeter_config.flash_addr - 0x56900
Специфика Flash:Не, не работает. Первый проход отрабатывает только потому, что в самом начале идет полное очищение флеш в user area. А второй круг уже не сохраняет ...
Нет там ничего про команду стирания страницы. Значит не будет работать. Но я это ограничение обошел. Пришлось немного код поправить.
Это код помещаемый в RAM. Он работает быстрее, ровнее, а не медленно подгружаясь кусками из Flash с выставлением сигнала готовности CPU. Потребление также в RAM меньше, т.к. не работает Flash и система кэширования.А вот еще глупый вопрос. При каком варианте нужно перед функцией выставлять атрибут _attribute_ram_code_ ?
Нет там ничего про команду стирания страницы. Значит не будет работать. Но я это ограничение обошел. Пришлось немного код поправить.
?Как было. В последнем сохраненном конфиге был флажок active. Если он true, то это последний обновленный архив. Но при этом, когда конфиг нужно было сохранить, нужно было считать предыдущий из флеш, обнулить флаг active и записать на тоже место. А потом уже увеличить адрес на одну страницу (256 байт) и записать. Ну я и хотел перед каждой записью очищать страницу. Не вышло.
Ну я считал, что если мы по адресу уже что-то записали, то чтобы записать по нему повторно, нужно сперва стереть. А стереть весь сектор я не мог, так как в нем могло быть уже несколько сохраненных конфигов. Короче, я отказался от повторной перезаписи и пишу за один раз. А стираю сектор, когда адрес страницы кратен 0x1000.?Как было. В последнем сохраненном конфиге был флажок active. Если он true, то это последний обновленный архив. Но при этом, когда конфиг нужно было сохранить, нужно было считать предыдущий из флеш, обнулить флаг active и записать на тоже место. А потом уже увеличить адрес на одну страницу (256 байт) и записать. Ну я и хотел перед каждой записью очищать страницу. Не вышло.
Стирание страницы: Block Erase time: 0.5/0.8s typical - слишком долгое и грозит разрывом связи. По этому и не используется при BLE соединении.
Более короткое стирание сектора ещё как-то проходит, с частичным сбоем связи, если не предусмотрены тайминги-параметры соединения с необходимыми тайм-аутами...
Там написано EPEVER BLE RJ45 A BLE Adapter, а не Bluetooth.Стал обладателем преобразователя интерфейса RS485 to Bluetooth на чипе ai-thinker pb-02 ble 5.0.
Используется для мониторинга солнечного контроллера, EPSOLAR eBox-BLE-01 Box .
В описании производителя:Там написано EPEVER BLE RJ45 A BLE Adapter, а не Bluetooth.
Разберитесь в чем отличие, прежде чем писать вопросы...
Может.Я вот и спрашиваю, может ли устройство с 4.2 LE видеть 5.0 или нет.
Но для соединения с BLE в смартфоне (и т.д.) требуется специальная программа.В спецификации Bluetooth на Galaxy S7 есть фича LE (Low Energy).