Hello folks.
Ive downloaded the starterware and I am now using that as a base to build up on. However Im trying to understand the starterware code itself as an exercise that my come handy for other boards/devices
Now Ive got the beaglebone (hereafter referred to as the bone).
Moving on with the bootloader code, we start from bl_start() in bl_main.c. From there we move on to configVddOpVoltage(). A part of it involves configuring the clock for the module I2C0.
Inside the function I2C0ModuleClkConfig, the first thing we do is we write to the MODULEMODE field of the CM_PER_L3_CLKCTRL register. Now what I do not understand here is that, this field only comes into picture for the 'idle protocol management'. As per the TRM 'For the idle protocol management on the PRCM moduleside,the behavior of the PRCM module is configuredin the CM_<Powerdomain>_<module>_CLKCTRL[x]MODULEMODE bitfield. Based on the configured behavior,the PRCM module asserts the idle request to the module unconditionally (that is, immediately when the software requests).'.
Now my first question is, how do we know, that the i2C0 module is the slave module? I mean is it because there is already an i2c master on the chip and all other modules are supposed to be slave modules all the time?
And my second question is about the following line in the TRM: 'Slave idle protocol:Clock-management protocol between the PRCM and slavemodules Master
stand by protocol'. What exactly does it mean? The sentence was not really clear here./...perhaps a typo..im not sure..
Keen to hear folks