<p style="padding:0 0 0 0; margin:0 0 0 0;">zdravim,</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">mam prosim dotaz... snazim se v online mbedu-keilstudiu zpomalit CLK signal pro I2C1 periferii v STM32G431KB... aby se dala komunikace dobre sledovat pomalym osciloskopem...</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">mbed ma na to funkci .frequency(Hz)   ale ta nefunguje... </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">tak jsem to chtel zkusit "naprimo" pres nastaveni registru, nasel base address pro I2C1 v STM32G431</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">0x4000 5400 - 0x4000 57FF 1 KB I2C1 Section 41.7.12: I2C register map</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">pak jsem si vybral </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">I2C timing register (I2C_TIMINGR) Address offset: 0x10  kde nastavenim Bits 31:28 PRESC[3:0]: Timing prescaler</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">(This field is used to prescale I2CCLK in order to generate the clock period tPRESC used for data setup and hold counters)</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">kde nastavenim 1111 pro vsechny 4 bity bych cekal zpomaleni I2C_CLK...</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">to nezabralo (frekvence stale 250kHz), tak jsem zkusil jeste vypinat-zapinat tu periferii, viz nize.</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"><span style="font-size: 10pt;">#define I2C1_TIMINGR (*((volatile unsigned int*)0x40005410))</span></p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">#define I2C1_CR1 (*((volatile unsigned int*)0x40005400))</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">I2C1_CR1 &= 0xFFFFFFFE;</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">I2C1_TIMINGR |= 0xF0000000;</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">I2C1_CR1 |= 0x01;</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">samozrejme je mozne ze funkce i2c.write toho mbedu si to zase pro jistotu prenastavi, ale uplne bych to necekal...  ok, ne podle cteni registru tam zustane co jsem nastavil...</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">tak jsem zkusil jeste zpomalit SYSCLK ze ktereho je ten I2C1 podle dat v registru ziveny, pomoci RCC_CFGR a MCOPRE[2:0]</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">nastavenych na 100: MCO is divided by 16</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">(In Run mode, the speed of the system clocks (SYSCLK, HCLK, PCLK) can be reduced by programming the prescaler registers)</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">take beze zmeny...</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">netusite prosim nekdo co delam blbe?</p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"><span style="font-size: 10pt;">dik</span></p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"><span style="font-size: 10pt;">v,</span></p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;"> </p>

<p style="padding:0 0 0 0; margin:0 0 0 0;">p.s. diskuzi proc to chci v mbedu bych nerozvijel :-)</p>