Silabs efm8bb3 очень медленно работает на основных передачах smbus/i2c

Работая с Simplicity Studio и Silabs EFM8BB3 (SoC на базе 8051), я наблюдаю очень медленную скорость передачи с огромной паузой (до 60 мс) между каждой передачей байтов, а также (до 160 мс) между полными сообщениями по протоколу i2c через главный интерфейс smbus.

Почему скорость передачи так низка, и я могу что-то сделать, чтобы решить ее?

1 ответ

Проблема решается путем активации другого таймера, отвечающего только за распознавание задержки / тайм-аута SCL (будьте осторожны, это не так ясно объяснено в таблице данных). на чипсете Silabs EFM8BB3 таймер T2 призван обеспечить модуляцию передачи потока данных i2c. Таймер T3 выполняет роль тайм-аута i2c SCL. чтобы уменьшить паузу между байтами, необходимо включить T3. Т3 должен быть настроен в two timers, 8-bit auto reload режим с включенным прерыванием по младшему байту. Низкая частота переполнения байта T3 должна быть установлена ​​на 50000 (reload value is 215) в случае скорости передачи i2c 400 кГц. упрощенный обработчик прерываний (просто чтобы сбросить флаг прерывания) должен быть реализован. Частота переполнения старшего байта T3 может быть установлена ​​на самую низкую из доступных 8000 (reload value is 1), объект интерфейса SMBUS требует Enable SMBus SCL Timeout Detection активируется.

Другие вопросы по тегам