| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| STEVAL-MKI218V1 + Nucleo F401RE I2C комуникация http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=18921 |
Страница 1 от 1 |
| Автор: | ig_ivanov [ Сря Авг 09, 2023 11:08 pm ] |
| Заглавие: | Re: STEVAL-MKI218V1 + Nucleo F401RE I2C комуникация |
Аз не разбирам много от такива сензори, ама все пак: Pull-up резисторите (на SCL, SDA и CS), дето са вградени, ми се струват много мижави. Според мен е добре да се сложат външни. Нивото на CS определя режима на работа- SPI или I2C. За второто трябва да има твърдо високо ниво. Има два варианта на адреси, които чипа чака- 0x30/0x31 и 0x32/0x33. На снимката не се вижда кое е отбелязано. Не е ясно какво прави библиотеката за връзка с чипа- дали преди предаване измества с един бит адреса и после добавя бита за четене/запис или на самия адрес просто го добавя/изчиства този бит без да мести нещо. |
|
| Автор: | Stoimen [ Чет Авг 10, 2023 12:19 am ] |
| Заглавие: | Re: STEVAL-MKI218V1 + Nucleo F401RE I2C комуникация |
Според DS-та, в тази конфигурация адресът трябва да е 0x32 (или 0b00110010 ). Това според page 3/Table 1 и page 25/Table 15. едит HAL_I2C_Master_Transmit не шифтва адреса и затова трябва и се подаде 0x32 а не 0x19. едит 2 Така го виждам в момента. Не съм ползвал този сензор, нито HAL-а на ST. |
|
| Автор: | syscop [ Чет Авг 10, 2023 9:14 am ] | |||||||||
| Заглавие: | Re: STEVAL-MKI218V1 + Nucleo F401RE I2C комуникация | |||||||||
Провери
няма ли да стане? За четенето по същия начин. |
||||||||||
| Автор: | VPavlov [ Чет Авг 10, 2023 5:26 pm ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Заглавие: | Re: STEVAL-MKI218V1 + Nucleo F401RE I2C комуникация | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Много благодаря на всички отзовали се!
Имам един тъп въпрос: 0b означава за компилатора двоично число подобно на 0x или друго? Изглежда проблемът е бил точно в адреса. След като го замених с 0b00110010 буферната ми променлива започна да чете стойности. Последните са малко странни но все пак е в пъти по-добре от нищото, което получавах. Странни са защото визуализира 68, което в двоичен код е 01000100 - стойността по подразбиране на въпросния WHO_AM_I регистър, иначе би трябвало да е тази: 00001111. Това ме навежда на мисълта че може би нещо инициализацията ми куца. Прегледах отново даташеета и установих че стойността за четене е 00110011 (33h), а за писане 00110010 (32h) така ги зададох отделно:
и съответно във функциите:
Сега изглежда че може да чете и пише в регистри. Трябва да черпя! Последен въпрос, какво ползваш, как програмираш? Директно пишеш в регистрите?
За адресите си напълно прав. За резисторите, сигурно пак. Но целта ми сега е да се науча да ги програмирам тия работи. Ако успея да стигна до там че да се опитам да го направя на една платка, ще си припомня твоя съвет! Няма библиотека за връзка. Тоест има, но не я ползвам. Сега се опитвам да се науча да направя такава.
Ами да! Имаше такъв подход в туториалите беше за връзка с труг тип сензор:
Пробвах го и изглежда че работи. Отново благодаря за съветите! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|