Архив рубрики: ARM контроллеры

Связь с STR750 по USB используя CDC

Кроме интеграции библиотек и инициализации устройства необходимо прописать указания для линкера о выделении памяти под USB буферы.

Если этого не делать — будет писать Device Unknown даже если все расписано нормально в коде.
define symbol __region_USB_PKG_RAM_start__  = 0xFFFFA000;
define symbol __region_USB_PKG_RAM_end__    = 0xFFFFA3FF;
define region USB_PKG_RAM_region = mem:[from __region_USB_PKG_RAM_start__ to __region_USB_PKG_RAM_end__];

do not initialize  { section USB_PACKET_MEMORY };
place in USB_PKG_RAM_region
{ readwrite data section USB_PACKET_MEMORY  };

STR75x_FLASH.icf

Драйвера для 1-wire устройств под STR750 процессор

Драйвер DS2482 для обращения к 1-wire шине.

STR750_DS2482_i2c_1wire_driver_v1.0

Поиск по 1-wire шине. Используется DS2482 1Wire_Triplet команда, которая при необходимости может быть заменена на две команды чтения и одну команду записи, согласно APPLICATION NOTE 187 1-Wire Search Algorithm

STR750_1wire_search_v0.1

Драйвер термометра DS18B20 подключенного к 1-wire шине через DS2482-100

STR750_DS18B20_driver_w_DS2482_v0.1

Проблемы со связью по I2C шине STR750 <-> DS2482-100

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

Надежно помогает только сброс по питанию.

Выяснилось, что самым неприятным в работе I2C протокола на STR750 является то, что если не выдерживается алгоритм работы с ACK non-ACK ответами слейвам по шине — то они отваливаются наглухо и некоторое время перестают реагировать на запросы, завешивая всю шину. Надо проверять правильность передачи non-ACK байт.