mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-07 12:33:42 +00:00
7d6b667bba
Signed-off-by: deadprogram <ron@hybridgroup.com>
37 lines
860 B
Go
37 lines
860 B
Go
//go:build stm32l4x5
|
|
|
|
package machine
|
|
|
|
// Peripheral abstraction layer for the stm32l4x5
|
|
|
|
func CPUFrequency() uint32 {
|
|
return 120e6
|
|
}
|
|
|
|
// Internal use: configured speed of the APB1 and APB2 timers, this should be kept
|
|
// in sync with any changes to runtime package which configures the oscillators
|
|
// and clock frequencies
|
|
const APB1_TIM_FREQ = 120e6 // 120MHz
|
|
const APB2_TIM_FREQ = 120e6 // 120MHz
|
|
|
|
//---------- I2C related code
|
|
|
|
// Gets the value for TIMINGR register
|
|
func (i2c *I2C) getFreqRange(br uint32) uint32 {
|
|
// This is a 'magic' value calculated by STM32CubeMX
|
|
// for 120MHz PCLK1.
|
|
// TODO: Do calculations based on PCLK1
|
|
switch br {
|
|
case 10 * KHz:
|
|
return 0x0 // does this even work? zero is weird here.
|
|
case 100 * KHz:
|
|
return 0x307075B1
|
|
case 400 * KHz:
|
|
return 0x00B03FDB
|
|
case 500 * KHz:
|
|
return 0x005017C7
|
|
default:
|
|
return 0
|
|
}
|
|
}
|