Top.Mail.Ru
Уведомления
Очистить все

[Закреплено] STM32 для начинающих

Страница 5 / 18
Aveal
(@aveal)
Top level Admin

@aleksej-6 на всякий случай просто ) подтягивающие резисторы же есть?

ОтветитьЦитата
Создатель темы Размещено : 14.11.2022 13:23
(@aleksej-6)
Level 3

Техника в руках дикаря (я про себя)...

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

Не правильно трактовал "происходящее", думал виснет на записи )

 

Спасибо за подсказки !

 

Да, резисторы установлены.

ОтветитьЦитата
Размещено : 14.11.2022 13:27
(@aleksej-6)
Level 3

Ещё бы разобраться как по "простому" записывать число формата float в eeprom, в примерах запись через указатели (а что это такое и как "его" записывать), эх )  

ОтветитьЦитата
Размещено : 14.11.2022 14:53
(@eduard)
Level 5 Moderator

@aleksej-6 Без указателя сложно.

Можно попробовать таким образом.

1 - Узнать длину переменной в байтах.

2 - Наложить маску 0xFF на младший байт.

3 - Передать получившуюся переменную.

4 - float переменную сдвинуть вправо на 8 бит.

5 - Повторить с пункта 2 столько раз, какова длина переменной float.

От: @aleksej-6

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

Нужно ставить не задержку, а мониторить флаг окончания передачи.

ОтветитьЦитата
Размещено : 14.11.2022 18:30
Aveal
(@aveal)
Top level Admin
От: @aleksej-6

Ещё бы разобраться как по "простому" записывать число формата float в eeprom, в примерах запись через указатели (а что это такое и как "его" записывать), эх )  

@aleksej-6 да на самом деле проще сразу оптимально сделать и забыть )

ОтветитьЦитата
Создатель темы Размещено : 14.11.2022 19:31
(@eduard)
Level 5 Moderator

@aveal

👍 

ОтветитьЦитата
Размещено : 14.11.2022 19:58
Aveal
(@aveal)
Top level Admin

Сообщение Алексея удалилось, восстанавливаю )

Доброго времени !

" да на самом деле проще сразу оптимально сделать и забыть ) " - лучше разобраться будет )

 

 

"BTF (Byte transfer finished) — флаг устанавливается по окончании приема/передачи байта, работает только при NOSTRETCH равном нулю."

По идее, вот его "BTF" и надо отслеживать - окончание передачи ? Если так, у меня в цикле идёт проверка:

I2C2->DR = data_f;
while(!(I2C2->SR1 & I2C_SR1_BTF)){LED_ON();}; // wait BTF bit

I2C2->CR1 |= I2C_CR1_STOP;

Если сразу за записью вызываю чтение - происходит зависание ..

ОтветитьЦитата
Создатель темы Размещено : 15.11.2022 16:01
Aveal
(@aveal)
Top level Admin

" да на самом деле проще сразу оптимально сделать и забыть ) " - лучше разобраться будет )

Ну да, я и имел ввиду - сразу разобраться и сделать правильно )

Можно в HAL посмотреть в коде, как официалы флаги обрабатывают, потом уже сравнить.

 

ОтветитьЦитата
Создатель темы Размещено : 15.11.2022 16:04
(@aleksej-6)
Level 3

"Можно в HAL посмотреть в коде, как официалы флаги обрабатывают, потом уже сравнить."  - Пока поставил задержку в 5 мс, потом ещё поразбираюсь.

 

Это из разряда: интересно но непонятно ) 

Главное работает (запись и чтение числа типа float, по одному байту)  Из интернета.

 

void I2C_Write_eeprom (float data_ff)
{
float test; 

float f1 = data_ff;  
char *p,*pee ;
p = (char*) & f1; // указатель на флоат который надо сохранить в память
pee = (char*) & test; //указатель на восстановленный из еепром флоат

сохраняем[0] = p[0];
сохраняем[1] = p[1];
сохраняем[2] = p[2];
сохраняем[3] = p[3];
}

 

void I2C_Read_eeprom (void)

{
float f1; // 3.14;
char *p,*pee;
p = (char*) & f1; // указатель на флоат который надо сохранить в память
pee = (char*) & test; //указатель на восстановленный из еепром флоат

//тут восстанавливаем число флоат после считывания из еепром
pee[0] = читаем[0];
pee[1] = читаем[1];
pee[2] = читаем[2];
pee[3] = читаем[3];

// test = 3.14; - выводим переменную test 

}

Пробовал возвращать прочитанную переменную ( return test ) - не выходит, видно "на это" есть причины)

(пока нет времени во этом разобраться)

ОтветитьЦитата
Размещено : 17.11.2022 12:48
(@jailer)
New member

Здравствуйте, являюсь новичком в микроконтроллерах STM, возник вопрос: "Чем обусловлена разница цен в разных магазинах, оригинальностью или чем иным, например временем поставки (до событий нынешнего года)?"

https://amperka.ru/product/stm32-nucleo-f401re

https://www.chipdip.ru/product/nucleo-f401re

ОтветитьЦитата
Размещено : 24.11.2022 07:44
Aveal
(@aveal)
Top level Admin

@jailer Добрый день, может время поставки отличаться, иногда некоторые позиции недоступны для заказа в качестве физ. лица. Но в данном случае просто банально размер магазина диктует ценовую политику. На aliexpress эта плата будет стоить в районе 1800, в России, в интернет-магазинах - 2500, в крупных (в данном случае чип и дип) - 5600. Чип и дип в принципе славится тем, что там наценка космическая, так было всегда, сколько я себя помню. Цена может не просто в разы быть выше, а на 1-2 порядка, абсолютно спокойно.

ОтветитьЦитата
Создатель темы Размещено : 24.11.2022 11:19
(@jailer)
New member

@aveal Спасибо большое за ответ

ОтветитьЦитата
Размещено : 24.11.2022 15:26
(@aleksej-6)
Level 3

Доброго времени !

Всё со своими вопросами.. Решил опробовать запись и воспроизведения звука на stm серии H7 (чтоб с запасом )). Для сжатия пакетов данных (звука) для хранения и передачи решил использовать библиотеку - STM32F10xxx Speex library. Думал "бац и готова", даже установить не могу (не то что запустить). Нашёл статью где эту библиотеку портировали на stmF4 серию, но пока и с "теми" подсказками не получается разобраться (например, что такое - "Изменить функцию выделения памяти" ... ).     

Может кто занимался этой библиотекой и что ни будь подскажет ?

ОтветитьЦитата
Размещено : 08.04.2023 02:00
Aveal
(@aveal)
Top level Admin

Я так думаю, она еще на SPL базируется, судя по дате ее написания. Так что с этим еще надо будет разобраться как минимум.

ОтветитьЦитата
Создатель темы Размещено : 08.04.2023 12:27
(@aleksej-6)
Level 3

Я думал что у библиотек есть входные и выходные переменные, а что бы библиотека была привязана к аппаратной части контроллера ... Эх 

 

 

ОтветитьЦитата
Размещено : 08.04.2023 13:56
Страница 5 / 18
Поделиться: