| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| STM32 HAL_I2C_IsDeviceReady http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=19116 |
Страница 1 от 2 |
| Автор: | VPavlov [ Пон Фев 12, 2024 9:16 pm ] | |||||||||
| Заглавие: | STM32 HAL_I2C_IsDeviceReady | |||||||||
Здрасти приятели, Отново се опитвам да подкарам I2C с разни Нуклео бордове и за пореден път резултатите са плачевни. Този опит опитвам с HAL, гледам един туториал в който тестват нещата с HAL_I2C_IsDeviceReady. Нещата изглеждат по този начин:
Това нещо не ще да върне HAL_OK. Как ли не го мъчих,сменях адреси , три устройства, две различни платки с контролери, назначавах други пинове, сменях кабели, замервах връзки, така се закучи значи че като че ли изчерпах всичко за което се сещам. Можете ли да помогнете? Благодаря предварително. |
||||||||||
| Автор: | TheWizard [ Пон Фев 12, 2024 9:33 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
а гугъл пита ли ... много постове има за тоз "проблем" |
|
| Автор: | VPavlov [ Пон Фев 12, 2024 10:37 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Може би не достатъчно. Срещнах че нямало устройство на адреса и това ме подтикна да пробвам с други устройства. Утре ще го мъча отново. |
|
| Автор: | syscop [ Пон Фев 12, 2024 11:16 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Параметърът DevAddress на функцията HAL_I2C_IsDeviceReady не съвпада нито с 0b1101000, нито с 0b0011000 |
|
| Автор: | VPavlov [ Вто Фев 13, 2024 10:03 am ] | |||||||||
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady | |||||||||
Здрасти Syscop, какво пропускам? Имам 7 битов адрес + бит за четене или писане. В документацията на HAL дават следното:
Дали имаш предвид предвид че не са шифтнати? Ако е така му давам директно 8 битов адрес. Между другото в туториала беше със шифтване, пробвах и с това. Може би съм объркал нещата със смятането на битове. Ще пробвам отново със шифтване или с калкулатор. Като цяло логиката ми е такава: Ако имам адрес: 1101000, от това подавам 1101000<<1 за четене и (1101000<<1) +1 за писане или директно 1101000 или 1101001. |
||||||||||
| Автор: | syscop [ Вто Фев 13, 2024 10:38 am ] | |||||||||
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady | |||||||||
Пример:
Вероятността да сбъркаш е по-малка. Погледни реда, в който викаш функцията HAL_I2C_IsDeviceReady - параметърът DevAddress е различен от този в коментарите след нея, т.е. имаш три различни числа. Кое е вярното? |
||||||||||
| Автор: | VPavlov [ Вто Фев 13, 2024 10:46 am ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Благодаря, ще го направя както показваш, в действителност внася организираност. Мисля че използваният адрес е различен е защото последно пробвах с трето устройство, което не бях записал в коментарите. Но сега ще се концентрирам само върху MPU-9250/6500. |
|
| Автор: | TheWizard [ Вто Фев 13, 2024 10:54 am ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
за SPI & I2C е добре да имаш осцилоскоп под ръка ... никога не тръгват от ряз та почваш от там ... имаш/нямаш сигнали - объркал пиновете грозни форми - забравил и сгрешил пъл-ъп, предава - не приема, все някой бит/число объркано но винаги се почва с Гугъл |
|
| Автор: | VPavlov [ Вто Фев 13, 2024 11:42 am ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Прав си магьоснико, ама нямам. Ще купя един при първа възможност. Отдавна осъзнах нуждата. Гугъла го ползвам и бота и документация, уж се опитвам да правя нещата както трябва, без да я карам "през просото". Бях поръчал две устройства защото имам лош спомен от дефектно или повредено от мен устройсто. Току що запоих новото и разгеле върна OK. По едно време вчера бях го захранил с 5V, по невнимание, така че може да съм повредил предното кит-че, но определено не работи. |
|
| Автор: | ToHu [ Вто Фев 13, 2024 8:07 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Да за тия интерфейси се иска гледане, ако не скоп някакъв евтин логически анализатор, има много. Много често проблема е в имплементацията, понякога в куцо описание, но резултата е все един и същ, я адреса в различен, я режима, и това са неща които се виждат веднага. |
|
| Автор: | RM [ Съб Фев 17, 2024 8:25 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
примерно за LM75A #define MY_I2C hi2c2 #define LM75_ADDRESS ((0x48 | 0x00) << 1 ) uint8_t reg Първо давам MX_I2C2_Init(); HAL_I2C_Master_Transmit( &MY_I2C, LM75_ADDRESS, ®, 1, 500 ); ////////////// HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, ////////////// uint16_t DevAddress, ////////////// uint8_t *pData, //////////////// uint16_t Size, //////////////// uint32_t Timeout); |
|
| Автор: | RM [ Нед Май 05, 2024 7:37 pm ] |
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady |
Да питам за STM32F103C6T6 Правя си една платка да ми следи едни сигнали. Имам 3 масива uint16_t по 820 елемента. Те съдържат измервания на 3 ADC канала в разстояние на 42mkS по 820 измервания на канал. Трябва да ги пратя през USB на пакети uint8_t 64 байта. В mine.c изпращането на репорта е ОК. Но когато функцията за изпращане на пакета се вика в друга моя функция, нещата се омазват. Усетих се че е от размера на стека. В линкера промених Stack Size от 0x400 на 0x500. И нещата се оправиха. но не ми е много ясно какво стана. Какво означава това съпоставено с дълбочината на стека Или с броя на запомнените Пр. адреси и препълване на стека . 0x400 или 0x500 какво точно променя ??? |
|
| Автор: | MYXATA [ Нед Май 05, 2024 8:19 pm ] | |||||||||
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady | |||||||||
Ми що не направиш един кръговнбуфер. Интам да буташ от една страна данните от ацп , а от друга да четеш и да пращаш по усб? Така няма дастека няма да има нужда да го уголемяваш илибдантинендинамичен.. |
||||||||||
| Автор: | iss [ Нед Май 05, 2024 10:54 pm ] | ||||||||||||||||||
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady | ||||||||||||||||||
Препълване стека може да се получи ако виканите функции използват повечко локални променливи. Например:
Тук ще трябва стек поне 512 + 8 байта. |
|||||||||||||||||||
| Автор: | RM [ Пон Май 06, 2024 2:21 pm ] | |||||||||||||||||||||||||||||||||||||||||||||
| Заглавие: | Re: STM32 HAL_I2C_IsDeviceReady | |||||||||||||||||||||||||||||||||||||||||||||
Тука вече съвсем не ме иска
Промяната на реда 0х400 на 0х500 не промени нещата ... нещо се бях заблудил.
Пуснах симулация на това което искам да следя ... оказа се че е невъзможно според познанията ми. Измерване на нарастване на фронт от 0V до 2.84V с продължителност 1.32 микроСекунди !!! |
||||||||||||||||||||||||||||||||||||||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|