STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Модератор: Денис Кашин

Ответить
alex_a
Сообщения: 2
Зарегистрирован: 20 окт 2021, 11:05

STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение alex_a »

Требуется считывание датчика ЛИР-ДА158А.03 используя микроконтроллер серии STM32F4.
Возможна ли работа с протоколом BiSS или SSI посредством штатных периферийных модулей микроконтроллеров STM32F4?
(уровни сигналов сконвертированы MAX490)

Или требуется специализированная ИМС BiSS <-> SPI ?
Если возможен непосредственный прием, какой протокол предпочителен BiSS или SSI?
Существуют ли принципиальные ограничения при работе с BiSS или SSI?
Денис Кашин
СКБИС
СКБИС
Сообщения: 460
Зарегистрирован: 13 фев 2008, 14:38
Контактная информация:

Re: STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение Денис Кашин »

Здравствуйте,
Возможна ли работа с протоколом BiSS или SSI посредством штатных периферийных модулей микроконтроллеров STM32F4?
Да, на похожем микроконтроллере мы реализовывали master для таких протоколов.
уровни сигналов сконвертированы MAX490
Замечу, что выходной сигнал на микроконтроллер должен поступать уровнем не более 3.3В
Или требуется специализированная ИМС BiSS <-> SPI
Мы сделали такой модуль для установки на плату, называется ЛИР-919П. Сейчас возможен выпуск опытной партии.
Паспорт
паспорт ЛИР919П.pdf
(981.08 КБ) 375 скачиваний
какой протокол предпочителен BiSS или SSI
SSI считается устаревшим протоколом, для новых устройств предпочтителен BiSS-C
Существуют ли принципиальные ограничения при работе с BiSS или SSI
Это синхронные протоколы, необходимо соблюдать границы периода тактовых импульсов, чтобы не произошёл тайм-аут
Особенностью BiSS является иной способ определения готовности данных (событие ACK) и возможность регистрового обмена, что обеспечивает расширенный информационный обмен с датчиками.
Mitya1698
Сообщения: 7
Зарегистрирован: 07 июл 2009, 09:36

Re: STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение Mitya1698 »

SSI на STM читается примерно так:

//======================================================================================
uint32_t gray2bin(uint32_t v, uint8_t bits)
//======================================================================================
{
for(unsigned i = 1; i < bits; i <<= 1) v ^= (v >> i);
return v;
}

//======================================================================================
uint32_t read_ABS_LIR (uint16_t clkpin, GPIO_TypeDef* clkport, uint16_t datapin, GPIO_TypeDef* dataport, uint8_t bits, uint8_t isgray)
//======================================================================================
{
uint32_t data = 0;

if ((GPIO_ReadInputData(dataport) & datapin) > 0)
{
GPIO_WriteBit (clkport, clkpin, Bit_RESET); // clk = 0;
for (int i = 0; i<2; i++);
GPIO_WriteBit (clkport, clkpin, Bit_SET); // clk = 1; // g new data

for (int val = bits; val > 0; val--)
{
GPIO_WriteBit (clkport, clkpin, Bit_RESET); // clk
data = (data << 1) | ((GPIO_ReadInputData(dataport) & datapin) > 0x00);
GPIO_WriteBit (clkport, clkpin, Bit_SET); // clk
}
if (isgray > 0) data = gray2bin(data, bits);
return data;
} else
return 0xFFFFFFFF;
}
AlexMad
Сообщения: 1
Зарегистрирован: 12 окт 2022, 20:04

Re: STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение AlexMad »

Добрый день!
А есть пример кода для BiSS ?!
Владимир Чухляев
СКБИС
СКБИС
Сообщения: 31
Зарегистрирован: 19 июл 2022, 09:35

Re: STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение Владимир Чухляев »

Здравствуйте, AlexMad

Как писал ранее Денис, наша организация не предоставляет код подобного рода, т.к.:
- как любая коммерческая организация мы заинтересованы в продаже своей продукции. Кроме этого, мы гарантирует надежную работу своих изделий, ведь неправильное считывание позиции может привести как к порче нашей продукции (преобразователей), станка/стенда, так и обрабатываемой на станке заготовки, которая в некоторых случаях, может превышать стоимость станка ;
- нельзя предоставить код, который работал бы на любом микроконтроллере из-за разницы библиотек периферии, предоставляемых производителями. Да даже у одного производителя аналогичные функции на разные семейства МК могут иметь разные названия или поведение работы;
- кроме кода опроса преобразователя МК явно выполняет какой-то дополнительный функционал (иначе бы это не имело смысла). Соответственно, гарантировать работу своего кода мы бы не могли. К примеру, если взять код Mitya1698, который работоспособен, и предположить, что во время его выполнения произойдет вызов прерывания, то получится плавающая проблема с проскакивающими сбойными позициями. Получение позиции по SSI / BiSS протоколу является весьма простой задачей, не составляющей каких либо проблем для реализации и требующая углубленных знаний программирования. Поэтому, в большинстве случаев, поиск кода такого рода осуществляется с целью копипасты в проект без даже поверхностного изучения протокола. После чего, при возникновении проблем, последовало бы обращение к нам за консультацией - почему наш код не работает. Осуществление консультаций привело бы к большим временным затратам с нашей стороны.
- кроме "программной" части, так же есть еще и аппаратная. То, что работает в условиях стола, не всегда будет работать при установке в шкаф/на станок. Неверное выполнение уравнивания потенциалов, подключение заземления и средств защиты от помех может также привести к выводу устройств из строя.

Однако, мы никаким образом не препятствуем самостоятельной реализации пользователями мастера для опроса наших преобразователей. Информация по протоколу SSI есть в каталоге на нашем сайте. Информацию по протоколу BiSS можно найти на сайте iC-Haus.
Для получения позиции по BiSS без работы с регистрами EDS в код Mitya1698 необходимо добавить функцию подающую START и ожидающую ACK от преобразователя. Также настоятельно рекомендуется производить проверку CRC. Алгоритм расчета CRC есть в апноте к протоколу на сайте iC-Haus.
Mitya1698
Сообщения: 7
Зарегистрирован: 07 июл 2009, 09:36

Re: STM32 + MAX490 + ЛИР-ДА158А.03 BiSS/SSI

Сообщение Mitya1698 »

Спасибо за разбор, у меня во время выполнения прерывания не возникают, процессор мало нагружен.
Ответить