stm32 registro trapeni

Vojtěch Petrucha petrucha na volny.cz
Úterý Duben 11 14:01:38 CEST 2023


zdravim,
 
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...
mbed ma na to funkci .frequency(Hz)   ale ta nefunguje... 
 
tak jsem to chtel zkusit "naprimo" pres nastaveni registru, nasel base address pro I2C1 v STM32G431
0x4000 5400 - 0x4000 57FF 1 KB I2C1 Section 41.7.12: I2C register map
 
pak jsem si vybral 
I2C timing register (I2C_TIMINGR) Address offset: 0x10  kde nastavenim Bits 31:28 PRESC[3:0]: Timing prescaler
(This field is used to prescale I2CCLK in order to generate the clock period tPRESC used for data setup and hold counters)
 
kde nastavenim 1111 pro vsechny 4 bity bych cekal zpomaleni I2C_CLK...
to nezabralo (frekvence stale 250kHz), tak jsem zkusil jeste vypinat-zapinat tu periferii, viz nize.
 
#define I2C1_TIMINGR (*((volatile unsigned int*)0x40005410))
#define I2C1_CR1 (*((volatile unsigned int*)0x40005400))
 
I2C1_CR1 &= 0xFFFFFFFE;
I2C1_TIMINGR |= 0xF0000000;
I2C1_CR1 |= 0x01;
 
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...
 
tak jsem zkusil jeste zpomalit SYSCLK ze ktereho je ten I2C1 podle dat v registru ziveny, pomoci RCC_CFGR a MCOPRE[2:0]
nastavenych na 100: MCO is divided by 16
(In Run mode, the speed of the system clocks (SYSCLK, HCLK, PCLK) can be reduced by programming the prescaler registers)
 
take beze zmeny...
 
netusite prosim nekdo co delam blbe?
 
dik
v,
 
 
p.s. diskuzi proc to chci v mbedu bych nerozvijel :-)

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230411/5fe6d9f6/attachment.htm>


Další informace o konferenci Hw-list