@aleksej-6 на всякий случай просто ) подтягивающие резисторы же есть?
Техника в руках дикаря (я про себя)...
У меня в тестовой программе не было задержки между записью и чтением. Установил задержку и проблемы как не бывало .
Не правильно трактовал "происходящее", думал виснет на записи )
Спасибо за подсказки !
Да, резисторы установлены.
Ещё бы разобраться как по "простому" записывать число формата float в eeprom, в примерах запись через указатели (а что это такое и как "его" записывать), эх )
@aleksej-6 Без указателя сложно.
Можно попробовать таким образом.
1 - Узнать длину переменной в байтах.
2 - Наложить маску 0xFF на младший байт.
3 - Передать получившуюся переменную.
4 - float переменную сдвинуть вправо на 8 бит.
5 - Повторить с пункта 2 столько раз, какова длина переменной float.
У меня в тестовой программе не было задержки между записью и чтением.
Нужно ставить не задержку, а мониторить флаг окончания передачи.
Ещё бы разобраться как по "простому" записывать число формата float в eeprom, в примерах запись через указатели (а что это такое и как "его" записывать), эх )
@aleksej-6 да на самом деле проще сразу оптимально сделать и забыть )
Сообщение Алексея удалилось, восстанавливаю )
Доброго времени !
" да на самом деле проще сразу оптимально сделать и забыть ) " - лучше разобраться будет )
"BTF (Byte transfer finished) — флаг устанавливается по окончании приема/передачи байта, работает только при NOSTRETCH равном нулю."
По идее, вот его "BTF" и надо отслеживать - окончание передачи ? Если так, у меня в цикле идёт проверка:
I2C2->DR = data_f;
while(!(I2C2->SR1 & I2C_SR1_BTF)){LED_ON();}; // wait BTF bitI2C2->CR1 |= I2C_CR1_STOP;
Если сразу за записью вызываю чтение - происходит зависание ..
" да на самом деле проще сразу оптимально сделать и забыть ) " - лучше разобраться будет )
Ну да, я и имел ввиду - сразу разобраться и сделать правильно )
Можно в HAL посмотреть в коде, как официалы флаги обрабатывают, потом уже сравнить.
"Можно в 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 ) - не выходит, видно "на это" есть причины)
(пока нет времени во этом разобраться)
Здравствуйте, являюсь новичком в микроконтроллерах STM, возник вопрос: "Чем обусловлена разница цен в разных магазинах, оригинальностью или чем иным, например временем поставки (до событий нынешнего года)?"
@jailer Добрый день, может время поставки отличаться, иногда некоторые позиции недоступны для заказа в качестве физ. лица. Но в данном случае просто банально размер магазина диктует ценовую политику. На aliexpress эта плата будет стоить в районе 1800, в России, в интернет-магазинах - 2500, в крупных (в данном случае чип и дип) - 5600. Чип и дип в принципе славится тем, что там наценка космическая, так было всегда, сколько я себя помню. Цена может не просто в разы быть выше, а на 1-2 порядка, абсолютно спокойно.
Доброго времени !
Всё со своими вопросами.. Решил опробовать запись и воспроизведения звука на stm серии H7 (чтоб с запасом )). Для сжатия пакетов данных (звука) для хранения и передачи решил использовать библиотеку - STM32F10xxx Speex library. Думал "бац и готова", даже установить не могу (не то что запустить). Нашёл статью где эту библиотеку портировали на stmF4 серию, но пока и с "теми" подсказками не получается разобраться (например, что такое - "Изменить функцию выделения памяти" ... ).
Может кто занимался этой библиотекой и что ни будь подскажет ?
Я так думаю, она еще на SPL базируется, судя по дате ее написания. Так что с этим еще надо будет разобраться как минимум.
Я думал что у библиотек есть входные и выходные переменные, а что бы библиотека была привязана к аппаратной части контроллера ... Эх