Перейти к содержанию
    

Посоветуйте доступный согласователь уровней

Нужно согласовать по SPI контроллер STM32 (3.3 вольт) и TLE6240 (5 вольт).

CS, SCK и SO, то есть 3 линий мне хватит. 5-вольтовый ответ от TLE6240 STMка стерпит.

Посоветуйте что-нибудь доступное в современных условиях. Желательно в корпусе с шагом 1.27

 

P.S. Я ведь правильно понял, что без согласования это https://www.infineon.com/dgdl/TLE6240GP_V3_1_1.pdf?fileId=db3a304412b407950112b426974b39f1   не будет работать с STM32?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работать будет и без преобразователь уровней.

Для единицы ей достаточно 2В (параметр 5.2.2 Vinh Input High Voltage).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, MementoMori сказал:

Нужно согласовать по SPI контроллер STM32 (3.3 вольт) и TLE6240 (5 вольт).

Если использовать 5V-tolerant выводы STM, то ничего не надо согласовывать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, MementoMori said:

P.S. Я ведь правильно понял, что без согласования это https://www.infineon.com/dgdl/TLE6240GP_V3_1_1.pdf?fileId=db3a304412b407950112b426974b39f1   не будет работать с STM32?

Читайте внимательнее даташиты, по Вашим-же собственным ссылкам 🙂

 

 

tle6240.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работать без согласования уровней - будет. Хотябы уже потому, что у STM32 некоторые пины отмечены как FT - с возможностью прямого подключения к пятивольтовой логике. Ну а у TLE6240 смотрим вот эту табличку и видим, что на входе уровень высокого сигнала попадает в трехвольтовый диапазон выхода СТМ-ки. Поэтому подключение возможно - прямое.

Снимок экрана 2023-06-03 162818.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запоздалое спасибо за советы.

Сделал плату, спаял.... никак микросхема не хочет отзываться на команды от SPI.

Есть такая команда там (страница 23 даташита, ссылка на который в первом посте)

Quote

 HLHL LLLL XXXX XXXX Echo-function of SPI; SI direct connected to SO.

То есть нужно отправить 16 бит - два байта  0xA000 и на SO получим эхо.  У меня эха нет - выход в лог.0.

Схема вот

9hqecUMF.jpg?download=1&name=%D0%A1%D0%B

 

Код вот:

static void MX_SPI1_Init(void)
{
  /* SPI1 parameter configuration*/
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 10;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }


--------------------------------------

HAL_GPIO_WritePin(GLOBAL_RESET_GPIO_Port, GLOBAL_RESET_Pin, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(GLOBAL_RESET_GPIO_Port, GLOBAL_RESET_Pin, GPIO_PIN_SET); // СБРАСЫВАЕМ ДРАЙВЕР

HAL_GPIO_WritePin(TLE_CS_GPIO_Port, TLE_CS_Pin, GPIO_PIN_RESET);  //CS вниз
HAL_Delay(10);

rg=0xA0; // ЗАДАЕМ КОМАНДУ ПЕРЕКЛЮЧЕНИЯ В РЕЖИМ SPI - эха
dt=0x00; // ПО БАРАБАНУ, ЧТО ЗДЕСЬ БУДЕТ

while(1)
{
 
dtt=(uint16_t)rg<<8| dt;	// это чтоб на ходу, через отладчик менять SPI посылку
HAL_SPI_Transmit(&hspi1, (uint8_t*)&dtt, 1, 5000);
HAL_Delay(1);
}	
 

В результате на линии, по которой в контроллер идут данные от драйвера постоянный ноль.

 

Если абстрагироваться от кода, вот осцилллограмма  с SCK линией, вроде все синхронно:

erQ3gpZa.jpg?download=1&name=%D0%A1%D0%B

Питание на микросхеме есть, сигналы проходят (щупал осциллографом на пинах микросхемы).

 

Что не так?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, фаза SPI не та, микросхема считывает по спаду тактового сигнала.

Я бы ещё поставил резисторов между этими ключами и МК чтобы МК не сгорел при сгорании ключей, не доверяю я им 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, vov4ick said:

Похоже, фаза SPI не та, микросхема считывает по спаду тактового сигнала.

Я бы ещё поставил резисторов между этими ключами и МК чтобы МК не сгорел при сгорании ключей, не доверяю я им 🙂

поменял:

Quote

  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;

Получил следующую осциллограмму

vbB6Zx6N.jpg?download=1&name=%D0%A1%D0%B

На SO драйвера все та же тишина.

Проверил так, на всякий случай, не тянет ли эту линию к нулю контроллер или еще что-то - не подтвердилось, при подаче 1 на RESET драйвера SO перешел в высокоомное состояние.

Что-то я не пойму....

Quote

To check the proper function of the serial interface the TLE6240GP provides a “SPI Echo Function”. By entering HLHL as control word, SI and SO are connected during the next CS period. By comparing the bits clocked in with the serial output bits, the proper function of the SPI interface can be verified. This internal loop is only closed once (for one CS period). The “Echo Function” does not cause any internal processing of data and after the next CS signal the SO data is ‘0’ (all registers reset).

Режим эха должен включаться в следующем CS-периоде. То есть, нужно подать команду, передернуть CS и получим эхо. Вместе с тем написано, что CS сбрасывает регистры. Так как получить это эхо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может надо сначала нужный режим "диагностики" включить, а при включении она выдаёт все нули - все ключи выключены. Для записи слова нужно передёрнуть CS, пишут на стр. 21 паспорта и дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, vov4ick said:

Может надо сначала нужный режим "диагностики" включить, а при включении она выдаёт все нули - все ключи выключены. Для записи слова нужно передёрнуть CS, пишут на стр. 21 паспорта и дальше.

Я счел включение эха более прогнозируемым по результату действием.  А режим диагностики включал - тоже нули.

 

Но вот что интересно.

Настроил я SPI на Only master. То есть, перевел SI контроллера в высокоомный режим. И вот что получил

 

hbY5vqZL.jpg?download=1&name=%D0%A1%D0%B

 

Синяя -это SO драйвера. 

Если коснуться пальцем щупа, то оциллограмма прыгает. То есть линия SO в воздухе. Видно что внутри контроллера что-то происходит, какие-то переключения синхронно с клоком, причем возмущения на линии зависят от того, что на входе (1 или 0) но на линию SO они сильно не влияют. Как будто эта линия в высокоомном состоянии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В паспорте пишут что SO в Z-состоянии только когда CS=1. Может, ноги попутаны, питание не идёт или микросхема плохая. Ещё там есть RESET и PRG, тоже можно проверить, мало ли что.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, vov4ick said:

В паспорте пишут что SO в Z-состоянии только когда CS=1. Может, ноги попутаны, питание не идёт или микросхема плохая. Ещё там есть RESET и PRG, тоже можно проверить, мало ли что.

Одну ошибку нашел - у меня на RESET после старта ноль подавался, а надо единицу. Исправил - больше нет висящей в воздухе линии, драйвер держит ее в нуле.

Питание подается, мерял на на ноге микросхемы. 

PRG не имеет отношения к обмену по SPI.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/3/2023 at 5:17 PM, MementoMori said:

Посоветуйте что-нибудь доступное в современных условиях.

2N7002

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Друзья, есть еще идеи?

Ума не приложу, в чем дело. две микросхемы пробовал (предполагая, что первая неисправна) - бестолку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...