
Maksim
17.04.2018
18:43:58
Этот тоже отлично

Kyle
17.04.2018
22:55:20
Как правильно пользоваться I2C слейв в стм? Какая-то фигня, если писать
HAL_I2C_Slave_Receive_DMA(&hi2c1, (uint8_t*)aRxBuffer, 1)
То возвращает HAL_BUSY
Возвращает он это до тех пор пока мастер не постучится, т.е. надо делать так:
while(HAL_I2C_Slave_Receive_DMA(&hi2c1, (uint8_t*)aRxBuffer, 1) != HAL_OK);
Но это херь полная, она подвешивает все приложение мне


Egor
18.04.2018
06:05:35
Как правильно пользоваться I2C слейв в стм? Какая-то фигня, если писать
HAL_I2C_Slave_Receive_DMA(&hi2c1, (uint8_t*)aRxBuffer, 1)
То возвращает HAL_BUSY
Возвращает он это до тех пор пока мастер не постучится, т.е. надо делать так:
while(HAL_I2C_Slave_Receive_DMA(&hi2c1, (uint8_t*)aRxBuffer, 1) != HAL_OK);
Но это херь полная, она подвешивает все приложение мне
Исходя из «HAL_Reference», после назначения приоритета прерываний в DMA, вам нужно дождаться прерывания от DMA. Т.е. Единожды вызывать функцию слэйв_дма и потом ждать прерывание от него. (Страница 221, документ STM32F0_HAL_Reference.pdf)

Google

Юра
18.04.2018
07:49:58
Да, но когда я подключаю я сер к 6ому, то есть задержка в тик, подключаю к 5му, нет задержки, но я кажется понял почему. Тк запись происходит на rising edge импульса, а вывод на следующий rising edge, то при подключении к сер к 6ому логично, что будет задержка, тк 6й выводит с задержкой на 1 такт. Я вот таким образом это понял
Если кому интересно, то я разобрался. Я предположил про отставание вывода верно, но у чипа есть специальный вывод QH’, это вывод непосредственно из хранилища, а не аутпут юнита (который может работать с другим генератором импульсов). QH’ специально предназначен для соединения нескольких регистров в цепь или зацикливания регистра
Вот такой вот результат

Kyle
18.04.2018
08:35:52

Eduard
18.04.2018
09:07:14
Чем можно организовать низкоскоростную проводную линию связи для передачи ? Дано: Передач 200 байт каждые 2-3 секунды ? Простой ногодрыг (NRZ) по экранированной витой паре может серьезно рассматриваться как вариант ?

Dmitry
18.04.2018
09:07:57
485?

kiltum
18.04.2018
09:09:11

Eduard
18.04.2018
09:09:31
30 метров

kiltum
18.04.2018
09:09:50
тогда точно не ногодрыг. RS485. дешево, просто, везде обсосано от и до

Eduard
18.04.2018
09:10:07
Ногодрыг через транзистор на 12V линии нет?

kiltum
18.04.2018
09:10:48
на 30 метрах наловишь всего вокруг. зачем? когда трансиверы стоят как транзистор

Eduard
18.04.2018
09:11:24
Встречал такую вещь как CLUNET на хабре https://habrahabr.ru/post/160469/. Хотел поинтересоваться смыслом подобных затей ?

Maksim
18.04.2018
09:12:47

Eduard
18.04.2018
09:13:15
Очень смешно )

Google

Кирилл
18.04.2018
09:13:53

Eduard
18.04.2018
09:14:29
Я знаю, что можно передеать данные по электросети, но нужны условия, дроссели на вводе и так далее

Maksim
18.04.2018
09:14:47
Микросхема и трансформатор

Admin
ERROR: S client not available

Eduard
18.04.2018
09:15:00
Даже сейчас ее назову.. минутку)

Maksim
18.04.2018
09:16:42
AMIS-49587
или ST7540

Evgeny
18.04.2018
09:17:34
в рф разве не запрещено?

Maksim
18.04.2018
09:17:41

Egor
18.04.2018
09:24:50


Kyle
18.04.2018
09:29:53
Конфиг совершенно обычный, все что я сделал это указал адрес
static void MX_I2C1_Init(void) {
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 400000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_16_9;
hi2c1.Init.OwnAddress1 = 0x20 << 1;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK) {
_Error_Handler(__FILE__, __LINE__);
}
}
Дебажил, да, при HAL_I2C_Slave_Receive_DMA зависает на 10 секунд (время таймаута в конфиге хала) и после выплевывает HAL_BUSY, зависает внутри I2C_WaitOnFlagUntilTimeout


Egor
18.04.2018
09:40:12