101

Re: STM32 CooCox C++

reverse2500 написав:

з власного досвіду, embedded програмування це повний капець, іноді не сходиться те що описано в даташиті, а застосування всі йдуть з іншою маркіровкую чіпа, були такі випадки

Що капєць, то капєць - згоден.

Але ж!!! Той самий сенсор на ESP8266 працює по адресі 0x39, а коли він підключений до STM32 чомусь адреса, чарівним чином в нього вже 0x72 і прекрасно працює. Як тааак??? Два дні в сраку, але ж розібрався.

102

Re: STM32 CooCox C++

Ще й до того ж, все те саме, на STM32F103 не працює, а на STM32F407 працює. Діла... Залишилось розібратись чи саме на цьому екземплярі STM32F103 не працює, чи то такий драйвер HAL на 10х серії не робочий.

103 Востаннє редагувалося ReAl (18.01.2018 13:45:30)

Re: STM32 CooCox C++

taburyak написав:

Але ж!!! Той самий сенсор на ESP8266 працює по адресі 0x39, а коли він підключений до STM32 чомусь адреса, чарівним чином в нього вже 0x72 і прекрасно працює. Як тааак??? Два дні в сраку, але ж розібрався.

0x72 = 2 * 0x39, я попереджав

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");

104

Re: STM32 CooCox C++

ReAl написав:

0x72 = 2 * 0x39, я попереджав

Дик, я думав то стосувалось адреси регістрів у сенсорі, а не адреси самого сенсору.
І чо? Це нормально? Просто використовувати адресу 0x72 і не заморочуватись?

105 Востаннє редагувалося taburyak (18.01.2018 14:38:30)

Re: STM32 CooCox C++

Ага, я мабуть здогадався. Адреса пристроїв складається з 7 бітів. А треба її привести до 8 біт додаючи один розряд шляхом логічного зсуву ліворуч (0x39<<1)? Так?

106

Re: STM32 CooCox C++

Так, це просто питання вибору абстракції. Одні бібліотеки вважають, що адреса пристрою 7-бітова (як воно і по документації від Філіпса), і ця семибітова адреса розміщується у байті там-то, а молодший біт того байту то зовсім і не адреса.
Інші — де факто у них виходить адреса 8-бітова, пристрій займає дві адреси, одну для запису (що треба для більшості пристроїв зробити і перед зчитуванням для вибору початкової адреси чи регістру) з молодшим бітом 0, одну для зчитування з молодшим бітом 1.

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");
Подякували: taburyak, 0xDADA11C72

107

Re: STM32 CooCox C++

ReAl написав:

Інші — де факто у них виходить адреса 8-бітова, пристрій займає дві адреси, одну для запису (що треба для більшості пристроїв зробити і перед зчитуванням для вибору початкової адреси чи регістру) з молодшим бітом 0, одну для зчитування з молодшим бітом 1.

Дякую дуже допоміг.

108

Re: STM32 CooCox C++

taburyak написав:

Ще й до того ж, все те саме, на STM32F103 не працює, а на STM32F407 працює. Діла... Залишилось розібратись чи саме на цьому екземплярі STM32F103 не працює, чи то такий драйвер HAL на 10х серії не робочий.

Розібрався. Саме на платі STM32F103RB Nucleo чогось I2C1 не запустився. I2C2 працює чудово. Може якісь особливості саме плати Nucleo і її сумісності по виводам з Arduino.