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

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

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

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

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

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


 
Опции темы
Непрочитано 18.05.2015, 17:17  
ilya_sh
Прописка
 
Регистрация: 09.10.2007
Сообщений: 235
Сказал спасибо: 27
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
ilya_sh на пути к лучшему
По умолчанию SPI с аппаратным CRC

Вопрос: кто-нибудь реализовывал аппаратный CRC в SPI на STM8S?
Интересует именно флаг, который выставляется при несовпадении принятого CRC и подсчитанного.
Могу кинуть код на Си.
А в кратце так: как только закидываю последний байт из массива в буфер TX по прерыванию TXE, то сразу же даю команду CRCNEXT, после маскирую прерывание (сбрасываю флаг TXIE). По идее, приняв столько же байт, сколько и передал, происходит прием CRC и потом его сравнение. Ну и фиг. Флаг CRCERR взводится. Кто знает, в чем засада?
Реклама:
ilya_sh вне форума  
Непрочитано 18.05.2015, 22:20  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

А как приемник узнает по скольки байтам считать crc?
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 19.05.2015, 07:14  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

Сообщение от ilya_sh Посмотреть сообщение
несовпадении принятого CRC и подсчитанного.
А МБЫТЬ в даном случае у вас CRC считается для данных которые ВЫ ПЕРЕДАВАЛИ? что бы CRC вы отправили после последнего переданного байта данных?
Я пока не возился с CRC SPI. Но если бы я писал софтверную реализацию передачи SPI с CRC, то так бы и поступил.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Непрочитано 19.05.2015, 10:09  
ilya_sh
Прописка
 
Регистрация: 09.10.2007
Сообщений: 235
Сказал спасибо: 27
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
ilya_sh на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

Проц в режиме слэйва. Мастер имеет табло, на котором высвечиваются принимаемые и передаваемые данные, включая CRC.
Команда CRCNEXT передается сразу же после загрузки в буфер TX последнего элемента массива. Вычисление CRC для приемника и передатчика прекращается после реальной отправки и приема последних данных. Дело в том, в регистре TXCRCR и RXCRCR находятся правильно посчитанные CRC. Но, после приема CRC от мастера, слэйв должен сравнить этот принятый CRC с RXCRCR. В случае несовпадения выставить бит CRCERR (x-x-x-CRCERR-x-x-x-x).
Вообщем, причина найдена. Итак поясню, что и как на коде.

char tmp;
tmp=SPI-›SR; tmp &=10;
if (tmp) Ошибка CRC;
SPI-›SR &=0xEF; // сбрасываем флаг ошибки
Вот в этом коде ошибка всегда есть

char tmp;
tmp=(uint8_t)(SPI-›SR);
if ((tmp & 0x10)!=0) Ошибка CRC;
SPI-›SR &=0xEF; // сбрасываем флаг ошибки
В этом коде всё работает верно.

Вывод: надо быть внимательным! )
Если кого интересует реализация аппаратного CRC, то выложу код с пояснениями. Кстати, объясню, почему этот режим для моего случая предпочтителен: мне нужно передавать мастеру некие данные, которые изменяются в прерываниях, и может быть так, что при передаче данных, они могут измениться прямо перед записью их в буфер TX, что исключает предварительный расчет CRC. Аппаратный же калькулятор CRC считает его именно по Shift регистру.
ilya_sh вне форума  
Сказали "Спасибо" ilya_sh
selevo (11.06.2015)
Непрочитано 30.05.2015, 18:33  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

Сообщение от ilya_sh Посмотреть сообщение
что исключает предварительный расчет CRC.
а промежуточный буфер даёт такую возможность.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Непрочитано 01.06.2015, 12:56  
ilya_sh
Прописка
 
Регистрация: 09.10.2007
Сообщений: 235
Сказал спасибо: 27
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
ilya_sh на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

Учитывая скромные ресурсы контроллера, буфер отпадает.
ilya_sh вне форума  
Непрочитано 11.06.2015, 13:06  
selevo
Заблокирован
 
Регистрация: 15.04.2010
Адрес: Ижевск
Сообщений: 388
Сказал спасибо: 24
Сказали Спасибо 45 раз(а) в 35 сообщении(ях)
selevo на пути к лучшему
По умолчанию Re: SPI с аппаратным CRC

а можно отдельной функцией библиотекой скинуть сюда исходник ?
https://kazus.ru/forums/showthread.php?t=110853
Думаю людям пригодится.
selevo вне форума  
 

Закладки

Метки
crc, spi, stm8
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Кто-нибудь работал с RF модулями nRF2401A? Easyrider83 Автоматика и аппаратура связи 1481 04.09.2021 23:24
Atmega16 - много переферийных устройств SPI pavned AVR 21 23.01.2013 07:00
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
DS1990 и crc sergio-nsk Микроконтроллеры, АЦП, память и т.д 13 12.02.2009 11:09


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


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