Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 17.06.2024, 11:26  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию DS2411 не совпадает CRC

Здравствуйте.
Есть STM32 и DS2411.
Библиотеку для OneWire нашел в интернете. Вроде бы все стабильно работает. Код читается, но почему то CRC сходится очень редко.

Для проверки использую вот такую функцию:
Код:
uint8_t calculateCRC(uint8_t *data, uint8_t len) {
	const uint8_t polynomial = 0x31; // Полином: X^8 + X^5 + X^4 + 1
	uint8_t crc = 0x00;

	for (size_t i = 0; i ‹ len; ++i) {
		crc ^= data[i];

		for (uint8_t bit = 0; bit ‹ 8; ++bit) {
			if (crc & 0x01) {
				crc = (crc ›› 1) ^ polynomial;
			} else {
				crc ››= 1;
			}
		}
	}
	return crc;
}
Вот например считывает такой код:
01:C7:E7C:1E:00:00:01 но мое значение суммы равно 0x3e

Подскажите чего не так? Может функция проверки не правильная или порядок байт?
Спасибо.
Реклама:
worldmasters вне форума  
Непрочитано 17.06.2024, 12:17  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,368
Сказал спасибо: 85
Сказали Спасибо 626 раз(а) в 378 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: DS2411 не совпадает CRC

А так:

Код:
unsigned crc8maximdow(unsigned char *data, size_t len) {
    unsigned crc = 0;
    for (size_t i = 0; i ‹ len; i++) {
        crc ^= data[i];
        for (unsigned k = 0; k ‹ 8; k++)
            crc = crc & 1 ? (crc ›› 1) ^ 0x8c : crc ›› 1;
    }
    return crc;
}
pambaru вне форума  
Эти 2 пользователя(ей) сказали Спасибо pambaru за это сообщение:
worldmasters (17.06.2024), индюк (17.06.2024)
Непрочитано 17.06.2024, 12:19  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,368
Сказал спасибо: 85
Сказали Спасибо 626 раз(а) в 378 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: DS2411 не совпадает CRC

P.S. Не углублялся, но мне кажется X^8 забыт в вашей версии полинома.
pambaru вне форума  
Непрочитано 17.06.2024, 13:03  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: DS2411 не совпадает CRC

Спасибо. Заработало )
worldmasters вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой копировщик домофонных ключей RECTO Микроконтроллеры, АЦП, память и т.д 7973 04.09.2016 02:46
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
SPI с аппаратным CRC ilya_sh STM8 6 11.06.2015 13:06
Функция для расчета CRC maxNTF Микроконтроллеры, АЦП, память и т.д 3 30.12.2009 10:16
DS1990 и crc sergio-nsk Микроконтроллеры, АЦП, память и т.д 13 12.02.2009 11:09


Часовой пояс GMT +4, время: 01:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot