Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 808
1

Протокол I2C SMBUS

05.03.2024, 11:29. Показов 770. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня!

Прочитал анализатором общение по интерфейсу, такой воспос, как я понял в нем есть контрольный байт, но согласно описания расчета crc не получается повторить. Задача сделать эмулятор родного аккумулятора. Может кто знает как рассчитать, что бы было как в оригинале?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
name    type    start_time  duration    value   ack address read    data
 
I2C data    3.58696275  0.0000855       ИСТИНА            0x07                                    
I2C start   3.58751275  0.00000025                                                      
SMBus   v1frame 3.5875955   0.00016575  Read address 0x0B ACK Protocol=Read word                                                    
I2C address 3.58767425  0.0000855       ИСТИНА    0x0B    ИСТИНА                                        
SMBus   v1frame 3.587827    0.0002325   Word 0x0400 ACK                                                 
I2C data    3.58782875  0.0000855       ИСТИНА            0x04                                    
I2C data    3.58797375  0.0000855       ИСТИНА            0x00                                    
SMBus   v1frame 3.58811675  0.00008775  Bad PEC 0x0B should be 0xFB                                                 
I2C data    3.58811875  0.0000855       ЛОЖЬ            0x0B                                    
SMBus   v1frame 3.58858 0.000004                                                        
I2C stop    3.588582    0.00000025                                                      
SMBus   v1frame 3.593505    0.000004                                                        
I2C start   3.593507    0.00000025                                                      
SMBus   v1frame 3.593514    0.00026775  Write address 0x0B ACK Protocol=Read word                                                   
I2C address 3.593517    0.0000855       ИСТИНА    0x0B    ЛОЖЬ                                        
SMBus   v1frame 3.59378175  0.000266    Command 0x3D                                                    
I2C data    3.593961    0.0000855       ИСТИНА            0x3D        
I2C start   3.59451275  0.00000025                                                      
SMBus   v1frame 3.59468 0.00025 Read address 0x0B ACK Protocol=Read word                                                    
I2C address 3.59484325  0.0000855       ИСТИНА    0x0B    ИСТИНА                                        
SMBus   v1frame 3.59493 0.0002995   Word 0xF610 ACK                                                 
I2C data    3.59499775  0.0000855       ИСТИНА            0xF6        
I2C data    3.59514375  0.0000855       ИСТИНА            0x10        
                                                                    
SMBus   v1frame 3.59528775  0.000274    Bad PEC 0x43 should be 0x80                                                 
I2C data    3.59528975  0.0000855       ЛОЖЬ            0x43
Здесь 2 примера. запрос 0x07, ответ 0x04 0x00 контрольный 0x0B, но по описанию должен быть 0xFB (Bad PEC 0x0B should be 0xFB)
тоже по запросу 0x3D Bad PEC 0x43 should be 0x80

пытался посмотреть на биты, ничего в голову не приходит...
 
0x3D 0 0 1 1 1 1 0 1
0xF6 1 1 1 1 0 1 1 0
0x10 0 0 0 1 0 0 0 0
0x43 0 1 0 0 0 0 1 1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2024, 11:29
Ответы с готовыми решениями:

AT24c64+STM32F3 I2C протокол
Всем добрый день! С полгода назад, начинал проект на камушке stm32f103, но проект сильно разросся и его заморозили, сейчас пришло время...

I2C UART SMBUs
Требуется помощь сообщества, а то я окончательно запутался.... Прежде всего имеется переходник USORT-USB отсюда (без буферной микросхемы,...

И снова smbus и winring
Пользую прогу для разгона - setfsb . Клокер, установл. на моей матери, в ней не поддерживается. Читаю этой прогой (в режиме дебаг по...

6
763 / 378 / 56
Регистрация: 22.09.2023
Сообщений: 1,114
05.03.2024, 11:57 2
Полагаю, это можно найти в описании протокола на http://smbus.org/specs/

Добавлено: не поленился, скачал, бегло просмотрел, оно там есть:
Протокол I2C SMBUS
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 808
05.03.2024, 14:48  [ТС] 3
Да,но если посчитать то не получается то что шлет блок, на запрос 3D блок шлет crc 0x43 а по расчету получается 0x80....
0
763 / 378 / 56
Регистрация: 22.09.2023
Сообщений: 1,114
05.03.2024, 16:48 4
Цитата Сообщение от eagl69 Посмотреть сообщение
на запрос 3D блок шлет crc 0x43 а по расчету получается 0x80....
У первого попавшегося калькулятора не получается ни 0x80 ни 0x43. Так может это не контрольная сумма?

Вот ведь они пишут:
Each protocol (except for Quick Command and the SMBus Host Notify protocol described Section 6.5.9) has two variants: one with the Packet Error Code (PEC) byte and one without.
.

Хотя согласен - описание контрольной суммы более чем скудное. Ни начальное значение, ни направление сдвига, ни инверсия не указаны. Может это поможет:
The SMBus web page provides some example CRC-8 methods.
http://smbus.org/faq/faq_main.htm#crc8
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 808
05.03.2024, 16:56  [ТС] 5
Вот нашел:

Добавлено через 2 минуты
Вот нашел
PEC - это байт проверки на ошибки CRC-8, вычисляемый по всем байтам сообщения (включая адреса и
биты чтения/записи). PEC добавляется к сообщению устройством, предоставившим последний байт данных.
Я пытаюсь рассчитать crc на 2 байта, 0xF6 и 0x10 это байты с данными, получается еще и адрес устройства 0x0B надо добавить?
http://www.smbus.org/specs/smbus20.pdf
0
763 / 378 / 56
Регистрация: 22.09.2023
Сообщений: 1,114
05.03.2024, 17:09 6
Я вам это же самое английским по белому на картинке из спецификации в первом сообщении выложил. И да, там было написано, что надо считать и адрес тоже. Но 0x43 все равно не получится, я проверял. Да и анализатор ваш в предыдущей теме на этот PEC ругался. Значит это не PEC, а просто еще один байт ответа.
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 808
05.03.2024, 17:39  [ТС] 7
Это может быть байт ответа, наверное, но если я отдельно посылаю команду аккумулятору, то то он отвечает 2-я байтами, в спецификации написано что 3D это милливольты. если подключаюсь сканером к линии то идет 3 байта. вот что меня смутило...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2024, 17:39
Помогаю со студенческими работами здесь

Конвертер i2c в usb - MIKROE-1421, FTDI click USB 2.0 to I2C для ПК
Подскажите как подключить устройство с интерфейсом i2c к компьютеру. Требуется управление с компьютера, то есть устройство будет в режиме...

После установки драйвера smbus на ga-h55m-s2 компьютер не перезагружается
Материнская плата ga-h55m-s2 gigabyte устанавливаю драйвер на smbus, после чего нажимаю перезагрузить компьютер, монитор гаснет и все,...

Драйвера для PCI-устройство Intel 82801GB ICH7 - SMBus Controller
PCI-устройство Intel 82801GB ICH7 - SMBus Controller (SM контроллер шины) PCI-устройство ITE IT8212 ATA RAID Controller (контроллер...

Как прочитать данные по SMBus c адреса 0x50 через winring0.sys
Возникла необходимость работать с внутренней шиной SMBus компьютера или ноутбука не могу найти примеры использования на VB .NET нашел...

Python Библиотека smbus вылетает ошибка OSError: [Errno 121] Remote I/O error
Добрый день делаю проект на Raspberry pi 3 где распбери пи связывается с ардуино, а та уже управляет модулями При запуске программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru